当前位置:   article > 正文

【多重共线性_影响&识别】_相关系数多少算多重共线性

相关系数多少算多重共线性

在这里插入图片描述
这么可爱的你,就关注我一下吧~

1、定义

回归模型中,如果两个或两个以上自变量之间存在相关性,这种自变量之间的相关性,就叫做多重共线性。多重共线性普遍存在,适度的多重共线性可以不做处理。

当自变量之间高度相关(相关系数在0.7以上)时,将很难判定每一个单独的自变量对因变量的影响程度,这时候我们就需要做相应处理了。

2、影响

  • 系数不准确,很难判断单独的自变量对因变量的影响,影响模型的可解释性;
  • 系数的正负方向不准确,本应该为正值的出现负值或者相反;
  • 系数不稳定,样本的微小扰动就会导致参数变化较大;
  • 变量的显著性检验失去意义,可能会将重要的解释变量排除在外;

这里我们举个例子,让大家更直观的了解多重共线性的影响:

import numpy as np
from pandas import DataFrame as df
import statsmodels.api as sm
​
e = np.random.normal(size=100)# 我们先给定两个x变量,以及y值
x = df(np.linspace(0,100,100),columns=['x1'])
x['x2'] = np.linspace(10,1,100)
x = sm.add_constant(x)
y = np.dot(x, [1,2,3]) + e
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
# 拟合y
ols_model = sm.OLS(y,x).fit()
ols_model.summary()
  • 1
  • 2
  • 3

拟合结果如下:
在这里插入图片描述

由上图我们可以看出,拟合的x1系数为2.0035,x2的系数为3.0862,拟合的系数与真实系数基本相同。

现我们加入一个变量x3,x3与x2线性相关,我们再看一下拟合后的参数

new_x = x.copy()
new_x['x3'] = new_x['x2']*3
new_ols_model = sm.OLS(y,new_x).fit()
new_ols_model.summary()
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
根据拟合后的结果我们可以看出:加入x3后,x2的系数为0.3114,明显变小了,并且原来x2的权重拆分成x2与x3的权重,那么就会有无数种拆分方法,因此系数就会不稳定,甚至会出现负数的情况。

3、识别

1)系数符号:

模型拟合的变量的系数符号与业务实际不符

2)相关系数:

一般相关系数>0.7,认为变量间存在多重共线性

我们可以根据相关系数可以看出X2与x3线性相关

# 相关系数
coeff = np.corrcoef(new_x['x2'],new_x['x3'])
  • 1
  • 2

在这里插入图片描述

3)VIF:

  • 阈值

也可以使用方差膨胀因子VIF来识别多重共线性,变量的VIF越大说明该变量的共线性情况越严重。

一般样本量在10W+时,VIF>10就存在多重共线性
样本量在10W以下时,VIF>5就出现多重共线性
几千的小样本时需要VIF<2。

  • 公式
    在这里插入图片描述

  • 算法

看到公式大家可能会一脸懵,现在我们就来解释一下VIF的具体算法:

我们知道new_x有三个变量x1、x2、x3

首先我们将x1作为因变量,x2、x3为自变量做回归,得到模型的拟合优度,计算出x1的VIF

然后以x2为因变量,x1、x3为自变量做回归,得到模型的拟合优度,计算出x2的VIF

同理我们可以得出x3的VIF。

  • python实现
# VIF
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
vif = [variance_inflation_factor(new_x.iloc[:,1:].values,i) for i in range(len(new_x.columns)-1)]
firstvif = df({"vars": new_x.columns[1:], "vif": vif})
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
由上图可以看出,x2、x3的VIF都是无穷大inf,所以x2、x3存在严重的多重共线性

=====================================================================
此外我还整理了一些线性回归相关的文章

【线性回归:为什么损失函数要使用均方误差】
【线性回归_案例代码(kaggle房价预测)】
【OLS回归_结果解读】
【线性回归_原理】

更多详细内容请关注我的公众号~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/605273
推荐阅读
相关标签
  

闽ICP备14008679号