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

📅  最后修改于: 2022-05-13 01:55:16.278000             🧑  作者: Mango

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

在本文中,我们正在寻找解决 R 语言中“模型中存在别名系数”错误的方法。

模型中有别名系数:

R 编译器有时可能会产生此类错误。错误采用以下形式:

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

如果回归模型中存在多重共线性,则可能会出现此类错误。它给了我们一个想法,即模型的至少两个变量彼此高度相关。

何时可能发生此错误:

现在我们将通过在 R 中演示一个程序来重新生成这个错误。在下面的程序中,我们已经拟合了一个回归模型。 R 中的 car 包提供了 vif()函数,我们可以使用该函数计算模型中每个预测变量的 vif 值,如果多重共线性是一个问题,它将引发错误。

例子:

在这里,我们首先创建了三个数据组:data1、data2、data3 和 data4。 rnorm()函数用于生成遵循正态分布的 50 个随机数的向量。

rnorm()函数具有以下语法:

然后,我们使用 lm()函数拟合线性回归模型。该函数的语法如下:

在我们的模型准备好使用之后,我们正在使用 vif()函数。该函数用于计算线性回归模型中所有变量的变异膨胀因子,语法如下:

R
# Defining data
data1 <- rnorm(50)
data2 <- rnorm(50)
data3 <- data2*4
data4 <- rnorm(50)
  
# Fit the regression model
model <- lm(data4~data1+data2+data3)
  
# Determine the VIF values for predictor
# variables
vif(model)


R
# Defining data
data1 <- rnorm(50)
data2 <- rnorm(50)
data3 <- data2*4
data4 <- rnorm(50)
  
# Place variables in data frame
dataframe <- data.frame(data1, data2, data3, data4)
  
# Make a correlation matrix for 
# data frame
cor(dataframe)


R
# Defining data
data1 <- rnorm(50)
data2 <- rnorm(50)
data3 <- data2*4
data4 <- rnorm(50)
  
#fit regression model
model <- lm(data4~data1+data2)
  
# Determine the VIF values for 
# predictor variables
vif(model)


输出:

如何修复错误:

我们可以通过仅考虑完全相关的那些预测变量(在 lm()函数的公式中)来轻松修复此错误。为了确定模型的哪些变量完全相关,我们可以借助 cor()函数为变量生成相关矩阵。该函数的语法如下:

R

# Defining data
data1 <- rnorm(50)
data2 <- rnorm(50)
data3 <- data2*4
data4 <- rnorm(50)
  
# Place variables in data frame
dataframe <- data.frame(data1, data2, data3, data4)
  
# Make a correlation matrix for 
# data frame
cor(dataframe)

输出:

正如您在输出中看到的那样,data2 和 data3 的相关系数等于 1。这意味着这两个变量是错误的原因,因为它们完全相关。

如果我们再次使用 data2 和 data3 中的一个变量再次拟合回归模型,则可以修复此错误。

R

# Defining data
data1 <- rnorm(50)
data2 <- rnorm(50)
data3 <- data2*4
data4 <- rnorm(50)
  
#fit regression model
model <- lm(data4~data1+data2)
  
# Determine the VIF values for 
# predictor variables
vif(model)

输出: