R线性回归残差赋值行数不匹配及残差散点图x轴设置问题
问题1:残差赋值提示行数不一致的解决方法
- 报错原因:
lm()函数运行时会自动剔除回归变量(intp.trust、age)中包含缺失值的行,因此生成的残差长度小于原始数据框Scountry的行数,赋值时就会出现长度不匹配的错误。 - 解决步骤:
- 先手动剔除回归用到的核心变量的缺失值,得到干净的分析数据集:
# 保留回归用到的三个变量都无缺失的行 Scountry_clean <- na.omit(Scountry[, c("intp.trust", "age", "gender")])- 基于清洗后的数据集重新拟合线性回归:
lm.intp <- lm(intp.trust~age, data=Scountry_clean)- 此时残差长度和清洗后数据集行数完全匹配,可以直接赋值:
Scountry_clean$res <- lm.intp$residuals
问题2:ggplot散点图x参数的填写方法
不需要提前新增观测ID列,直接用观测的行序号作为x轴即可,对应aes()中x参数填写seq_along(res),或者直接填行号序列1:nrow(Scountry_clean)都可以,最终绘图代码如下:
ggplot(Scountry_clean, aes(x = seq_along(res), y = res, color = as.factor(gender))) + geom_point() + labs(x = "观测序号", y = "回归残差", color = "性别") # 可按需调整坐标轴标签
如果希望x轴对应原始数据的行号,也可以写成x = as.integer(rownames(Scountry_clean))。
内容的提问来源于stack exchange,提问作者Xingchen LIU
相关产品推荐
相关产品推荐

