код для вычисления VIF в statsmodel ниже:ПНП вычисления в 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)
При установке, он не включает в себя перехват. Кажется, перехват должен быть включен в соответствии с «Вводной эконометрикой (6ed)» Wooldridge: «... R-квадрат от регрессии Xj по всем другим независимым переменным (и включая перехват)».
Является ли statmodels неправильным? Есть ли другой пакет, который я могу проверить? Благодарю.
Там нет ничего "плохого". Это предполагает, что 'exog' является регрессионной моделью, которая включает константу, если пользователь этого хочет. См. Несколько связанных вопросов о statsmodels github. IIRC, вы можете сравнить результаты с SAS и Stata. – user333700
Да, спасибо. Ответ обновлен. – iwbabn