¿Cómo incluir factores en la regresión usando la programación R?

Las variables categóricas (también conocidas como factor o variables cualitativas) son variables que clasifican los valores observacionales en grupos. Son de string o numéricas y se denominan variables factoriales en el modelado estadístico. Guardar variables de string normales como factores ahorra mucha memoria. Los factores también se pueden almacenar como variables de nivel o etiqueta. Tienen un número limitado de valores diferentes, llamados niveles. Por ejemplo, el género de los individuos es una variable categórica que puede tomar dos niveles: Masculino o Femenino . La regresión requiere variables numéricas. Entonces, cuando un investigador quiere incluir una variable categórica en un modelo de regresión, se necesitan pasos para hacer que los resultados sean interpretables. Veamos todo esto con un ejemplo de código en lenguaje R.

Implementación en R

Almacenar strings o números como factores

En primer lugar, vamos a crear un conjunto de datos de muestra.  

R

# creating sample
samp <- sample(0:1, 20, replace = TRUE)
samp

Producción:

[1] 1 1 0 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 1


Convertir los números establecidos como factores.

R

samp <- sample(0:1, 20, replace = TRUE)
  
# converting sampleto factors
samp1 <- factor(samp)
  
# to find if its a factor lets use is.factor()
is.factor(samp1)

Producción:

[5]TRUE


Ahora haz lo mismo para las cuerdas.

R

# creating string sample
str1 <- c("small", "big", "medium", "small", "small",
          "big", "medium", "medium", "big")
str1
  
# will show output of string
f.str1<-factor(str1)
  
# check if f.str1 is factor or not
is.factor(f.str1)
  
# check if str1 is factor or not
is.factor(str1)

Producción:

[1]"small"  "big"    "medium" "small"  "small"  "big"    "medium" "medium" "big"   
[10]TRUE
[12]FALSE


Factores con etiquetas

R

# creating sample with labels
lab <- factor(samp1, labels = c("sweet", "bitter"))
lab

Producción:

bitter bitter sweet  bitter bitter bitter sweet  sweet  bitter sweet 
[11] sweet  bitter bitter bitter bitter bitter bitter bitter sweet  bitter
Levels: sweet bitter


Factores ordenados

R

str1 <- c("small", "big", "medium", "small", "small",
          "big", "medium", "medium", "big")
  
# ordering the factors w.r.t levels
order <- ordered(str1, 
                 levels = c("small", "medium", "big"))
order
f.order <- factor(order)

Producción:

[1] small  big    medium small  small  big    medium medium big   
Levels: small < medium < big


Otra forma de ordenar un factor es:

R

# another way to order 
f.order = factor(str1, 
                 levels = c("small", "medium", "big"),
                 ordered = TRUE)

Para encontrar la media

R

mean(samp1)
  
# shows NA has output
mean(as.numeric(levels(samp1)[samp1]))
NA
0.7


 Eliminando niveles

R

f.new <- f.order[f.order != "small"]
f.new

Producción:

[1] big    medium big    medium medium big   
Levels: small < medium < big


Implementar con regresión

Considere el experimento como las horas que los estudiantes permanecen en la escuela durante los festivales.

R

# consider a dataframe student
student <- data.frame(
    # id of students
    id = c (1:5), 
    
    # name of students  
    name = c("Payal", "Dan", "Misty", "Ryan", "Gargi"),
    
    # gender of students
    gender = c("F", "M", "F", "M", "F"),
    
    # gender represented in numbers F-1,M-0
    gender_num = c(1, 0, 1, 0, 1),
    
    # the hours students stay at fests
    hours = c(2.5, 4, 5.3, 3, 2.2)
)
student

Producción:

  id  name   gender gender_num hours
1  1 Payal      F          1   2.5
2  2   Dan      M          0   4.0
3  3 Misty      F          1   5.3
4  4  Ryan      M          0   3.0
5  5 Gargi      F          1   2.2


La ecuación de regresión es

 y = segundo 0 + segundo 1 *x 

Dónde 

y: variable de salida predicha sobre la base de una variable predictora (x),  

b 0 + b 1 : coeficientes beta, que representan el intercepto y la pendiente, respectivamente.

b 0 + b 1: si un estudiante es hombre, b 0: si un estudiante es mujer. Los coeficientes se pueden interpretar de la siguiente manera:

  • b 0 es el promedio de horas de permanencia de las alumnas en festivales,
  • b 0 + b 1 es el promedio de horas que los estudiantes varones permanecieron en festivales y
  • b 1 es la diferencia promedio en horas entre estudiantes hombres y mujeres.

 R crea variables ficticias automáticamente con el siguiente código:

R

# making the regression model
model <- lm(hours ~ gender, data = student) 
summary(model)$coef

Producción:

            Estimate Std. Error   t value   Pr(>|t|)
(Intercept) 3.3333333  0.8397531 3.9694209 0.02857616
genderM     0.1666667  1.3277662 0.1255241 0.90804814


El valor estimado para estudiantes F es 3,3333333 y para estudiantes M es 0,16666667. El valor Pr de estudiantes M y estudiantes F no es tan significativo y solo 0.90-0.02 ~ 0.9, es decir, no hay evidencia real de que los estudiantes M permanezcan más horas que las mujeres.

Publicación traducida automáticamente

Artículo escrito por tedious_wings 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 *