赞
踩
在多元线性回归中,如果自变量之间存在相关性,就会出现共线性问题。共线性会导致模型的不稳定,使得回归系数难以估计。
本文将介绍共线性的概念以及如何进行共线性分析。我们将重点讨论多重共线性和方差膨胀因子(VIF)。
共线性指的是自变量之间存在高度相关性的情况。如果两个或更多自变量高度相关,则很难区分它们对因变量的影响。共线性可能会导致以下问题:
散点图矩阵可以帮助我们观察多个自变量之间的关系。例如,下面是Iris数据集中四个自变量的散点图矩阵:
import seaborn as sns
import pandas as pd
iris = sns.load_dataset("iris")
sns.pairplot(data=iris[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']])
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOlOIRPx-1683811467442)(./images/scatter_matrix.png)]
从上图我们可以看出,petal_length和petal_width之间存在高度相关性。
相关系数矩阵可以帮助我们量化自变量之间的相关性。例如,下面是Iris数据集中四个自变量的相关系数矩阵:
corr = iris[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']].corr()
corr
sepal_length | sepal_width | petal_length | petal_width | |
---|---|---|---|---|
sepal_length | 1.000000 | -0.117570 | 0.871754 | 0.817941 |
sepal_width | -0.117570 | 1.000000 | -0.428440 | -0.366126 |
petal_length | 0.871754 | -0.428440 | 1.000000 | 0.962865 |
petal_width | 0.817941 | -0.366126 | 0.962865 | 1.000000 |
从上表我们可以看出,petal_length和petal_width之间的相关系数为0.96,说明它们之间存在高度相关性。
方差膨胀因子(VIF)可以帮助我们判断单个自变量对多重共线性的贡献大小。如果一个自变量的VIF值大于5,则说明它可能存在多重共线性。
例如,我们可以使用statsmodels库中的vif计算VIF值:
import statsmodels.formula.api as smf
model = smf.ols("sepal_length ~ sepal_width + petal_length + petal_width", data=iris)
result = model.fit()
pd.Series([smf.ols(col + ' ~ ' + '+'.join(iris.columns.drop(col)), data=iris).fit().rsquared for col in iris.columns],
index=iris.columns, name='VIF')
VIF | |
---|---|
sepal_length | 264.745487 |
sepal_width | 104.285413 |
petal_length | 177.263155 |
petal_width | 55.384123 |
从上表我们可以看出,sepal_length、sepal_width和petal_length之间存在多重共线性。
共线性是自变量之间存在相关性的情况。共线性可能会导致模型的不稳定,使得回归系数难以估计。共线性分析包括散点图矩阵、相关系数矩阵和方差膨胀因子。在进行多元线性回归时,应该注意共线性问题,避免影响模型的质量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。