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

How can I plot the residuals of lm() with ggplot?

我想要一个关于从 lm() 模型中得到的残差的好图。目前我使用 plot(model$residuals),但我想要更好的东西。如果我尝试使用 ggplot 绘制它,我会收到错误消息:

ggplot2 doesn't know how to deal with data of class numeric

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()

不再推荐使用 Fortify,根据 Hadley 的说法可能会弃用。

您可以使用 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()

使用 ggfortify::autoplot() 作为回归诊断图的 gg 版本。看到这个 vignette.


例子

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

library(ggfortify)
autoplot(fit)

现在您可以使用为在 CRAN 上创建 ggplot 类型残差图而开发的 ggResidpanel 包。您可以找到入门教程 here!