我该如何使用ggplot绘制lm()的残差图?

16

我希望能够得到一个关于 lm() 模型残差的漂亮图形。目前我使用 plot(model$residuals),但我想要更好看的图形。如果我尝试使用 ggplot 绘制,就会收到以下错误信息:

ggplot2 不知道如何处理数字类别的数据

4个回答

31

据Hadley的说法,Fortify已不再推荐使用并可能被弃用。

您可以使用broom包来完成类似(甚至更好)的功能:

library(broom)
y <-rnorm(10)
x <-1:10
mod <- lm(y ~ x)
df <- augment(mod)
ggplot(df, aes(x = .fitted, y = .resid)) + geom_point()

9
这里不需要增加函数,或者至少现在不需要了。以下代码可以产生相同的结果。 mod <- lm(y ~ x)
ggplot(mod, aes(x = .fitted, y = .resid)) + geom_point()
- Dylan S.

17

使用ggfortify::autoplot()绘制回归诊断图的gg版本。请参阅此vignette


示例

fit <- lm(mpg ~ hp, data = mtcars)

library(ggfortify)
autoplot(fit)

enter image description here


4

现在你可以使用CRAN上开发的ggResidpanel包来创建ggplot类型的残差图。 你可以在这里找到简介教程


4

ggplot需要一个数据框(data.frame)。使用fortify可以帮助你创建一个。

y <-rnorm(10)
x <-1:10
mod <- lm(y ~ x)
modf <- fortify(mod)
ggplot(modf, aes(x = .fitted, y = .resid)) + geom_point()

你可以直接传递 mod。 - user20650
最新的选择是使用broom::tidy() - ikashnitsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接