【问题标题】:Why am I not able to get the VIF using statsmodels api为什么我无法使用 statsmodels api 获取 VIF
【发布时间】:2020-12-14 21:34:50
【问题描述】:

我正在查看来自 statsmodels 的以下官方文档:

https://www.statsmodels.org/stable/generated/statsmodels.stats.outliers_influence.variance_inflation_factor.html

但是当我尝试在练习数据集上运行此代码时(statsmodels.api 已经导入为 sm)

variance_inflation_factor=sm.stats.outliers_influence.variance_inflation_factor()
vif=pd.DataFrame()
vif['VIF']=[variance_inflation_factor(X_train.values,i) for i in range(X_train.shape[1])]
vif['Predictors']=X_train.columns

我收到错误消息:模块 'statsmodels.stats.api' 没有属性 'outliers_influence

谁能告诉我什么是让它工作的合适方法?

【问题讨论】:

    标签: python machine-learning statistics linear-regression statsmodels


    【解决方案1】:

    variance_inflation_factor=sm.stats.outliers_influence.variance_inflation_factor() 不需要通过调用不带参数的函数来定义。相反,variance_inflation_factor 是一个接受两个输入的函数。

    import pandas as pd
    import numpy as np
    from statsmodels.stats.outliers_influence import variance_inflation_factor
    
    X_train = pd.DataFrame(np.random.standard_normal((1000,5)), columns=[f"x{i}" for i
    in range(5)])
    vif=pd.DataFrame()
    vif['VIF']=[variance_inflation_factor(X_train.values,i) for i in range(X_train.shape[1])]
    vif['Predictors']=X_train.columns
    
    print(vif)
    

    产生

            VIF Predictors
    0  1.002882         x0
    1  1.004265         x1
    2  1.001945         x2
    3  1.004227         x3
    4  1.003989         x4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-28
      • 2021-05-04
      • 1970-01-01
      • 2014-03-09
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      相关资源
      最近更新 更多