如何计算样本R平方?

机器算法验证 回归 机器学习 r平方 样本外
2022-02-09 05:05:04

我知道这可能已在其他地方讨论过,但我无法找到明确的答案。我正在尝试使用公式R2=1SSR/SST计算样本外R2的线性回归模型,其中SSR是残差平方和SST是平方的总和。对于训练集,很明显

SST=Σ(yy¯train)2

测试集呢?我应该继续使用吗y¯train对于样本外y, 或使用y¯test反而?

我发现如果我使用y¯test, 所结果的R2有时可能是负面的。这与sklearn的r2_score()功能描述一致,他们使用的地方y¯test(他们的 linear_model 的score()函数也使用它来测试样本)。他们指出“一个始终预测 y 的期望值的常量模型,不考虑输入特征,将获得 0.0 的 R^2 分数。”

然而,在其他地方人们已经使用y¯train就像这里这里(dmi3kno 的第二个回答)。所以我想知道哪个更有意义?任何评论将不胜感激!

2个回答

你是对的。

OSR2残差基于测试数据,但基线仍应是训练数据。话虽如此,您的 SST 是注意SST=Σ(yy¯train)2R2

首先需要说的是,对于预测评估,那么在样本之外,通常的是不够的。之所以如此,是因为通常的是根据残差计算的,即样本数量。R2R2

我们可以定义:R2=1RSS/TSS

RSS = 残差平方和

TSS = 总平方和

这里的主要问题是残差不能很好地代表预测误差,因为在残差中,模型估计和模型预测精度都将使用相同的数据。如果使用残差 (RSS),预测精度会被夸大;可能发生过拟合。正如我们稍后看到的那样,即使是 TSS 也是不够的。然而我们不得不说,过去错误地使用标准进行预测评估是很常见的。R2

样本外 ( ) 保持了通常的想法,但代替 RSS 使用了正在分析的模型的样本外 MSE (MSE_m)。代替 TS​​S 使用了一个基准模型 (MSE_bmk) 的样本外 MSE。R2Roos2R2

Roos2=1MSEm/MSEbmk

之间的一个显着区别R2Roos2

0R21(如果包括常数项)

Roos21

如果,则竞争模型的性能比基准模型更差/相等/更好。如果 ,则竞争模型可以完美地预测(新)数据。Roos2<=>0Roos2=1

在这里我们必须记住,即使对于基准模型,我们也必须考虑样本外的性能。因此,样本外数据的方差低估了MSEbmk

据我所知,这项措施首次提出于: 预测样本外的超额股票收益:有什么能超过历史平均水平吗?- 坎贝尔和汤普森 (2008) - 金融研究回顾其中,bmk 预测是基于预测时给定信息的普遍平均值。