Комбинации VIF из функции dataframe - PullRequest
0 голосов
/ 05 марта 2020

У меня есть эта функция для 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
...