这是我的新手,尝试学习多变量线性回归分析,这里有10个变量。我正在尝试仅使用VIF小于5的列来更新/创建一个新的数据框。
这是我用来使用VIF值创建DataFrame
的代码。 X1是DataFrame
,其中包含相同变量的数据
vif =pd.DataFrame()
vif['Variane inflation factor'] = [variance_inflation_factor(X1.values, i) for i in range(X1.shape[1])]
vif['feature names'] = X1.columns
output:
Variance inflation factor feature names
0 314.550195 const
1 9.807879 gdp_growth
2 2.430057 gross_capital_formation
3 25.759263 pop_growth
4 26.174368 birth_rate
5 1.633079 broad_money_growth
6 2305.724583 final_consum_growth
7 32.527332 gov_final_consum_growth
8 3.796420 gross_cap_form_growth
9 2129.093634 hh_consum_growth
10 2.800008 unemployment
因此,我试图找出如何使用VIF值小于5的变量来创建新的DataFrame
的方法。将df.loc
与实际的变量名一起使用可能会起作用,但想扩展这会带来更多变量的问题,而使用实际变量名可能会很困难。
感谢帮助!
答案 0 :(得分:0)
尝试一下。无需使用loc
根据列中的值过滤数据框-
vif_filtered = vif[vif['Variane inflation factor']<5]
如果要基于这些功能过滤数据框X1,则-
cols = list(vif_filtered['feature_names'].unique())
X1_filtered = X1[cols]