我用一条回归线为我的数据绘制了一个ggplot2
的散点图,我注意到回归线与predict()
的预测值不同.为何会是这样呢?请参见下面的示例:
# Make some data
set.seed(1)
n <- 100
df <- data.frame(x= rnorm(n, 100, 15), group= sample(0:1, n/2, replace= TRUE))
df$y <- df$x*.1 + df$group*2 + rnorm(n)
# Fit data and predict values
mod <- lm(y ~ x + group, df)
df_new <- setNames(data.frame(expand.grid(round(seq(min(df$x), max(df$x), 1), 0),
0:1)),
nm= c("x", "group"))
df_pred <- cbind.data.frame(df_new, pred= predict(mod, df_new))
# Plot data with predicted values and geom_smooth()
library(ggplot2)
ggplot(df, aes(x, y, col= factor(group))) +
geom_point() +
geom_smooth(method= "lm", formula= "y ~ x") +
geom_line(data=df_pred, mapping= aes(x, pred, col= factor(group)))
生成的曲线图为:
人们可以看到,预测的线与geom_smooth
中的线不匹配.为什么?
旁注:有一个类似的question,但在这种情况下,这个人只是把变量搞混了.据我所知,在我的代码中情况并非如此.此外,对于生成的数据,这两行几乎都位于彼此之上,但在我的真实数据(我不能分享)中,不匹配的程度更大.