我希望这个问题不会成为“问答”问题......在这里:(多)共线性是指回归模型中预测变量之间极高的相关性。如何治愈他们......好吧,有时你不需要“治愈”共线性,因为它不会影响回归模型本身,而是可以解释个体预测因子的影响。
确定共线性的一种方法是将每个预测变量作为因变量,其他预测变量作为自变量来确定R 2,如果它大于.9(或.95),我们可以考虑预测变量冗余。这是一个“方法”......其他方法呢?其中有些是耗时的,比如从模型中排除预测因素并观察b系数的变化 - 它们应该明显不同。
当然,我们必须时刻牢记分析的具体背景/目标。有时,唯一的补救办法是重复研究,但现在,我对多种共线性筛选多余预测因子的各种方式感兴趣发生在回归模型中。
发布于 2018-04-24 08:35:34
该kappa()
函数可以帮助。这里是一个模拟的例子:
> set.seed(42)
> x1 <- rnorm(100)
> x2 <- rnorm(100)
> x3 <- x1 + 2*x2 + rnorm(100)*0.0001 # so x3 approx a linear comb. of x1+x2
> mm12 <- model.matrix(~ x1 + x2) # normal model, two indep. regressors
> mm123 <- model.matrix(~ x1 + x2 + x3) # bad model with near collinearity
> kappa(mm12) # a 'low' kappa is good
[1] 1.166029
> kappa(mm123) # a 'high' kappa indicates trouble
[1] 121530.7
我们通过使第三个回归因子越来越共线进一步走下去:
> x4 <- x1 + 2*x2 + rnorm(100)*0.000001 # even more collinear
> mm124 <- model.matrix(~ x1 + x2 + x4)
> kappa(mm124)
[1] 13955982
> x5 <- x1 + 2*x2 # now x5 is linear comb of x1,x2
> mm125 <- model.matrix(~ x1 + x2 + x5)
> kappa(mm125)
[1] 1.067568e+16
>
这使用近似值,请参阅help(kappa)
详细信息。
发布于 2018-04-24 09:48:24
一条经验法则就是数值CN > 30 indicate severe collinearity
。除条件编号外,其他方法还包括:
1)协方差矩阵的行列式从0(完美共线性)到1(无共线性)
# using Dirk's example
> det(cov(mm12[,-1]))
[1] 0.8856818
> det(cov(mm123[,-1]))
[1] 8.916092e-09
2)利用对角矩阵的行列式是特征值的乘积这一事实=>一个或多个小特征值的存在表示共线性
> eigen(cov(mm12[,-1]))$values
[1] 1.0876357 0.8143184
> eigen(cov(mm123[,-1]))$values
[1] 5.388022e+00 9.862794e-01 1.677819e-09
3)方差膨胀因子(VIF)的值。预测因子i的VIF是1 /(1-R_i ^ 2),其中R_i ^ 2是来自预测因子i对其余预测因子的回归的R ^ 2。当至少有一个独立变量的VIF很大时,共线存在。经验法则:VIF > 10 is of concern
。有关R中的实现,请参阅此处。使用R ^ 2来确定共线性应该与散点图的视觉检查结合起来,因为一个异常值可以“导致”它不存在的共线性,或者可以在存在它的地方存在共线性。
https://stackoverflow.com/questions/-100008238
复制相似问题