Cómo corregir en R: los contrastes se pueden aplicar solo a factores con 2 o más niveles.

En este artículo, discutiremos cómo podemos corregir el error «los contrastes solo se pueden aplicar a factores con 2 o más niveles» en el lenguaje de programación R.

Los contrastes se pueden aplicar solo a factores con 2 o más niveles:

Es un error común producido por el compilador R. La forma completa de este error se muestra a continuación:

Error en `contrastes<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 

  los contrastes se pueden aplicar solo a factores con 2 o más niveles

Tal error es producido por el compilador R cuando tratamos de ajustar un modelo de regresión con la ayuda de la variable predictora que es un carácter o un factor y contiene solo un valor único.

Cuándo puede ocurrir este error:

R

# Create a data frame
dataframe <- data.frame(parameter1=c(8, 1, 13, 24, 9),
                 parameter2=as.factor(6),
                 parameter3=c(17, 9, 18, 13, 12),
                 parameter4=c(12, 21, 32, 4, 19))
  
# Print the dataframe
dataframe

Producción:

Como puede ver en el código anterior, el parámetro 2 es un factor que contiene solo un valor único. Si tratamos de ajustar un modelo de regresión múltiple en el que el parámetro2 cumple el propósito de una variable predictora, el compilador produce el siguiente error:

Ejemplo:

Aquí, el compilador R produce este tipo de error porque el parámetro 2 contiene solo un valor único que es igual a 6. Dado que no existe ninguna variación en esta variable predictora, el compilador R no pudo ajustar un modelo de regresión de manera efectiva.

R

# Create a data frame
dataframe <- data.frame(parameter1=c(8, 1, 13, 24, 9),
                 parameter2=as.factor(6),
                 parameter3=c(17, 9, 18, 13, 12),
                 parameter4=c(12, 21, 32, 4, 19))
  
  
# Try to fit a multiple regression model
model <- lm(parameter4 ~ parameter1 + parameter2 +
            parameter3, data=dataframe)

Producción:

Cómo arreglar este error:

Tenga en cuenta que podemos usar las funciones sapply() y lapply() juntas para contar el número de valores únicos presentes en cada una de las variables predictoras.

Ejemplo:

Aquí, usando la función lapply() podemos incluso imprimir los valores presentes en las variables predictoras individuales.

R

# Create a data frame
dataframe <- data.frame(parameter1=c(8, 1, 13, 24, 9),
                 parameter2=as.factor(6),
                 parameter3=c(17, 9, 18, 13, 12),
                 parameter4=c(12, 21, 32, 4, 19))
  
# Find the unique values for each variable
sapply(lapply(dataframe, unique), length)

Producción:

Producción

Ejemplo:

Ahora, a partir del siguiente código, podemos ver que el parámetro 2 contiene solo un valor único. Por lo tanto, podemos corregir este error simplemente eliminando el parámetro 2 del modelo de regresión.

R

# Create a data frame
dataframe <- data.frame(parameter1=c(8, 1, 13, 24, 9),
                 parameter2=as.factor(6),
                 parameter3=c(17, 9, 18, 13, 12),
                 parameter4=c(12, 21, 32, 4, 19))
  
# Find the unique values for each variable
lapply(dataframe[c('parameter1', 'parameter2',
                   'parameter3', 'parameter4')], 
       unique)

Producción:

Ejemplo:

Por lo tanto, al eliminar el parámetro 2, el programa se compiló correctamente sin ningún error.

R

# Create a data frame
dataframe <- data.frame(parameter1=c(8, 1, 13, 24, 9),
                 parameter2=as.factor(6),
                 parameter3=c(17, 9, 18, 13, 12),
                 parameter4=c(12, 21, 32, 4, 19))
  
# Fit regression model using all the predictor variables
# except parameter2
model <- lm(parameter4 ~ parameter1 + parameter3, data=dataframe)
  
# Display model summary
summary(model)

Producción:

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *