如何在 r 中修复:模型中存在混叠系数


在 R 中您可能遇到的错误是:

 Error in vive.default(model): there are aliased coefficients in the model

当回归模型中存在多重共线性时,通常会出现此错误。也就是说,模型中的两个或多个预测变量高度(或完全)相关。

当发生这种情况时,我们说一个变量是另一个变量的“别名”,这会在拟合回归模型时引起问题。

以下示例展示了如何在实践中纠正此错误。

如何重现错误

假设我们在 R 中应用以下回归模型

 #make this example reproducible
set. seeds (0)

#define data
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- x2*3
y <- rnorm(100)

#fit regression model
model <- lm(y~x1+x2+x3)

我们可以使用car包的vive()函数计算模型中每个预测变量的 VIF 值,以确定多重共线性是否是一个问题:

 library (car)

#calculate VIF values for predictor variables
lively(model)

Error in vive.default(model): there are aliased coefficients in the model

我们收到一条错误,指出“模型中存在别名系数”。

这告诉我们模型中的两个或多个预测变量完全相关。

如何修复错误

为了确定哪些预测变量完全相关,我们可以使用cor()函数为变量创建一个相关矩阵

 #place variables in data frame
df <- data. frame (x1, x2, x3, y)

#create correlation matrix for data frame
cor(df)

           x1 x2 x3 y
x1 1.00000000 0.126886263 0.126886263 0.065047543
x2 0.12688626 1.000000000 1.000000000 -0.009107573
x3 0.12688626 1.000000000 1.000000000 -0.009107573
y 0.06504754 -0.009107573 -0.009107573 1.000000000

我们可以看到变量x2x3相关系数为 1。这告诉我们这两个变量导致了错误,因为它们完全相关。

要纠正此错误,只需再次调整回归模型并忽略这两个变量之一即可。

我们忽略哪个变量并不重要,因为它们都在回归模型中提供完全相同的信息。

为简单起见,我们删除x3并再次拟合回归模型:

 library (car)

#make this example reproducible
set. seeds (0)

#define data
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- x2*3
y <- rnorm(100)

#fit regression model
model <- lm(y~x1+x2)

#calculate VIF values for predictor variables in model
lively(model)

      x1 x2 
1.016364 1.016364 

请注意,这次在计算模型的 VIF 值时我们没有收到任何错误,因为多重共线性不再是问题。

相关:如何计算和解释 R 中的 VIF 值

其他资源

以下教程解释了如何修复 R 中的其他常见错误:

如何在 R 中修复:替换长度为零
如何在 R 中修复:参数涉及不同的行数
如何在 R 中修复:参数既不是数字也不是逻辑:返回 na

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注