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列,平均下来就是整体的

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

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

你可能感兴趣的:(笔记,数学建模与Python,数据分析,python)