当我使用python statsmodels在OLS中添加外生变量时,为什么R-Squared会减少

时间:2015-04-16 02:45:39

标签: python statsmodels

如果我正确理解OLS模型,那绝不应该这样吗?

trades['const']=1
Y = trades['ret']+trades['comms']
#X = trades[['potential', 'pVal', 'startVal', 'const']]
X = trades[['potential', 'pVal', 'startVal']]

from statsmodels.regression.linear_model import OLS
ols=OLS(Y, X)
res=ols.fit()
res.summary()

如果我打开常数,我得到一个0.22的平方并且关闭它,我得到0.43。怎么可能呢?

1 个答案:

答案 0 :(得分:6)

在此处查看答案Statsmodels: Calculate fitted values and R squared

Rsquared遵循不同的定义,取决于模型中是否存在常量。

带有常数的线性模型中的Rsquared是标准定义,它使用与仅平均模型的比较作为参考。总平方和被贬低。

没有常数的线性模型中的Rsquared与完全没有回归量的模型进行比较,或者常数的效果为零。在这种情况下,R平方计算使用不贬值的总和。

由于如果我们添加或删除常量,定义会发生变化,因此R平方可以采用任何一种方式。如果我们添加额外的解释变量,实际解释的平方和将总是增加,或者如果新变量没有贡献任何东西则保持不变,