Python检验多重共线性

import numpy as np
np.linalg.cond(results.model.exog)  # results为训练好的模型

这个好像是根据特征值来检验多重共线性,我本人也不太懂
下面来说一说我们最常用的VIF检验多重共线性的方法

官方文档路径https://www.statsmodels.org/stable/generated/statsmodels.stats.outliers_influence.variance_inflation_factor.html#statsmodels.stats.outliers_influence.variance_inflation_factor

对于一个dataframe每一列的平均VIF,即为所有样本的VIF,如果VIF大于10,就说明有比较强的多重共线性
下面是代码示例:

from statsmodels.stats.outliers_influence import variance_inflation_factor
all = 0
for i in range(0, 23):
    all += variance_inflation_factor(lm.model.exog, i)
all/23  # 我输入的lm.model.exog有23列,平均下来就是整体的

此外还有几点需要关心和了解的是:

  • 如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则
    通常可以 不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多
    重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效
    应仍可以较准确地估计。
  • 如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那
    么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;如果没有
    多重共线性,则只会更加显著。
  • 如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导
    致严重共线性的变量(不要轻易删除哦,因为可能会有内生性的影响),或对
    模型设定进行修改。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值