2017-02-09 330 views
0

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

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的“介绍性计量经济学(6ed)”,似乎应该包括拦截:“......在所有其他自变量(和包括拦截)上对Xj进行回归的R平方。”

statmodels错了吗?是否有另一个我可以检查的包?谢谢。

+0

没有什么“错误”。这假设'exog'来自一个包含常数的回归模型,如果用户需要的话。请参阅statsmodels github上的几个相关问题。 IIRC,您可以将结果与SAS和Stata进行比较。 – user333700

+0

是的,谢谢。答案已更新。 – iwbabn

回答