多重共线性:python计算VIF以及使用vif做因子独立性检验的方法

通过VIF(Variance Inflation Factor)可以检验因子间的多重共线性。一般做法是,对每个因子与其他因子进行回归,计算VIF值,若发现VIF显著偏高则考虑剔除该因子,以提升模型解释力。在实际应用中,关注VIF值的整体分布,而非固定阈值,若有显著离群的高VIF值,则进行调整。在本次测试中,所有因子的VIF值表现良好,未找到需要剔除的因子。
摘要由CSDN通过智能技术生成

参考:https://www.zhihu.com/question/270451437/answer/405814593

https://www.cnpython.com/qa/38203

import numpy as np
import scipy as sp

a = [1, 1, 2, 3, 4]
b = [2, 2, 3, 2, 1]
c = [4, 6, 7, 8, 9]
d = [4, 3, 4, 5, 4]

ck = np.column_stack([a, b, c, d])
cc = sp.corrcoef(ck, rowvar=False)
VIF = np.linalg.inv(cc)
VIF.diagonal()

 

from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant

df = pd.DataFrame(
    {'a': [1, 1, 2, 3, 4],
     'b': [2, 2, 3, 2, 1],
     'c': [4, 6, 7, 8, 9],
     'd': [4, 3, 4, 5, 4]}
)

X = add_constant(df)
>>> pd.Series([variance_inflation_factor(X.values, i) 
               for i in range(X.shape[1])], 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值