You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:40:57