嫌长不想看:先看自己有没有设置强制截距为0,若实际应用时确实需要强制截距为0,Excel的算法跟Sigmaplot的算法此时不一样,建议使用LINEST函数的结果。
1. 利用Excel计算 R2 的方法
有以下几种方法:
1.1 做散点图添加趋势线
1.2 利用数据栏-数据分析-回归,回归统计中给出 R2 及 adjusted R2 结果
1.3 利用 LINEST 函数,使用时注意选中输出区域,输入公式后,按 Ctrl+Shift+Enter 实现最终输出,示例结果如下图,标黄数据为函数计算出的 R2
Microsoft官网上给出的了附加回归统计值返回的顺序(对照上图)
1.4 利用 RSQ 函数计算 Excel统计函数:RSQ
返回两个数据数组之间的 Pearson Product-Moment 相关系数的平方
输入 RSQ (known_y’s, known_x’s)
RSQ 的 R2 是基于 截距≠0 计算出来的
2. 用其他统计软件互校结果:
无截距时,使用Sigmaplot的散点图 curve fit,report中的R2与excel散点图的R2一致
3. 回归结果不一致
但有时候,当线性回归设置无截距时,1.1 和 1.2,1.3得到的数值不一致,虽然都是根据 (回归平方和/总平方和) 计算出来的,但总平方和的计算不一样了,此时,1.3的算法如下说明。
LINEST 函数的官方文档有这样的说明
回归分析时,Excel 会计算每一点的 y 的估计值和实际值的平方差。 这些平方差之和称为残差平方和 (ssresid)。 然后 Excel 会计算总平方和 (sstotal)。 当参数 const = TRUE 或被省略时,截距b正常计算,总平方和是 y 的实际值和平均值的平方差之和。 当参数 const = FALSE 时,截距b=0,总平方和是 y 的实际值的平方和(不需要从每个 y 值中减去平均值)。 回归平方和 (ssreg) 可通过公式 ssreg = sstotal - ssresid 计算出来。 与平方和总和相比,残差平方和越小,决定系数 r2的值越大,这表示回归分析产生的公式对变量之间的关系的解释度如何。 r2 的值等于 ssreg/sstotal。
这部分内容应该时线性回归比较基础的部分了,就是一个在满足最小二乘时恒成立的公式:
总平方和=回归平方和+残差平方和
证明过程可以参考证明 总偏差平方和 = 回归平方和 + 残差平方和
问题也出在这里,为什么截距为0时,LINEST函数中,总平方和取值为实际值的平方和,而不是实际值减去均值之后的平方和?
当了解到最小二乘法回归得出的intercept和slope的计算方法时,就明白了一部分。
Microsoft官方文档中,说明了
LINEST 函数使用最小二乘法来判定数据的最佳拟合。 当只有一个自变量 x 时,m 和 b 是根据下面的公式计算出的
从这里可以看出,当强制截距为0时,也就意味着此时样本均值为0,那么总平方和的计算中,只取了实际值的平方和,而没有取实际值-样本均值的平方和就是有道理的。
而且,也只有拟合函数满足最小二乘法时,总平方和=回归平方和+残差平方和 才能成立,此时的R square才是有意义的。
当强制截距为0时,这个时候拟合出来的函数其实已经不满足最小二乘法了,也就不满足R square的计算公式,即使算法可以算出一个数值,但这个数值是没有意义的。
统计是一种数据处理手段,在实际处理时,要注意截距和斜率的实际意义,当确实需要强制截距为0时,建议还是使用回归统计中的结果作为参考。
补充说明:
今天发现不止线性拟合,只要是拟合,当人为fix了某个参数的时候,不同软件和不同统计方法得到的 R2 就会出现偏差。