【发布时间】:2021-08-28 15:00:14
【问题描述】:
我有一个数据集,我想选择 VIF(方差膨胀因子)小于某个阈值的变量子集。我的想法是计算每个变量的 VIF,然后取出最大值的变量(如果它高于某个阈值),重新计算每个剩余变量的 VIF 并重复该过程,直到没有高于阈值的 VIF .
这种方法没有新奇的想法,但我无法超越某个点来创建一个函数来在 Python 中自动化这个过程。
x 是删除了目标变量的数据集
import pandas as pd
import numpy as np
from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant
x_vif = add_constant(x)
vif = pd.DataFrame([variance_inflation_factor(x_vif.values, i) for i in range(x_vif.shape[1])], index=x_vif.columns)
vif 也可以是一个列表。那么,是否有任何包可以自动执行此操作,或者您能否告诉我如何创建此功能?
我找到了一个可以自动执行此操作的 R 库 (thinXwithVIF),但我无法使 rpy2 与我需要使用的 python 版本一起工作。
【问题讨论】:
标签: python pandas machine-learning statistics statsmodels