统计学常用评估指标R方,它从不衡量模型与真实世界的拟合程度
本文核心观点翻译自 John Myles White 的文章 Why I’m Not a Fan of R-Squared
Take Home Message
$R^2$ 不只是模型误差的函数,它的定义中还隐含了两个模型的比较:一个是当前被分析的模型,一个是所谓的常数模型(即只利用因变量均值进行预测的模型)。基于此,$R^2$ 回答的是这样一个问题:
“我的模型是否比一个常数模型更好?”
然而,我们通常想要回答的是另一个完全不同的问题:
“我的模型是否比真实的模型更差?”
通过一些人为构造的例子我们可以很容易发现,对这两个问题的回答是不可互换的。我们可以构造一个这样的例子,其中我们的模型并不比常数模型好多少,但同时它也并不比真实的模型差多少。同样,我们也可以构造出另一个例子,使得我们的模型远比常数模型要好,但也远比真实模型要差。
与所有的模型比较方法一样,$R^2$ 不单是被比较模型的函数,它也是观测数据的函数。几乎对于所有的模型,都存在一个数据集,使得常数模型与真实模型之间是无法区分开的。具体来说,当使用一个模型区分效能很低的数据集时,$R^2$ 可以任意地向零趋近——即使我们对真实模型计算 $R^2$ 也是如此。
因此,我们必须始终记住:
$R^2$ 并不能告诉我们模型是否是对真实模型的一个良好近似,$R^2$ 只告诉我们,我们的模型在当前的数据下是否远比一个常数模型要好。
一个理论示例
为了理解“将模型与常数模型比较”如何导致与“将模型与真实模型比较”截然不同的结论,让我们考虑一个简单的例子:我们想要对函数 $f(x)$ 进行建模,我们在 $n$ 个等间距点上观察到了带有噪声的数据。
首先,假设:
- $f(x) = \log(x)$。
- $x_{min} = 0.99$。
- $x_{max} = 1.01$。
- 在 $x_{min}$ 和 $x_{max}$ 之间均匀分布的 1,000 个点上,我们观察到 $y_i = f(x_i) + \epsilon_i$,其中 $\epsilon_i \sim \mathbf{N}(0, \sigma^2)$。
基于这些数据,我们尝试使用单变量 OLS 回归来学习 $f(x)$ 的模型。我们将拟合一个线性模型和一个二次模型。该建模过程的一个示例如下所示:

在这个图中,我们可以看到 $f(x)$ 可以很好地被一条直线近似,因此我们的线性模型和二次回归模型都非常接近地还原了真实模型。这是因为 $x_{min}$ 和 $x_{max}$ 非常接近,在这一区域内,我们的目标函数可以很好地被线性近似,尤其是考虑到观测值的噪声水平。
如果我们计算这些模型的 $R^2$,我们会发现线性模型的 $R^2 = 0.007$,真实模型的 $R^2 = 0.006$。这是一个非常低的值,暗示我们的模型并不比常数模型好多少,尽管在这个局部范围内它已经是最好的线性近似。
$R^2$很低的原因是,常数模型在此时就是很好的模型,由于方差本身较大,模型很难拟合这样的噪声。
现在,如果 $x_{max}$ 和 $x_{min}$ 之间的差距变大,会发生什么?对于像 $f(x) = \log(x)$ 这样的单调函数, $R^2$ 会发生非常奇怪的变化。
让我们再看一个具体的例子,其中 $x_{min} = 1$ 且 $x_{max} = 1000$:

在这种情况下,通过视觉检查可以清楚地看到,线性模型和二次模型都存在系统性的不准确(因为对数函数显然不是线性的),但它们的 $R^2$ 值却大幅上升了:线性模型的 $R^2 = 0.760$,真实模型的 $R^2 = 0.997$。
这些例子表明,即使大多数人都会同意线性模型正在变成对真实模型的越来越糟糕的近似(即系统性偏差越来越大),线性模型的 $R^2$ 却可以大幅增加。这有力的说明了,$R^2$ 可能会产生误导。
结论
这些内容并不是让用户停止使用 $R^2$,但使用的前提是充分理解:
- $R^2$ 的值在很大程度上取决于所使用的数据集;
- 即使你的模型正在成为对真实模型越来越好的近似,$R^2$ 的值也可能会下降(反之亦然)。
在决定一个模型是否有用时,高的 $R^2$ 可能是不可取的,而低的 $R^2$ 可能是可取的。
这是一个无法回避的问题:一个错误(misspecified)的模型是否有用,总是取决于该模型应用的领域以及我们在该领域评估所有可能误差的方式。因为 $R^2$ 包含了一个隐含的模型比较,它就受制于这种对数据集的普遍依赖性。
相比之下,像 MSE(均方误差)和 MAD(平均绝对偏差)这样的拟合度指标,其“缺陷”也是其优势所在。它们缺乏隐式归一化,这意味着它们表面上看起来是完全受领域影响的“任意数字”。这种特性反而迫使分析者正视指标对应用领域的敏感性——相比之下,$R^2$ 中的归一化使数字看起来不那么随意,这反而可能让人忘记模型评估对数据的依赖性,从而导致盲目的认为高R方就一定好。