R语言绘制线性回归拟合线如何将阶梯线改为直线
问题成因
预测线呈阶梯形态是两个基础操作问题导致的:
- 预测数据集
plotting.data2里,同一分组(即映射给color的MyOtherIndependentVariable同一取值)下的MyXvariable未按从小到大排序,若MyXvariable本身被存储为因子/字符型而非连续数值型,连线时会出现折返,形成阶梯效果 - 手动计算预测值时,
MyXvariable的取值点过于稀疏、未覆盖x轴全范围,连线时会出现分段折角,视觉上类似阶梯
解决方法
两种方法都只需要简单修改代码,不需要安装额外扩展包:
方法1:保留提前计算好的预测值,排序后再绘图
先把预测数据集按分组、x变量排序,再运行原有绘图代码即可:
# 第一步:确认x变量是连续数值类型,若输出不是"numeric"/"integer"就执行类型转换 class(plotting.data2$MyXvariable) plotting.data2$MyXvariable <- as.numeric(as.character(plotting.data2$MyXvariable)) # 第二步:按分组、x变量升序排序预测数据集 plotting.data2 <- plotting.data2[order(plotting.data2$MyOtherIndependentVariable, plotting.data2$MyXvariable), ] # 第三步:运行原有绘图代码即可得到平滑直线 MyDataSet.plot <- MyDataSet.plot + geom_line(data=plotting.data2, aes(x=MyXvariable, y=predicted.y, color=MyOtherIndependentVariable), size=1.25) MyDataSet.plot
方法2:跳过手动计算预测值步骤,直接自动生成分组回归线
不需要提前构造plotting.data2和计算predicted.y,直接在原始散点图图层上加geom_smooth()即可自动按分组拟合线性回归直线,不会出现阶梯问题:
MyDataSet.plot <- MyDataSet.plot + geom_smooth(aes(x=MyXvariable, y=你数据集里的原始因变量列名, color=MyOtherIndependentVariable), method = "lm", # 指定拟合线性模型 se = FALSE, # 关闭默认的置信区间阴影带 size=1.25) # 和原有设置的线宽保持一致 MyDataSet.plot
内容的提问来源于stack exchange,提问作者Caticopter1
相关产品推荐
相关产品推荐

