ggplot2为何能从lm对象中识别.resid与.fitted并完成绘图?
解答
这是因为ggplot2在接收lm这类模型对象时,会自动调用ggplot2::fortify()函数,帮你把模型对象转换成包含统计量的数据框:
.fitted对应原模型的fitted.values属性,也就是拟合值;.resid对应原模型的residuals属性,也就是残差。
你直接查看mod$.resid和`mod$`.fitted得到NULL,是因为原lm对象里并没有这两个带点前缀的属性——它们是fortify()处理后生成的标准化列名,专门适配ggplot2的语法。
你可以直接运行fortify(mod)查看转换后的数据框,里面会明确包含.fitted、.resid以及其他模型相关列,这就是ggplot2绘图时实际使用的数据来源。
简单来说,ggplot2后台帮你完成了类似broom::augment()的模型转换工作,所以不用手动处理也能直接绘图。
内容的提问来源于stack exchange,提问作者jtr13
相关产品推荐
相关产品推荐

