【发布时间】:2018-12-04 01:10:18
【问题描述】:
使用 sklearn.metrics 我可以计算 R 平方。如何使用线性回归模型计算调整后的调整 R 平方?
【问题讨论】:
标签: data-science
使用 sklearn.metrics 我可以计算 R 平方。如何使用线性回归模型计算调整后的调整 R 平方?
【问题讨论】:
标签: data-science
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
【讨论】:
.shape 换成n 和p 吗? n = 观察数,但 shape[1] 是特征数。他们向后看。此外,如果我们已经有r2 ,我们是否需要再次对其进行平方?如果我在这里错了,请告诉我!
shape[0] 是观察的数量。这些列包含特征,所以shape[1] 是特征的数量。用代码写的方程式应该是正确的。对R^2 进行平方是计算调整后 R 平方的公式的一部分。