如何在 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
我们可以看到变量x2和x3的相关系数为 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 中的其他常见错误:
如何在 R 中修复:替换长度为零
如何在 R 中修复:参数涉及不同的行数
如何在 R 中修复:参数既不是数字也不是逻辑:返回 na