如何解释方差膨胀因子 (VIF) 结果?

数据挖掘 机器学习 r 特征选择 线性回归 共线性
2022-01-19 12:15:59

从各种书籍和博客文章中,我了解到方差膨胀因子 (VIF) 用于计算共线性。他们说直到 10 点的 VIF 都很好。但我有一个问题。

正如我们在下面的输出中看到的,rad特征具有最高的 VIF,标准是直到 10 的 VIF 是可以的。

当我们将整个线性拟合传递给函数时,VIF 如何计算共线性?以及如何解释 VIF 给出的结果?哪些变量与哪些变量共线?

lm.fit2 = lm(medv~.+log(lstat)-age-indus-lstat, data=Boston)
> summary(lm.fit2)

Call:
lm(formula = medv ~ . + log(lstat) - age - indus - lstat, data = Boston)

Residuals:
     Min       1Q   Median       3Q      Max 
-15.3764  -2.5604  -0.3867   1.8456  25.2255 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  53.942455   4.823309  11.184  < 2e-16 ***
crim         -0.126273   0.029185  -4.327 1.83e-05 ***
zn            0.021993   0.012238   1.797 0.072934 .  
chas          2.270669   0.768911   2.953 0.003296 ** 
nox         -13.959428   3.187365  -4.380 1.45e-05 ***
rm            2.619831   0.378737   6.917 1.43e-11 ***
dis          -1.374045   0.166350  -8.260 1.35e-15 ***
rad           0.286993   0.057004   5.035 6.72e-07 ***
tax          -0.010756   0.003033  -3.546 0.000428 ***
ptratio      -0.840540   0.116431  -7.219 1.99e-12 ***
black         0.008015   0.002402   3.336 0.000913 ***
log(lstat)   -8.672865   0.530188 -16.358  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 4.258 on 494 degrees of freedom
Multiple R-squared:  0.7904,    Adjusted R-squared:  0.7857 
F-statistic: 169.3 on 11 and 494 DF,  p-value: < 2.2e-16

> vif(lm.fit2)
      crim         zn       chas        nox         rm        dis 
  1.755719   2.269767   1.062622   3.800515   1.972845   3.418391 
       rad        tax    ptratio      black log(lstat) 
  6.863674   7.279426   1.770146   1.340023   2.827687 
1个回答

方差膨胀因子(VIF) 查看单个由模型中的所有其他(共同)确定的程度。xixi

VIF 是如何工作的?

  1. 对于模型中的每个,您运行一个(辅助)线性回归: xi
    x1,i=β1+β2x2,i+...+βnxn,i+u.
  2. 您检索每个模型R2VIF
    VIF1=1/(1R12).

R中的示例:

计算 VIF:

library(car)
library(ISLR)
reg = lm(mpg~disp+wt+qsec+hp, data=mtcars)
vif(reg)

结果:

    disp       wt     qsec       hp 
7.985439 6.916942 3.133119 5.166758 

手动执行此操作(对于disp

rsq = summary(lm(disp~wt+qsec+hp, data=mtcars))$r.squared
1/(1-rsq)

结果:

7.985439

的经验法则呢VIF=10

VIF=10等于在上述步骤 1 的辅助回归中)。这意味着您的另一个(在模型中)在很大程度上解释了正在考虑这当然只是一个经验法则。R2=0.91/(10.9)=10xixi

从本质上讲,归结为一个问题:“我的之一被所有其他共同解释的程度如何”。VIFxix

在你的例子tax中有最高点VIF( tax=7.279426)。这意味着辅助回归(步骤 1)tax具有R2=0.862627. 这意味着tax所有其他人都很好地解释了x因此可能存在多重共线性问题。