python statsmodel

时间:2017-02-09 23:24:51

标签: python regression statsmodels

在statsmodel中计算VIF的代码如下:

k_vars = exog.shape[1]
x_i = exog[:, exog_idx]
mask = np.arange(k_vars) != exog_idx
x_noti = exog[:, mask]
r_squared_i = OLS(x_i, x_noti).fit().rsquared   ## NO INTERCEPT
vif = 1. / (1. - r_squared_i)

拟合时,不包括截距。根据Wooldridge的“Introductory Econometrics(6ed)”,似乎应该包括拦截:“......在所有其他自变量(并包括拦截)上回归Xj的R平方。”

statmodel错了吗?还有其他包我可以交叉检查吗?感谢。

2 个答案:

答案 0 :(得分:0)

使用statsmodels时确认,始终注意添加常量(在这种情况下是必要的)

MATLAB参考: https://www.mathworks.com/help/econ/examples/time-series-regression-ii-collinearity-and-estimator-variance.html

答案 1 :(得分:0)

在线性回归的传统矩阵公式中,X矩阵的第一个位置始终具有1的列向量-否则,我们将通过原点获得回归,即没有截距项。我在statsmodels中寻找VIF时遇到了这个问题。