[英]Why is Sklearn R-squared different from that of statsmodels when fit_intercept=False?
[英]Why would R-Squared decrease when I add an exogenous variable in OLS using 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。 這怎么可能呢?
請參閱此處的答案Statsmodels:計算擬合值和R平方
Rsquared遵循不同的定義,取決於模型中是否存在常量。
具有常數的線性模型中的Rsquared是標准定義,其使用與僅平均模型的比較作為參考。 總平方和被貶低。
沒有常數的線性模型中的Rsquared與完全沒有回歸量的模型進行比較,或者常數的效果為零。 在這種情況下,R平方計算使用不貶值的總和平方和。
由於如果我們添加或刪除常量,定義會發生變化,因此R平方可以采用任何一種方式。 如果我們添加額外的解釋變量,實際解釋的平方和將總是增加,或者如果新變量沒有貢獻任何東西則保持不變,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.