Regresión lineal múltiple y predictores categóricos
0. Objetivo del práctico
El presente práctico tiene dos objetivos:
Aprender a estimar una regresión lineal múltiple en R con
lm()
.Aprender a interpretar modelos de regresión lineal múltiple con variables explicativas categóricas.
Materiales de la sesión
Tal como en la sesión anterior, en este práctico se utilizarán los datos sobre salarios utilizados en el capítulo 2 del libro Introducción a la econometría de J.W. Wooldridge (2015). En este caso, cargaremos los datos ya procesados.
data = readRDS(url("https://github.com/statistics-R/practico-7/raw/main/data.rds"))
Asimismo, la realización de este práctico requiere la carga de diversos paquetes que nos permitirán explorar los datos y presentar los modelos estimados.
if (!require("pacman")) install.packages("pacman") # Instalamos pacman en caso de necesitarlo
pacman::p_load(wooldridge, #Para descargar los datos
dplyr, #Para procesar datos
ggplot2,#Para graficar
sjmisc, #Para explorar los datos
sjPlot, #Para explorar los datos
texreg) #Para presentar el modelo de regresión estimado
1. Volviendo a explorar los datos
Volvemos a encontrarnos con:
- wage (
): indica el salario por hora en miles de pesos de cada persona en los datos. - educ (
): indica el número de años de escolaridad de cada persona en los datos. - exper (
): indica los años de experiencia laboral de cada persona en los datos.
Sin embargo, ahora agregamos una variable categórica:
- rama (
) : actividad económica a la que se dedica la empresa donde trabaja.
Utilicemos frq()
de sjmisc
para explorar esta nueva variable. Podemos ver que casi el 50% de la muestra trabaja en comercio.
Las seleccionaremos utilizando la función select()
de dplyr
, a modo de trabajar con un set de datos más acotado
Recordemos la distribución de estas variables:
Podríamos preguntarnos cómo se distribuyen los salarios por hora en cada actividad económica
Vemos que Información y comunicaciones presenta el promedio más alto (6.86 mil), seguido por Manufactura (6.65 mil) y Construcción (5.96 mil). Por su parte, los promedios más bajos corresponden a Servicios (4.34 mil) y Comercio (4.79 mil).
En este caso, la variable por explicar sigue siendo wage (
Pero ¿qué es una categoría de referencia? Por defecto, en nuestras variables categóricas corresponde al primer valor de la variable, siguiendo una prioridad alfanumérica. Ello quiere decir que las categorías que inicien con el número “1” tiene más prioridad que las que inician con el número “4”, así como que las categorías que inician con la letra “a” tienen una mayor prioridad frente a las que inician con “d”. Podemos utilizar la función factor()
para modificar manualmente el orden de nuestras variables categóricas (cuyo tipo de dato debe ser factor
). A modo de ejemplo, crearemos
- Una nueva variable que tenga como categoría de referencia el valor 3. Info. y com., utilizando la función
ref_lvl()
desjmisc
, y - Una nueva variable factor cuyos niveles sigan el promedio de salarios por hora para cada categoría de actividad económica:
#Transformamos nuestra variable en factor
data$rama = factor(data$rama)
#Creamos una nueva variable con 3. Info y com. como categoría de referencia
data$rama_info = ref_lvl(data$rama, lvl = "3. Info. y com.")
#Y otra con la que ordenamos las categorías de forma ascendente a partir de los promedios en wage
data$rama_wage = factor(data$rama, levels = c("5. Servicios",
"4. Comercio",
"1. Construccion",
"2. Manufactura",
"3. Info. y com."))
Un modelo de regresión lineal múltiple con predictores categóricos se puede expresar a partir de la siguiente ecuación:
: Corresponde al intercepto de regresión. : Corresponde a la pendiente estimada para la función de regresión lineal de los salarios por hora ( ) sobre los años de escolaridad ( ). Así, por cada unidad que aumente (en este caso, por cada año de escolaridad extra), el valor estimado para los salarios por hora aumentará o disminuirá en . : Corresponde a la pendiente estimada para la función de regresión lineal de los salarios por hora ( ) sobre los años de experiencia laboral ( ). Así, por cada unidad que aumente (en este caso, por cada año de experiencia laboral), el valor estimado para los salarios por hora aumentará o disminuirá en . , …, : Corresponde al coeficiente de regresión estimado para cada una de las categorías de nuestra variable explicativa categórica. En este caso tenemos 5 categorías, de modo que estimaremos 4 coeficientes, que en este caso reflejarán las diferencias promedio de los salarios estimados para quienes se desempeñan en construcción, manufactura, información y comunicaciones, comercio y servicios. Estos, sumados al intercepto , indican las diferencias promedio estimadas para cada una de las categorías de actividad económica.
En este caso, lo esperable es que los valores predichos para información y comunicaciones sean mayores que aquellos estimados para el resto de categorías ocupacionales, siguiendo lo presentado en el gráfico de barras anteriormente presentado.
2. Estimando modelos de regresión lineal múltiple con predictores categóricos con lm()
Como vimos en el práctico anterior, para agregar una nueva variable explicativa a nuestros modelos sólo basta con agregar + variable
en nuestro primer argumento. Estimaremos también los modelos con distintas categorías de referencia para compararlos:
m1 = lm(wage ~ educ + exper +rama, data = data)
m2 = lm(wage ~ educ + exper +rama_info, data = data)
m3 = lm(wage ~ educ + exper + rama_wage, data = data)
#Estimamos también los modelos anteriores para comparar ajustes
m4 = lm(wage ~ educ, data = data)
m5 = lm(wage ~ exper, data = data)
m6 = lm(wage ~ educ + exper, data = data)
##
## ================================================================================================
## Modelo 1 Modelo 2 Modelo 3 Modelo 4 Modelo 5 Modelo 6
## ------------------------------------------------------------------------------------------------
## (Intercept) -0.31 -0.63 -2.45 ** 0.13 4.91 *** -1.83 *
## (0.97) (1.11) (0.93) (0.77) (0.29) (0.87)
## educ 0.48 *** 0.48 *** 0.48 *** 0.42 *** 0.50 ***
## (0.06) (0.06) (0.06) (0.06) (0.06)
## exper 0.05 *** 0.05 *** 0.05 *** 0.02 0.06 ***
## (0.01) (0.01) (0.01) (0.01) (0.01)
## rama2. Manufactura -0.18
## (0.70)
## rama3. Info. y com. -0.33
## (0.85)
## rama4. Comercio -1.64 **
## (0.63)
## rama5. Servicios -2.14 **
## (0.71)
## rama_info1. Construccion 0.33
## (0.85)
## rama_info2. Manufactura 0.14
## (0.71)
## rama_info4. Comercio -1.31 *
## (0.65)
## rama_info5. Servicios -1.82 *
## (0.72)
## rama_wage4. Comercio 0.50
## (0.46)
## rama_wage1. Construccion 2.14 **
## (0.71)
## rama_wage2. Manufactura 1.96 ***
## (0.54)
## rama_wage3. Info. y com. 1.82 *
## (0.72)
## ------------------------------------------------------------------------------------------------
## R^2 0.24 0.24 0.24 0.13 0.01 0.18
## Adj. R^2 0.23 0.23 0.23 0.13 0.01 0.18
## Num. obs. 311 311 311 311 311 311
## ================================================================================================
## *** p < 0.001; ** p < 0.01; * p < 0.05
Lo primero que hay que observar es que, en los tres modelos,
Asimismo, podemos ver que la inclusión de este predictor categórico permite aumentar el porcentaje de la varianza explicada de
3. Predicción
Utilicemos el modelo 1 para nuestros análisis
En base a esa información, podemos señalar que
- Manteniendo constantes los años de escolaridad y de experiencia laboral se espera que, en promedio, los valores predichos para quienes trabajan en construcción sean los más altos en la muestra. Esto, pues todos los coeficientes de regresión son negativos.
- Así, en promedio, una persona que trabaje en manufactura gane .18 mil pesos por hora menos que alguien que se emplea en construcción, manteniendo constante el resto de factores.
- Del mismo modo, es espera que una persona que trabaja en servicios reciba una remuneración -2.14 mil pesos inferior a alguien que labora en el sector de construcción.
Como pueden ver, la manera en que ha quedado especificado el modelo permite analizar inmediatamente las diferencias promedio entre la categoría de referencia (en este caso, construcción) respecto de las
- Construcción =
- Manufactura =
- Información y comunicaciones =
- Comercio =
- Servicios =
Como podemos ver, los valores esperados indicarían que quienes trabajan en servicios debiese tender a presentar, en promedio, salarios por hora inferiores al resto de actividades económicas. Asimismo, se espera que quienes se desempeñan obtengan, en promedio, salarios