En este artículo, buscamos la manera de corregir el error «hay coeficientes con alias en el modelo» en el lenguaje R.
Hay coeficientes con alias en el modelo:
El compilador R a veces puede producir este tipo de error. El error toma la siguiente forma:
Error in vif.default(model) : there are aliased coefficients in the model
Si hay multicolinealidad en un modelo de regresión, podría ocurrir ese tipo de error. Nos da una idea de que al menos dos variables del modelo están altamente correlacionadas entre sí.
Cuándo puede ocurrir este error:
Ahora regeneraremos este error demostrando un programa en R. En el siguiente programa hemos ajustado un modelo de regresión. El paquete car en R proporciona la función vif() mediante la cual podemos calcular los valores vif para cada una de las variables predictoras en el modelo y generará un error si la multicolinealidad es un problema.
Ejemplo:
Aquí, al principio, hemos creado tres grupos de datos: datos1, datos2, datos3 y datos4. La función rnorm() se usa para generar un vector de 50 números aleatorios que siguen la distribución normal.
La función rnorm() tiene la siguiente sintaxis:
Sintaxis:
norma(n)
Parámetro:
n: un número entero que representa la cantidad de números aleatorios que se generarán.
Luego, ajustamos un modelo de regresión lineal usando la función lm() . La sintaxis de esta función se da a continuación:
Sintaxis:
lm (fórmula, marco de datos)
Parámetros:
fórmula: Representa la fórmula para el modelo lineal.
dataframe: Representa un dataframe.
Después de que nuestro modelo esté listo para ser usado, estamos usando la función vif(). Esta función se utiliza para calcular el factor de inflación de variación para todas las variables en el modelo de regresión lineal y tiene la siguiente sintaxis:
Sintaxis:
VIF (modelo)
Parámetros:
modelo: Representa un modelo de regresión lineal o logística
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)
Producción:
Cómo corregir el error:
Podemos corregir este error fácilmente considerando aquellas variables predictoras solo una vez que estén perfectamente correlacionadas (en la fórmula de la función lm()). Para determinar qué variables del modelo están perfectamente correlacionadas, podemos tomar la ayuda de la función cor() que generará una array de correlación para las variables. La sintaxis de esta función se da a continuación:
Sintaxis:
cor(vect1, vect2, método)
Parámetros:
Aquí, vect1 y vect2 son vectores de datos y el método representa el tipo de método que se utilizará
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)
Producción:
Como puede ver en la salida, data2 y data3 tienen un coeficiente de correlación igual a 1. Esto implica que estas dos variables son responsables del error ya que están perfectamente correlacionadas.
Este error se puede corregir si volvemos a ajustar el modelo de regresión con una sola variable de data2 y 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)
Producción: