是否可以在总最小二乘回归上计算 R 平方?

机器算法验证 r r平方 德明回归 全最小二乘法
2022-03-30 15:29:57

我在这个归档的 r-help 线程上使用了 Terry T. 提供的 Deming 函数。我正在比较两种方法,所以我的数据如下所示:

y  x     stdy   stdx
1  1.2   0.23   0.67
2  1.8   0.05   0.89
4  7.5   1.13   0.44
... ...  ...   ...

我已经完成了我的戴明回归(也称为“总最小二乘回归”),我得到了一个斜率和截距。我想得到一个相关系数,所以我开始计算我手动输入了公式:R2

R2 <- function(coef,i,x,y,sdty){
    predy    <- (coef*x)+i
    stdyl    <- sum((y-predy)^2)   ### The calculated std like if it was a lm (SSres)
    Reelstdy <- sum(stdy)          ### the real stdy from the data  (SSres real)
    disty    <- sum((y-mean(y))^2) ### SS tot
    R2       <- 1-(stdyl/disty)    ### R2 formula
    R2avecstdyconnu <- 1-(Reelstdy/disty) ### R2 with the known stdy
    return(data.frame(R2, R2avecstdyconnu, stdy, Reelstdy))
}

这个公式有效并给了我输出。

  • 两个哪个更有意义?(我个人认为他们两个都有偏见。) R2
  • 有没有办法从总最小二乘回归中获得相关系数?

戴明回归的输出:

Call:
deming(x = Data$DS, y = Data$DM, xstd = Data$SES, ystd = Data$SEM,     dfbeta = T)

               Coef  se(coef)         z            p
Intercept 0.3874572 0.2249302 3.1004680 2.806415e-10
Slope     1.2546922 0.1140142 0.8450883 4.549709e-02

   Scale= 0.7906686 
> 
2个回答

要详细说明上面 whuber 的答案 - Pearson 会给你你想要的。它使用一种独立于回归模型的方法来确定 y 与 x 的相关性:

ρX,Y=cov(X,Y)σXσY

rgr 包中的 gx.rma 将为您计算最小二乘并计算 Pearson(或者您可以继续使用 Deming 并手动进行)。

require(rgr)
set.seed(3)
x<-rnorm(101,mean=2.3,sd=4.2)
x<-x+seq(0,100) 
set.seed(3)
y<-rnorm(101,mean=4.9,sd=1.9)
y<-y+seq(6,206,length=101)

rma<-gx.rma(x,y)
rma$corr
[1] 0.9922014

所以,你的问题的基本答案是,在做总最小二乘法时,忘记 R-squared 而只使用 Pearson。如果你想要一个介于 0 和 1 之间的结果,你总是可以平方。这将满足你的一切需求。

话虽如此,我会详细说明一下,因为我理解感觉我们应该能够计算 R 平方等价物。

首先,让我们尝试使用 lm 对数据进行正态平方和回归。请注意,它给出了与 Pearson 相同的相关系数(显然,在平方根之后,只担心幅度)。

ols<-lm(y~x)
sqrt(summary(ols)$r.squared)
[1] 0.9922014

这是使用传统的平方和方法从 lm 模型结果计算得出的

R2=1SresStot

因此,如果您使用 lm 给出的模型,(Pearson)-squared 和 R-squared 是等价的。

但是,如果您使用来自总平方和回归的模型,并尝试使用后一个方程,您会得到稍微不同的结果。这很明显,因为正态最小二乘法和总最小二乘法使用不同的最小化函数,因此给模型的梯度和截距略有不同。(请记住,第一个方程仍然会给出与仅查看数据相同的结果。)

这是我挂断电话的地方。如果使用 lm 模型时两个方程给出相同的结果,那么后一个方程肯定有一个等效的公式,但是当使用全最小二乘模型时,它也给出相同的结果?

我使用适当的最小化函数快速尝试了不同的方法(就像这里的海报:正交回归的确定系数),但找不到办法——如果有办法的话。

也许我们都对使用普通最小二乘法时 Pearson 和 R-squared 给出相同结果的事实感到困惑——而且根本没有办法对总最小二乘法进行 R-squared,这将给出相同的结果作为皮尔逊。但我对此知之甚少,无法说出为什么不。

使用包“mcr”

并使用函数生成您的戴明回归模型

yourmodel<-mcreg(x, y, ...) # you need to be familiar with the various types of deming constant SD or CV%. these can give very different results. But that's different question.

并使用该函数生成绘图

MCResult.plot(your model)

这会在模型图上显示 Pearson 的生产矩相关性,它会告诉您两个 x,y 变量之间线性关系的强度和方向,但不会给出解释的变化比例。

希望有帮助。