如果我对 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()
如果我打开 const,我得到 0.22 的 rsquared,关闭它,我得到 0.43。这怎么可能?
最佳答案
在这里查看答案 Statsmodels: Calculate fitted values and R squared
Rsquared 根据模型中是否存在常量而遵循不同的定义。
具有常量的线性模型中的 Rsquared 是标准定义,它使用与仅均值模型的比较作为引用。总平方和被贬低。
没有常量的线性模型中的 Rsquared 与完全没有回归变量的模型相比,或者常量的影响为零。在这种情况下,R 平方计算使用不贬值的总平方和。
由于如果我们添加或删除一个常数,定义就会改变,R 平方可以任意变化。如果我们添加额外的解释变量,实际解释的平方和将始终增加,或者如果新变量没有任何贡献则保持不变,
关于python - 当我使用 python statsmodels 在 OLS 中添加外生变量时,为什么 R-Squared 会减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29664471/