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

标签 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()

如果我打开 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/

相关文章:

python - 如何使用 IP Cam 代替 USB Web Cam 检测/识别人脸

python - 使用 python 通过我的个人服务器调用网络抓取时出错

Python季节分解Freq参数确定

python - 设置两个数组之间的时间步延迟

python - 如何通过使用 Python 3 修剪前 3 个字母来打印两个列表的重叠值

Python 导入枚举错误

python-2.7 - 在生产中实现梯度提升回归树 - 以数学方式描述学习模型

python - 如何在 Pandas 中生成多个交互项?

Python:简单 OLS super 词典

scipy - 使用 python/scipy/statsmodel 执行协方差分析