如何在R语言中为正交回归线添加R平方值?
为Deming(正交)回归线添加R²值的解决方案
嘿,我来帮你搞定这个正交回归线的R²标注问题!首先得明确:正交回归(也就是你用的Deming回归)的R²和普通最小二乘(OLS)的定义不太一样,行业里最常用的方式是用两个变量的皮尔逊相关系数的平方,它能很好反映x和y之间的线性关联程度,刚好匹配正交回归的场景。
下面是整合后的完整代码,每一步都给你标注清楚:
# 加载所需包(别忘了readr,你用了read_csv哦) library(ggplot2) library(MethComp) library(readr) # 读取数据 r <- read_csv("Uni/MSci/Project/DATA/new data sheets/comparisons/for comarison graphs/R Regression/GCdNi.csv") x <- r[1] y <- r[2] # 拟合Deming正交回归模型 # 注意:deming函数需要向量输入,所以用unlist把数据框列转成向量 dem_fit <- deming(x = unlist(x), y = unlist(y)) # 计算R²:用皮尔逊相关系数的平方,保留3位小数更整洁 r_squared <- round(cor(unlist(x), unlist(y))^2, 3) # 绘制散点图+回归线+R²标注 P <- ggplot() + geom_point(aes(x = unlist(x), y = unlist(y))) + # 这里也要用unlist,避免ggplot识别错误 # 添加Deming回归线,用红色突出显示 geom_abline(intercept = dem_fit$coef[1], slope = dem_fit$coef[2], color = "red", linewidth = 1) + scale_size_area() + xlab("Expected") + ylab("Observed") + ggtitle("G - Cd x Ni") + xlim(0, 40) + ylim(0, 40) + # 添加R²标注,位置可以根据你的图调整,这里放在右上角区域 annotate("text", x = 30, y = 5, label = paste("R² =", r_squared), size = 5) # 显示最终图形 print(P)
关键细节补充:
- 为什么用相关系数平方?因为Deming回归是最小化点到直线的垂直距离,而相关系数的平方衡量的是两个变量共享的方差比例,这是最适配这种回归类型的R²度量方式。
- 如果你想要更严谨的统计量,可以参考Deming回归的专业文献,但相关系数平方是简便且通用的选择。
geom_abline的参数来自拟合后的模型结果:dem_fit$coef[1]是截距,dem_fit$coef[2]是斜率。annotate的坐标可以按需调整,比如如果你的数据分布偏左,就把x值改小一点,确保标注不会挡住数据点。
内容的提问来源于stack exchange,提问作者A.Carter
相关产品推荐
相关产品推荐

