【问题标题】:How to get Adjusted R Square for Linear Regression如何为线性回归获得调整后的 R 平方
【发布时间】:2018-12-04 01:10:18
【问题描述】:

使用 sklearn.metrics 我可以计算 R 平方。如何使用线性回归模型计算调整后的调整 R 平方?

【问题讨论】:

标签: data-science


【解决方案1】:

Scikit-Learn 的线性回归不会返回调整后的 R 平方。但是,根据 R 平方,您可以通过以下公式计算调整后的 R 平方:

其中 p 是预测变量(也称为特征或解释变量)的数量,n 是数据点的数量。因此,如果您的数据位于名为 train 的数据框中,并且您的 r 平方为 r2,则公式为:

adj_r2 = (1 - (1 - r2) * ((train.shape[0] - 1) / 
          (train.shape[0] - train.shape[1] - 1)))

train.shape[0] 是观察数,train.shape[1] 是特征数。

StatsModels 库有一个线性回归方法,可以返回调整后的 R 平方(以及许多其他指标)。 Here is the documentation.

上面的公式来自this Stack Exchange Answer,这就是所谓的Wherry Formula - 1。有许多不同的公式用于计算调整后的 R 平方,但这是 R 中使用的方法。有关调整后的 R 平方方法之间的差异的更多信息,请参阅链接到的答案或论文Estimating R^2 Shrinkage in Regression

【讨论】:

  • 请让我知道我是否可以使用任何 Python 包进行计算,或者我需要手动计算。
  • 是的,我已经修改了答案以包含 StatsModel 库选项。但是,如果您已经从 Scikit-Learn 获得了 r 平方,那么最好看看如何自己计算调整后的 R 平方值,以便了解差异!
  • 不应该把.shape 换成np 吗? n = 观察数,但 shape[1] 是特征数。他们向后看。此外,如果我们已经有r2 ,我们是否需要再次对其进行平方?如果我在这里错了,请告诉我!
  • @MattR 这些行包含观察结果,因此shape[0] 是观察的数量。这些列包含特征,所以shape[1] 是特征的数量。用代码写的方程式应该是正确的。对R^2 进行平方是计算调整后 R 平方的公式的一部分。
  • @willk - 我认为您的帖子在编辑期间发生了一些事情。我再也看不到公式了。而且我无法回滚编辑 - 它以某种方式从所有版本中消失了。
猜你喜欢
  • 2016-12-26
  • 2020-12-14
  • 2018-11-06
  • 2021-12-30
  • 2018-08-20
  • 2014-07-03
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
相关资源
最近更新 更多