我正在尝试使用ggplot2为线性回归模型重现诊断图。我得到的平滑线与使用基本图或ggplot2 :: autoplot获得的平滑线不同。
library(survival)
library(ggplot2)
model <- lm(wt.loss ~ meal.cal, data=lung)
## Fitted vs. residuals using base plot:
plot(model, which=1)
## Fitted vs. residuals using ggplot
model.frame <- fortify(model)
ggplot(model.frame, aes(.fitted, .resid)) + geom_point() + geom_smooth(method="loess", se=FALSE)
平滑线不同,使用ggplot提供的黄土方法,前几个点的影响要大得多。我的问题是:如何使用ggplot2复制通过plot()获得的平滑线?
答案 0 :(得分:0)
您可以使用相同名称的基函数来计算lowess
,该smoothed <- as.data.frame(with(model.frame, lowess(x = .fitted, y = .resid)))
ggplot(model.frame, aes(.fitted, .resid)) +
theme_bw() +
geom_point(shape = 1, size = 2) +
geom_hline(yintercept = 0, linetype = "dotted", col = "grey") +
geom_path(data = smoothed, aes(x = x, y = y), col = "red")
用于在原始诊断图中绘制红线。
{{1}}
和原件: