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

Posted

技术标签:

【中文标题】如何用 ggplot 绘制 lm() 的残差?【英文标题】:How can I plot the residuals of lm() with ggplot? 【发布时间】:2016-08-12 09:04:06 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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 最新选项是使用broom::tidy()【参考方案2】:

不再推荐使用 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()

【讨论】:

这里不需要或至少不再需要增强功能。以下产生相同的结果。 mod &lt;- lm(y ~ x)ggplot(mod, aes(x = .fitted, y = .resid)) + geom_point()【参考方案3】:

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


示例

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

library(ggfortify)
autoplot(fit)

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于如何用 ggplot 绘制 lm() 的残差?的主要内容,如果未能解决你的问题,请参考以下文章

未绘制 geom_smooth lm 线 - ggplot2

如何用图书馆(地图)和ggplot绘制R中的东非(肯尼亚,乌干达和坦桑尼亚)地图?

ggplot2 热图绘制

在ggplot2中绘制没有交互的线性回归线

如何用origin绘制bode图

如何用networkx绘制社区