Regresión con Variables Categóricas o “Dummy Variables”

En un modelo de regresión múltiple de mínimos cuadrados ordinarios (OLS), la variable dependiente es una variable numérica o cuantitativa. Sin embargo, las variables independientes pueden ser tanto numéricas como categóricas.

Las variables categóricas pueden ser:

Cuando se incluye una variable categórica en un modelo de regresión, se la representa a través de una o más “dummy variables”, dependiendo del número de categorías que tenga.

Ejemplo: Ingreso mensual de trabajadores dependientes

Para explorar este tema, vamos a utilizar la información del Módulo 5 de la ENAHO 2017 sobre empleo e ingresos de los miembros del hogar. Específicamente utilizaremos los datos correspondientes a la ocupación principal de los trabajadores dependientes.

En PAIDEIA pueden descargar las bases de datos.

En este ejemplo, tomaremos como variable depediente (Y) el ingreso mensual bruto del trabajador dependiente en su ocupación principal. Nuestra primera variable independiente será el nivel educativo del trabajador.

\[\widehat{ing\_mes} = b_0 + {b_1}nivedu\]

Primer modelo de regresión

\[\widehat{ing\_mes} = b_0 + {b_1}nivedu\]

## 
## ==========================================
##                   Dependent variable:     
##              -----------------------------
##                         ing_mes           
##                         mod1.0            
## ------------------------------------------
## nivedu                125.331***          
##                         (1.560)           
##                                           
## Constant              200.706***          
##                        (10.756)           
##                                           
## ------------------------------------------
## Observations            23,837            
## R2                       0.213            
## Adjusted R2              0.213            
## ==========================================
## Note:        *p<0.05; **p<0.01; ***p<0.001

Ampliando el modelo

El modelo mod1.0 tiene un \(R^2\) algo bajo. Veamos si es posible incluir alguna variable independiente adicional.

Sabemos que existe una brecha de género en los ingresos de los trabajadores. Veamos si el ingreso del trabajador tambiém tiene algún tipo de asociación con el sexo del mismo.

En el siguiente diagrama de dispersión vemos la relación entre el ingreso y el nivel educativo, diferenciando (por color) a los hombres y las mujeres. La línea representa nuestro modelo mod1.0

Diagrama de dispersión

Incluyendo una variable dicotómica en el modelo de regresión (1)

En el diagrama anterior se observa que los puntos rojos, que represetan a los hombres, son más frecuentes encima de la recta de regresión que por debajo de ella, lo que indicaría que los hombres tienden a tener ingresos mayores a los de las mujeres.

Vamos a introducir en el modelo al sexo como una variable categórica - dicotómica con efecto independiente aditivo:

\[\widehat{ing\_mes} = b_0 + {b_1}nivedu + {b_2}sexo\] En este caso, la variable sexo será procesada de la siguiente manera: \(sexo = 0\): Hombres; \(sexo = 1\): Mujeres.

Incluyendo una variable dicotómica en el modelo de regresión (2)

En tal sentido si el trabajador es un hombre (\(sexo = 0\)), el modelo de regresión sería:

Por otro lado si el trabajador es una mujer (\(sexo = 1\)), entonces el modelo de regresión sería:

Como se aprecia, en este caso, la variable sexo afecta la intersección del modelo.

Cálculo del modelo con la variable categórica dicotómica

## 
## ===========================================
##                   Dependent variable:      
##              ------------------------------
##                         ing_mes            
##                  mod1.0          mod1.1    
## -------------------------------------------
## nivedu         125.331***      131.040***  
##                  (1.560)        (1.534)    
##                                            
## sexoMujer                     -231.318***  
##                                 (6.885)    
##                                            
## Constant       200.706***      260.620***  
##                 (10.756)        (10.661)   
##                                            
## -------------------------------------------
## Observations     23,837          23,837    
## R2                0.213          0.249     
## Adjusted R2       0.213          0.249     
## ===========================================
## Note:         *p<0.05; **p<0.01; ***p<0.001

Interpretación del modelo

A partir del modelo anterior tendríamos:

Si sexo = Hombre

Si sexo = Mujer

Como se aprecia, en el caso de las mujeres se aprecia una brecha de -231.32 soles de ingreso mensual respecto de los hombres.

Interpretación del modelo (2)

Por ejemplo, de acuerdo con el modelo, podemos comparar los ingresos de hombres y mujeres, unos con secundaria completa y otros con universitaria completa. En estos casos los ingresos mensuales esperados serían:

# Hombre con secundaria completa:
new.data1 <- data.frame(nivedu = c(6), sexo = "Hombre")
predict(mod1.1, newdata = new.data1)
##        1 
## 1046.861
# Mujer con secundaria completa:
new.data2 <- data.frame(nivedu = c(6), sexo = "Mujer")
predict(mod1.1, newdata = new.data2)
##        1 
## 815.5423
# Hombre con universitaria completa:
new.data3 <- data.frame(nivedu = c(10), sexo = "Hombre")
predict(mod1.1, newdata = new.data3)
##        1 
## 1571.021
# Mujer con universitaria completa:
new.data4 <- data.frame(nivedu = c(10), sexo = "Mujer")
predict(mod1.1, newdata = new.data4)
##        1 
## 1339.703

Representación gráfica

Modelo con variables categóricas politómicas

En el caso de un modelo con variables categóricas politómicas se procede de manera similar. Por ejemplo si vamos a incluir la variable región como variable dependiente, tendríamos:

Ello daría como resultado 4 ecuaciones, una por región, tomando en consideración la región “Costa” como región de referencia.

Modelo con región

## 
## ===============================================
##                      Dependent variable:       
##               ---------------------------------
##                            ing_mes             
##                 mod1.0     mod1.1      mod1.2  
## -----------------------------------------------
## nivedu        125.331*** 131.040***  122.258***
##                (1.560)     (1.534)    (1.558)  
##                                                
## sexoMujer                -231.318***           
##                            (6.885)             
##                                                
## regionSierra                         -90.013***
##                                       (8.539)  
##                                                
## regionSelva                          -48.851***
##                                       (9.934)  
##                                                
## regionLima M.                        123.917***
##                                       (10.096) 
##                                                
## Constant      200.706*** 260.620***  233.926***
##                (10.756)   (10.661)    (11.624) 
##                                                
## -----------------------------------------------
## Observations    23,837     23,837      23,837  
## R2              0.213       0.249      0.227   
## Adjusted R2     0.213       0.249      0.227   
## ===============================================
## Note:             *p<0.05; **p<0.01; ***p<0.001

Modelo con región: ecuaciones

Representación gráfica

Estimación de ingreso para una persona con secundaria completa

# Costa con secundaria completa:
new.data1 <- data.frame(nivedu = c(6), region = "Costa")
predict(mod1.2, newdata = new.data1)
##        1 
## 967.4745
# Sierra con secundaria completa:
new.data2 <- data.frame(nivedu = c(6), region = "Sierra")
predict(mod1.2, newdata = new.data2)
##        1 
## 877.4618
# Selva con secundaria completa::
new.data3 <- data.frame(nivedu = c(10), region = "Selva")
predict(mod1.2, newdata = new.data3)
##        1 
## 1407.656
# Lima con secundaria completa::
new.data3 <- data.frame(nivedu = c(10), region = "Lima M.")
predict(mod1.2, newdata = new.data3)
##        1 
## 1580.424

Cambiar la categoría de referencia de una variable politómica

En el modelo mod1.2, la categoría de referencia es la “Costa”. Podemos cambiar de categoría de referencia para las comparaciones sin afectar los estadísticos del modelo. En el modelo mod1.3b la categoría de referencia es “Lima Metropolitana”

Modelo mod1.3b

## 
## ===============================================
##                      Dependent variable:       
##               ---------------------------------
##                            ing_mes             
##                 mod1.0     mod1.2     mod1.2b  
## -----------------------------------------------
## nivedu        125.331*** 122.258*** 122.258*** 
##                (1.560)    (1.558)     (1.558)  
##                                                
## regionCosta                         -123.917***
##                                      (10.096)  
##                                                
## regionSierra             -90.013*** -213.930***
##                           (8.539)    (10.612)  
##                                                
## regionSelva              -48.851*** -172.769***
##                           (9.934)    (11.801)  
##                                                
## regionLima M.            123.917***            
##                           (10.096)             
##                                                
## Constant      200.706*** 233.926*** 357.843*** 
##                (10.756)   (11.624)   (13.780)  
##                                                
## -----------------------------------------------
## Observations    23,837     23,837     23,837   
## R2              0.213      0.227       0.227   
## Adjusted R2     0.213      0.227       0.227   
## ===============================================
## Note:             *p<0.05; **p<0.01; ***p<0.001

Modelo incluyendo dos variables categóricas

## 
## ===========================================================
##                            Dependent variable:             
##               ---------------------------------------------
##                                  ing_mes                   
##                 mod1.0     mod1.1      mod1.2     mod1.3   
## -----------------------------------------------------------
## nivedu        125.331*** 131.040***  122.258*** 127.946*** 
##                (1.560)     (1.534)    (1.558)     (1.529)  
##                                                            
## sexoMujer                -231.318***            -234.403***
##                            (6.885)                (6.819)  
##                                                            
## regionSierra                         -90.013*** -90.809*** 
##                                       (8.539)     (8.335)  
##                                                            
## regionSelva                          -48.851*** -47.417*** 
##                                       (9.934)     (9.697)  
##                                                            
## regionLima M.                        123.917*** 130.899*** 
##                                       (10.096)    (9.857)  
##                                                            
## Constant      200.706*** 260.620***  233.926*** 294.083*** 
##                (10.756)   (10.661)    (11.624)   (11.481)  
##                                                            
## -----------------------------------------------------------
## Observations    23,837     23,837      23,837     23,837   
## R2              0.213       0.249      0.227       0.264   
## Adjusted R2     0.213       0.249      0.227       0.263   
## ===========================================================
## Note:                         *p<0.05; **p<0.01; ***p<0.001

Modelo para una variable categórica con efecto interactivo

Supongamos que en vez de proponer que la variable sexo tiene un efecto aditivo en el ingreso, independiente respecto del nivel educativo, trabajemos con la hipótesis de que existe una interacción entre la variable sexo y el nivel educativo.

En este segundo caso, la hipótesis plantea que el efecto de la educación en el ingreso será diferente según el sexo del trabajador, por lo tanto el coeficiente de la variable categórica afectaría la pendiente en vez de la constante de la ecuación.

Ecuaciones para efectos independientes e interactivos

En el caso de un efecto independiente, la ecuación que ya hemos visto es:

\[\widehat{ing\_mes} = b_0 + {b_1}nivedu + {b_2}Sexo\]

En el caso de un efecto interactivo, la ecuación sería:

\[\widehat{ing\_mes} = b_0 + {b_1}nivedu + {b_2}sexo*nivedu \]

Estimado de los coeficientes del modelo interactivo

## 
## ===================================================
##                          Dependent variable:       
##                   ---------------------------------
##                                ing_mes             
##                     mod1.0     mod1.1      mod1.4  
## ---------------------------------------------------
## nivedu            125.331*** 131.040***            
##                    (1.560)     (1.534)             
##                                                    
## sexoMujer                    -231.318***           
##                                (6.885)             
##                                                    
## nivedu:sexoHombre                        144.077***
##                                           (1.665)  
##                                                    
## nivedu:sexoMujer                         115.261***
##                                           (1.572)  
##                                                    
## Constant          200.706*** 260.620***  160.848***
##                    (10.756)   (10.661)    (10.662) 
##                                                    
## ---------------------------------------------------
## Observations        23,837     23,837      23,837  
## R2                  0.213       0.249      0.240   
## Adjusted R2         0.213       0.249      0.240   
## ===================================================
## Note:                 *p<0.05; **p<0.01; ***p<0.001

Representación gráfica

Modelos con efectos independientes e interactivos

Podemos estimar otro modelo de regresión que contenga ambos supuestos.

\[\widehat{ing\_mes} = b_0 + {b_1}nivedu + {b_2}sexo + {b_3}sexo*nivedu \]

Estimado de los modelos

## 
## ===============================================================
##                                Dependent variable:             
##                   ---------------------------------------------
##                                      ing_mes                   
##                     mod1.0     mod1.1      mod1.4     mod1.5   
## ---------------------------------------------------------------
## nivedu            125.331*** 131.040***             118.437*** 
##                    (1.560)     (1.534)                (2.141)  
##                                                                
## sexoMujer                    -231.318***            -401.049***
##                                (6.885)               (21.286)  
##                                                                
## nivedu:sexoHombre                        144.077***            
##                                           (1.665)              
##                                                                
## nivedu:sexoMujer                         115.261***  25.812*** 
##                                           (1.572)     (3.064)  
##                                                                
## Constant          200.706*** 260.620***  160.848*** 340.286*** 
##                    (10.756)   (10.661)    (10.662)   (14.238)  
##                                                                
## ---------------------------------------------------------------
## Observations        23,837     23,837      23,837     23,837   
## R2                  0.213       0.249      0.240       0.251   
## Adjusted R2         0.213       0.249      0.240       0.251   
## ===============================================================
## Note:                             *p<0.05; **p<0.01; ***p<0.001

Representación gráfica

Sintaxis utilizada en esta presentación

# Paquetes y datos

library(stargazer)
library(ggplot2)
load("trabaj_dep.rda")

# Modelos de regresión

mod1.0 <- lm(ing_mes ~ nivedu, data = trabaj_dep)
mod1.1 <- lm(ing_mes ~ nivedu + sexo, data = trabaj_dep)
mod1.2 <- lm(ing_mes ~ nivedu + region, data = trabaj_dep)
mod1.3 <- lm(ing_mes ~ nivedu + sexo + region, data = trabaj_dep)
mod1.4 <- lm(ing_mes ~ nivedu : sexo, data = trabaj_dep)
mod1.5 <- lm(ing_mes ~ nivedu * sexo, data = trabaj_dep)

# Cambiar la categoría de referencia para modelo mod1.2b
trabaj_dep$region <- relevel(trabaj_dep$region, ref = "Lima M.")
mod1.2b <- lm(ing_mes ~ nivedu + region, data = trabaj_dep)
trabaj_dep$region <- relevel(trabaj_dep$region, ref = "Costa")

# Tabla con los modelos
stargazer(mod1.0, mod1.1, mod1.2, mod1.3, mod1.3b, mod1.4, mod1.5, type = "text",
          omit.stat=c("ser","f"), 
          model.numbers = FALSE, object.names = TRUE,
          star.cutoffs = c(0.05, 0.01, 0.001))

# Gráficos de los modelos

fit1.0 <- predict(mod1.0)
dataf.0 <- cbind(trabaj_dep, fit1.0)

ggplot(data = dataf.0, aes(x=nivedu, y=ing_mes, color = sexo)) +
  geom_point() + geom_line(aes(y=fit1.0))

fit1.1 <- predict(mod1.1)
dataf.1 <- cbind(trabaj_dep, fit1.1)
ggplot(dataf.1, aes(x=nivedu, y=ing_mes, color = sexo)) +
  geom_point() + geom_line(aes(y=fit1.1))

fit1.2 <- predict(mod1.2)
dataf2 <- cbind(trabaj_dep, fit1.2)
ggplot(dataf2, aes(x=nivedu, y=ing_mes, color = region)) +
  geom_point() + geom_line(aes(y=fit1.2))

fit1.4 <- predict(mod1.4)
dataf4 <- cbind(trabaj_dep, fit1.4)
ggplot(dataf4, aes(x=nivedu, y=ing_mes, color = sexo)) +
  geom_point() + geom_line(aes(y=fit1.4))

fit1.5 <- predict(mod1.5)
dataf5 <- cbind(trabaj_dep, fit1.5)
ggplot(dataf5, aes(x=nivedu, y=ing_mes, color = sexo)) +
  geom_point() + geom_line(aes(y=fit1.5))