什么是“混叠系数”?

机器算法验证 r 回归
2022-02-14 02:08:42

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

"there are aliased coefficients in the model"

它到底是什么意思?

此外,由于这predict()也是一个警告。

虽然这只是一个警告,但我想知道我们如何在构建模型之前检测/删除混叠系数。

另外,忽视这个警告可能会导致什么后果?

3个回答

我怀疑这不是错误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 测试出错。因此,对于某些人来说,一个解决方案可能是手动移除一个假人。