如何在R中计算回归残差并设置ggplot X轴绘制按性别分组的残差图
残差绘图问题修复与x轴选择指南
首先排查代码错误
你当前的绘图异常首先来自两处变量不匹配问题:
- 你将残差存储到了
intp.trust数据框的residuals列,但绘图时调用的是建模用的S_intp.trust数据集,且y轴映射的列名写为了不存在的residuals7,首先需要修正数据存储逻辑:
# 直接将残差存入建模用的S_intp.trust数据集,避免多数据集混淆 S_intp.trust$residuals7 <- resid(lm.fit7)
分场景x轴选择方案
根据你的分析目的,可选择对应x轴设置:
- 通用残差假设检验场景:x轴设为模型拟合值
这是线性回归残差检验最常用的配置,可用来判断模型是否满足同方差、线性假设,同时可以直观看到不同性别的残差分布是否有系统性差异:
# 提前存入拟合值 S_intp.trust$fitted7 <- fitted(lm.fit7) ggplot(S_intp.trust, aes(x=fitted7, y=residuals7, color=as.factor(v225)))+ geom_point(alpha = 0.6) + geom_hline(yintercept = 0, linetype = "dashed", color = "grey")
- 观察残差随年龄的变化场景:x轴保持
age
如果你需要看不同年龄下的残差差异、以及这种差异的性别分异,保留原x轴设置即可,修正变量后即可正常出图:
ggplot(S_intp.trust, aes(x=age, y=residuals7, color=as.factor(v225)))+ geom_point(alpha = 0.6) + geom_hline(yintercept = 0, linetype = "dashed", color = "grey")
- 直接对比不同性别的残差分布场景:x轴设为性别变量
v225
如果你的核心需求是比较不同性别的残差整体分布,用箱线图比散点图可读性更高:
ggplot(S_intp.trust, aes(x=as.factor(v225), y=residuals7, fill=as.factor(v225)))+ geom_boxplot(width = 0.6) + geom_hline(yintercept = 0, linetype = "dashed", color = "grey")
内容的提问来源于stack exchange,提问作者Qian
相关产品推荐
相关产品推荐

