如果我正确理解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。怎么可能呢?
答案 0 :(得分:6)
在此处查看答案Statsmodels: Calculate fitted values and R squared
Rsquared遵循不同的定义,取决于模型中是否存在常量。
带有常数的线性模型中的Rsquared是标准定义,它使用与仅平均模型的比较作为参考。总平方和被贬低。
没有常数的线性模型中的Rsquared与完全没有回归量的模型进行比较,或者常数的效果为零。在这种情况下,R平方计算使用不贬值的总和。
由于如果我们添加或删除常量,定义会发生变化,因此R平方可以采用任何一种方式。如果我们添加额外的解释变量,实际解释的平方和将总是增加,或者如果新变量没有贡献任何东西则保持不变,