可以大于 1 吗?R2R2

机器算法验证 回归 r平方
2022-03-02 07:15:07

R2 上的维基百科页面可以取大于 1 的值。我不明白这是怎么可能的。R2

的值可能在 0 到 1 范围之外,用于测量观察值和建模值之间的一致性,并且“建模”值不是通过线性回归获得的,并且取决于使用R的哪个公式. 如果使用上面的第一个公式,则值可以小于零。如果使用第二个表达式,则值可以大于一。R2R2

该引用指的是“第二个表达式”,但我在页面上没有看到第二个表达式。

是否存在可以大于 1 的情况?我正在考虑非线性回归的这个问题,但想得到一个一般性的答案。R2

[对于查看此页面并考虑相反问题的人:是的;可以是负数。当您拟合的模型拟合数据比水平线差时,就会发生这种情况。这通常是由于选择模型或约束时的错误。]R2

2个回答

我找到了答案,所以将发布我的问题的答案。正如 Martijn 指出的那样,使用线性回归,您可以通过两个等效表达式R2

R2=1SSe/SSt=SSm/SSt

对于非线性回归,您无法将残差的平方和与回归的平方和相加来获得总平方和。这个等式根本不正确。所以上面的等式是不对的。这两个表达式计算的两个不同值。R2

唯一有意义且(我认为)普遍使用的方程式是:

R2=1SSe/SSt

它的值永远不会大于 1.0,但是当您拟合错误的模型(或错误的约束)时,它可能为负数,因此(残差平方和)大于(实际与平均 Y 值)。SSeSSt

另一个方程不用于非线性回归:

R2=SSm/SSt

但是如果使用这个方程,它会导致大于 1.0,因为模型对数据的拟合非常差,因此大于当模型的拟合比水平线的拟合差时会发生这种情况,同样的情况会导致 <0 与另一个方程。R2SSmSStR2

底线:并且当所选模型(带有约束,如果有)非常差地拟合数据时,才能大于 1.0 ,比拟合差一条水平线。R2R2

根据定义,,其中两个 SS 项都是平方和,因此是非负的。最大值在处达到,导致R2=1SSe/SStSSe=0R2=1