在 R ( lm
) 中构建回归模型时,我经常收到此消息
"there are aliased coefficients in the model"
它到底是什么意思?
此外,由于这predict()
也是一个警告。
虽然这只是一个警告,但我想知道我们如何在构建模型之前检测/删除混叠系数。
另外,忽视这个警告可能会导致什么后果?
在 R ( lm
) 中构建回归模型时,我经常收到此消息
"there are aliased coefficients in the model"
它到底是什么意思?
此外,由于这predict()
也是一个警告。
虽然这只是一个警告,但我想知道我们如何在构建模型之前检测/删除混叠系数。
另外,忽视这个警告可能会导致什么后果?
我怀疑这不是错误lm
,而是vif
(来自 package car
)。如果是这样,我相信你已经遇到了完美的多重共线性。例如
x1 <- rnorm( 100 )
x2 <- 2 * x1
y <- rnorm( 100 )
vif( lm( y ~ x1 + x2 ) )
产生你的错误。
在这种情况下,“别名”是指线性依赖于其他变量(即导致完全多重共线性)的变量。
解决方案的第一步是确定哪些变量是罪魁祸首。跑
alias( lm( y ~ x1 + x2 ) )
看一个例子。
当您的回归X'X
矩阵中有奇点(回归输出摘要中的 NA 值)时,通常会出现这种情况。
Base Rlm()
允许奇异值/完美多重共线性,默认为singular.ok = TRUE
. 其他包/功能更保守。
例如,对于包中的linearHypothesis()
函数car
,默认为singular.ok = FALSE
. 如果您的回归中有完美的多重共线性,linearHypothesis()
将返回错误“模型中存在别名系数”。要处理此错误,请设置singular.ok = TRUE
. 但是要小心,因为这样做可能会掩盖回归中的完美多重共线性。
也许对某些人来说很高兴:当我将假人添加到回归时,我也遇到了这个错误。R 会自动省略一个 dummy,但这会导致 vif 测试出错。因此,对于某些人来说,一个解决方案可能是手动移除一个假人。