У меня есть эта функция для VIF.
Как я могу расширить это, чтобы оно возвращало любую комбинацию из фрейма данных (столбец 1,2 гребня / столбец 2,3 гребня), который имеет VIF менее 5 для ограничения потенциальных моделей формулировок.
Спасибо.
from statsmodels.regression.linear_model import OLS
from statsmodels.tools.tools import add_constant
def variance_inflation_factors(exog_df):
'''
Parameters
----------
exog_df : dataframe, (nobs, k_vars)
design matrix with all explanatory variables, as for example used in
regression.
Returns
-------
vif : Series
variance inflation factors
'''
exog_df = add_constant(exog_df)
vifs = pd.Series(
[1 / (1. - OLS(exog_df[col].values,
exog_df.loc[:, exog_df.columns != col].values).fit().rsquared)
for col in exog_df],
index=exog_df.columns,
name='VIF'
)
return vifs