如何在ggscatter中绘制无常数项回归直线并显示对应R²
解决方案
你需要给所有涉及回归计算的图层统一指定无截距的公式y ~ x - 1(等价于y ~ 0 + x),修改后的完整代码如下:
ggscatter( reg_data, x = "PCE.Annual", y = "Annual.Increase", color = "Region", palette = "jco", add = "reg.line", # 给默认添加的回归直线指定无截距公式 add.params = list(formula = y ~ x - 1) ) + facet_wrap(~Region) + # 回归方程标注同步使用无截距公式 stat_regline_equation(formula = y ~ x - 1, label.y = .15) + # R²计算也匹配无截距模型的计算逻辑 stat_cor(aes(label = ..rr.label..), formula = y ~ x - 1, label.y = 0.1)
修改说明
- 原代码中
ggscatter默认添加的回归直线使用带截距的默认公式y~x,通过add.params参数传递无截距公式,即可让绘制的直线拟合无常数项的线性模型 stat_regline_equation和stat_cor必须同步传入相同的无截距公式,才能保证输出的回归方程系数、R²和实际绘制的直线完全匹配,避免出现标注结果和直线不一致的问题- 无截距回归的R²计算逻辑和带截距模型不同,是基于离原点的平方和计算的,结果和带截距模型的R²不一致属于正常情况
内容的提问来源于stack exchange,提问作者Jinane Jouni
相关产品推荐
相关产品推荐

