如何在 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()函数具有以下语法:
Syntax:
rnorm(n)
Parameter:
n: an integer that represents the number of random numbers to be generated.
然后,我们使用 lm()函数拟合线性回归模型。该函数的语法如下:
Syntax:
lm( formula, dataframe )
Parameters:
formula: It represents the formula for the linear model.
dataframe: It represent a dataframe.
在我们的模型准备好使用之后,我们正在使用 vif()函数。该函数用于计算线性回归模型中所有变量的变异膨胀因子,语法如下:
Syntax:
VIF(model)
Parameters:
model: It represent a linear or logistic regression model
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()函数为变量生成相关矩阵。该函数的语法如下:
Syntax:
cor(vect1, vect2, method)
Parameters:
Here, vect1 and vect2 are data vectors and method represents the type of method to be used
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)
输出: