处理多重共线性


13

我了解到,使用封装vif()方法car,我们可以计算模型中输入的多重共线性度。从维基百科来看,如果该vif值大于,5那么我们可以认为输入存在多重共线性问题。例如,我使用lm()方法开发了线性回归模型,并vif()给出了以下内容。正如我们所看到的,输入ublb以及tb由多重痛苦。

 vif(lrmodel)
     tb        ub        lb          ma     ua        mb         sa     sb 
 7.929757 50.406318 30.826721  1.178124  1.891218  1.364020  2.113797  2.357946

为了避免多重共线性问题,并使模型更健壮,我ub和之间进行了交互lb,现在新模型的vif表如下:

   tb     ub:lb      ma       mb      sa        sb     ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218

有中没有太大区别R^2价值和以及有在上述两种情况都在误差没有太大的差别,从一留出CV测试。

我的问题是:

  1. 如上所示,通过交互来避免多重共线性问题是否还好?

  2. 与上述vif方法结果相比,有没有更好的方法来表示多重共线性问题。

请给我您的建议。

谢谢。


您的模型是否是对数-对数回归(交互作为限制,可以与他们一起进行)?在wiki中,有一个关于multicollinearity问题的更完整的文章,网址为en.wikipedia.org/wiki/Multicollinearity。我也建议在此站点上探索multicollinearity标签,这似乎是一个常见问题。
Dmitrij Celov 2011年

@Dmitrij Celov:谢谢。不,我的模型是没有对数的简单线性回归...
samarasa

Answers:


11

您似乎包括了交互项ub:lb,但没有将ublb本身作为单独的预测变量。这将违反所谓的“边际原则”,该原则指出高阶术语应只包括以低阶术语存在的变量(Wikipedia首先)。实际上,你现在包括一个预测,这只是的元素之积ublb

1VIFj只是,其中使用原始预测变量运行回归时,是值作为所有剩余预测变量预测的标准(它也是第个对角元素,预测变量相关矩阵的逆)。50甲VIF值从而表明您得到一个预测时的0.98 与其他预测,表明几乎完全冗余(同样为,的0.97)。 R 2 j R2jjR1 x R2R211Rj2Rj2R2jjRx1R2ubublbR2

我将开始进行预测变量之间的所有成对相关性,并运行上述回归来查看预测的变量,ublb查看冗余是否易于解释。如果是这样,您可以删除冗余的预测变量。您还可以查看ridge回归(lm.ridge()来自MASSR中的软件包)。

更高级的多重共线性诊断使用的特征值结构,其中是回归的设计矩阵(即,所有预测变量都作为列向量)。条件是,其中和是最大和最小()特征值。在R中,可以使用,其中模型通常使用标准化变量。X κ XtXXκ λ一个Xλ中号Ñ0XXλmaxλminλmaxλmin0XtXkappa(lm(<formula>))lm()

在几何上,使您对由预测变量形成的数据云的形状有所了解。使用2个预测变量,散点图可能看起来像是带有2个主轴的椭圆。然后告诉您椭圆的“平坦度”,即度量最大轴的长度与最小主轴的长度之比。使用3个预测变量,您可能会具有雪茄形状和3个主轴。您的数据云在某个方向上“越扁平”,将这些变量放在一起时就越冗余。κκκ

对于临界值,有一些经验法则(我听说不到20)。但请注意,在仅改变变量单位的数据转换(如标准化)下不是不变的。这不像VIF:会给你同样的结果(只要不是在模型方面乘法),但和几乎肯定会有所不同。κκκvif(lm(y ~ x1 + x2))vif(lm(scale(y) ~ scale(x1) + scale(x2)))kappa(lm(y ~ x1 + x2))kappa(lm(scale(y) ~ scale(x1) + scale(x2)))


关于第一个注释:对于多元模型,只保留交互项似乎是可以的,因为后者仅表示您限制了ub lb()的系数。,但是对于一般的线性回归模型,正如您指出的那样(+1)^ _ ^顺便说一句lb-下限,ub-上限?!如果是这样,则相差两个,可能是更好的转换。Ü b - balogub+aloglb=alogublbublb
Dmitrij Celov

@Dmitrij:不,ub + lb + sb =100。–
samarasa

有没有很好的图形表示多重共线性?请建议我R中是否有任何方法可以解决这个问题。
samarasa

2
@kkp我现在唯一想到的方法是:pairs()对于散点图矩阵,显示预测变量的所有成对分布。包scatterplot3d可用于可视化3个变量的散点图。在双变量情况下,绘制轴比等于的椭圆,请参见此答案。您可能还会检查提供其他多重共线性诊断(可能是图形)的软件包。κ2perturb
caracal

1

您还应该在变量考虑期间考虑P值。

  1. 如果P值非常低(p <0.05),则VIF很高(> 5),那么您可能应该考虑其他无关紧要的变量。并重建您的模型。
  2. 如果P值和VIF都很高,则此变量将无关紧要。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.