如何用 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 <- 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