我希望这个问题不会成为“问与答”的问题……这里是:
(多重)共线性是指回归模型中预测变量之间的极高相关性。如何治愈它们……好吧,有时您不需要“治愈”共线性,因为它不会影响回归模型本身,而是会影响单个预测变量的影响。
找出共线性的一种方法是将每个预测变量作为因变量,将其他预测变量作为自变量,确定R2,并且如果它大于.9(或.95),则可以认为预测变量是冗余的。这是一种“方法” ...其他方法呢?其中一些非常耗时,例如从模型中排除预测变量并注意b系数变化-它们应该明显不同。
当然,我们必须始终牢记分析的特定上下文/目标...有时,唯一的补救方法是重复研究,但是现在,当(多)共线性时,我对筛选冗余预测变量的各种方式感兴趣。发生在回归模型中。
最佳答案
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)
。