【发布时间】:2016-02-15 13:35:32
【问题描述】:
我有一个带有变量的数据框,其中一些包含相同的信息
x1 = runif(1000)
x2 = runif(1000)
x3 = x1 + x2
x4 = runif(1000)
x5 = runif(1000)*0.00000001 +x4
x6 = x5 + x3
x = data.frame(x1, x2, x3, x4, x5, x6)
在下一步中,我想摆脱所有完全多重共线性的变量,例如x3 和 x6 列(可能还有其他组合)。
在 Stata 中这相当简单:_rmcoll varlist
如何在 R 中有效地完成这项工作?
编辑: 请注意,最终目标是计算观测值之间的马氏距离。为此,我需要删除冗余变量。而且据我所知,对于这个应用程序,我放弃 x1、x2 还是 x3 都无关紧要
【问题讨论】:
-
请注意,如果变量(列)完全共线,那么删除哪个变量是任意的。
-
这就是我所说的“可能还有其他组合”。然而,在我的上下文中,删除哪些并不重要
-
对于多共线性数据,我要么使用主成分回归(参见包
pls),要么使用某种正则化方法,例如套索(参见包glmnet)。 -
谢谢。我不是 100% 确定你的建议。并不是说我不针对运行回归或任何东西。我在我的问题中粘贴了澄清评论
-
注意:任何希望此线程移动到交叉验证的人都应该注意它之前已在那里发布并被搁置。 (原则上它在这两个地方都可能是题外话,但我自己的观点是它属于这里。)
标签: r statistics stata