如何处理 R 中的“系数:14 由于奇异性而未定义”之类的错误?

机器算法验证 r 广义线性模型 回归系数
2022-02-07 16:15:42

当进行 GLM 并且您在 anova 输出中得到“由于奇异性而未定义”错误时,如何抵消此错误的发生?

一些人认为这是由于协变量之间的共线性或数据集中不存在其中一个级别(请参阅:在 lm 中解释“由于奇异性而未定义”

如果我想查看驱动模型的是哪种“特殊处理”,并且我有 4 个处理级别:Treat 1Treat 2Treat 3& Treat 4,它们在我的电子表格中记录为:什么时候Treat 1为 1 其余为零,何时Treat 2为 1 其余为零,等等,我该怎么办?

3个回答

您可能会遇到该错误,因为您的两个或多个自变量是完全共线的(例如错误编码虚拟变量以制作相同的副本)。

在您的数据上使用 cor() 或在模型上使用 alias() 以进行更仔细的检查。

由于自变量之间的强相关性,将出现“由于奇异性而未定义”的错误。这可以通过使用 n-1 个虚拟变量来避免。在您的情况下,对于处理变量,您应该使用 3 个二进制虚拟变量(Treat1、Treat2、Treat3)。

在 R 编程中,线性回归函数 lm() 将导致“NA”作为高度相关变量的系数。

在我(有些有限的)经验中,这很可能是由于两个或多个变量之间的高度共线性。我建议使用 VIF 函数来确定在这方面哪些变量是最重要的贡献者,并在您的模型的下一次迭代中选择要消除的变量时考虑到这一点。

在解释 VIF 值方面,有人认为低于 5 的值是可以的水平,在某些情况下可以接受 5-10 的值。我通常不会过多地依赖特定的值阈值,这些值仍然可以为您提供潜在共线性问题的相对指示。