什么是“混淆系数”?


24

在R(lm)中建立回归模型时,我经常收到此消息

"there are aliased coefficients in the model"

这到底是什么意思?

另外,由于此predict()原因也发出警告。

尽管这只是一个警告,但我想知道在构建模型之前如何检测/删除别名系数。

另外,忽略此警告可能会带来什么后果?

Answers:


32

我怀疑这不是的错误lm,而是vif(来自package car)的错误。如果是这样,我相信您已经遇到了完美的多重共线性。例如

x1 <- rnorm( 100 )
x2 <- 2 * x1
y <- rnorm( 100 )
vif( lm( y ~ x1 + x2 ) )

产生您的错误。

在这种情况下,“别名”是指线性依赖于其他变量(即引起完美的多重共线性)的变量。

解决方案的第一步是确定哪些变量是罪魁祸首。跑

alias( lm( y ~ x1 + x2 ) )

看一个例子。


谢谢。“多重共线性”是否与“别名系数”相同?
Mohit Verma

1
@MohitVerma:在此术语中,“别名”是指线性相关的变量(即引起完美的多重共线性)。参见stat.ethz.ch/R-manual/R-patched/library/stats/html/alias.html。我用这个来更新答案。
塔玛斯·费伦奇

3

当您在回归X'X矩阵中有奇点(回归输出摘要中的NA值)时,通常会出现这种情况。

基本R lm()允许奇异值/完美的多重共线性,默认值为singular.ok = TRUE。其他软件包/功能较为保守。

例如,对于包中的linearHypothesis()功能car,默认值为singular.ok = FALSE。如果您的回归具有完美的多重共线性,linearHypothesis()将返回错误“模型中存在别名系数”。要处理此错误,请设置singular.ok = TRUE。但是要小心,因为这样做可能会掩盖您回归中的完美多重共线性。


0

也许有人知道:当我在回归中添加虚拟变量时,我也遇到了这个错误。R会自动忽略一个假人,但这会导致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.