Regresión lineal con variables categóricas II

César Córdova

4/5/2021

Introducción

En esta lección utilizaremos los datos de la encuesta del observatorio Lima Cómo Vamos de año 2018 que evalúa sobre distintas práctica de responsabilidad social, cultuta ciudadana y participación política.

La base de datos, ficha técnica y cuestionario pueden descargase desde el siguiente enlace. (1) Copie el vínculo, (2) abra una ventana nueva y (3) péguelo en la barra de direcciones:

https://www.dropbox.com/sh/avxc6eolvrwje51/AAC8u1VqrimDqZEx33n6U6sra?dl=0

Participación política. El nivel de participación política se midió con una escala de participación política que se creó a partir del inventario de prácticas políticas contenido en la pregunta 67 del cuestionario del estudio de Lima Cómo Vamos 2018. La consistencia de la escala resúltó aceptable (Alpha de Crobach > .07).

Cargar paquetes


library(foreign)
library(stargazer)

Cargar data de SPSS (“sav”)


lcv18 <- read.spss("IOP_0718_01_01_D.sav", to.data.frame = T , use.value.labels = T)

Exploración de data


names(lcv18)[1:20]
##  [1] "INDICE"        "SERIE"         "NRO"           "SEXO"         
##  [5] "ANIOS"         "EDAD"          "ESTRATOS_IOP"  "ESTRATOS_IOP1"
##  [9] "NSE_IOP"       "NSE_IOP1"      "UBIGEO"        "NSE1"         
## [13] "NSE2A"         "NSE2B"         "NSE2C"         "NSE2D"        
## [17] "NSE2E"         "NSE2F"         "NSE3_1"        "NSE3_2"

Ejercicio 1: Factores de la participación política en Lima

El objetivo del primer ejercicio es calcular un modelo de regresión lineal múltiple para dar cuenta del nivel de participación política de los ciudadanos limeños.

En este caso, vamos a partir de un modelo 1 que considera como variables explicativas del modelo un primer grupo factores sociodemográficos: edad (“EDAD”), sexo (“SEXO”).

Luego, vamos a calcular un modelo 2 que, además de las variables del primer grupo, incluya al nivel educativo (DG1_1).

Cálculo de modelos 1 y 2


modelo1 <- lm(PP ~ ANIOS + SEXO, lcv18)

Nota: antes de introducir la variable de nivel educativo (“DG1_1”), debemos hacer algunos arreglos:


table(lcv18$DG1_1)
## 
##                     Ninguno / Sin instrucción/ Sin educación 
##                                                           10 
##                                Inicial o primaria incompleta 
##                                                           35 
##                                            Primaria completa 
##                                                           99 
##                                        Secundaria Incompleta 
##                                                          179 
##                                          Secundaria Completa 
##                                                          691 
## Superior No Universitaria Incompleta/Sup. Técnica Incompleta 
##                                                          136 
##     Superior No Universitaria Completa/Sup. Técnica Completa 
##                                                          283 
##                            Superior Universitaria Incompleta 
##                                                          173 
##                              Superior Universitaria Completa 
##                                                          297 
##                                      Postgrado Universitario 
##                                                           17

Antes que nada… debemos de hacer la transformación a un objeto numérico:


lcv18$nivedu.n <- as.numeric(lcv18$DG1_1)

Corroboramos que no exista error y que las frecuencias “cuadren” con la tabla antes de la transformación:


table(lcv18$nivedu.n)
## 
##   1   2   3   4   5   6   7   8   9  10 
##  10  35  99 179 691 136 283 173 297  17

Finalmente, podemos calcular un nuevo modelo con la variable de nivel educativo:


modelo2 <- lm(PP ~ ANIOS + SEXO + nivedu.n, lcv18)

Comparación de modelos


stargazer(modelo1, modelo2, type = "text",
          omit.stat=c("ser","f"), 
          model.numbers = FALSE, object.names = TRUE,
          star.cutoffs = c(0.05, 0.01, 0.001))
## 
## ===========================================
##                   Dependent variable:      
##              ------------------------------
##                            PP              
##                  modelo1        modelo2    
## -------------------------------------------
## ANIOS           -0.071***      -0.066***   
##                  (0.019)        (0.020)    
##                                            
## SEXOMujer        -1.187          -1.139    
##                  (0.636)        (0.636)    
##                                            
## nivedu.n                         0.248     
##                                 (0.168)    
##                                            
## Constant        54.489***      52.766***   
##                  (0.901)        (1.475)    
##                                            
## -------------------------------------------
## Observations      1,604          1,604     
## R2                0.010          0.012     
## Adjusted R2       0.009          0.010     
## ===========================================
## Note:         *p<0.05; **p<0.01; ***p<0.001

Preguntas

Modelo con “efecto” interactivo e independientes


modelo4 <- lm(PP ~ ANIOS*nivedu.n, lcv18)

Modelo con efecto interactivo sin efectos independientes


modelo5 <- lm(PP ~ ANIOS:nivedu.n, lcv18)

Formato


stargazer( modelo4, modelo5, type = "text",
          omit.stat=c("ser","f"), 
          model.numbers = FALSE, object.names = TRUE,
          star.cutoffs = c(0.05, 0.01, 0.001))
## 
## =============================================
##                     Dependent variable:      
##                ------------------------------
##                              PP              
##                    modelo4        modelo5    
## ---------------------------------------------
## ANIOS             -0.176**                   
##                    (0.058)                   
##                                              
## nivedu.n           -0.585                    
##                    (0.453)                   
##                                              
## ANIOS:nivedu.n     0.019*          -0.002    
##                    (0.009)        (0.003)    
##                                              
## Constant          57.126***      51.544***   
##                    (2.891)        (0.696)    
##                                              
## ---------------------------------------------
## Observations        1,604          1,604     
## R2                  0.012          0.0004    
## Adjusted R2         0.010         -0.0002    
## =============================================
## Note:           *p<0.05; **p<0.01; ***p<0.001

Preguntas


Ejercicio 2: calculando un nuevo modelo

Para el ejercicio propuesto a la clase, vamos a especificar mejor el modelo de regresión lineal múltiple de la participación política.

En este caso, vamos a incluir a las esperiencias de victimización por acoso sexual callejero (“VS5D”/P28G) y el estrato de residencia (“ESTRATOS_IOP”) (modelo 6).

Asimismo, también vamos a calcular un modelo con efecto interactivo e independiente (modelo 7).


modelo6 <- lm(PP ~ ESTRATOS_IOP + VS5D, lcv18)

modelo7 <- lm(PP ~ ESTRATOS_IOP + VS5D + ESTRATOS_IOP*VS5D , lcv18)

stargazer(modelo4, modelo6, modelo7, type = "text",
          omit.stat=c("ser","f"), 
          model.numbers = FALSE, object.names = TRUE,
          star.cutoffs = c(0.05, 0.01, 0.001))
## 
## =============================================================
##                                     Dependent variable:      
##                               -------------------------------
##                                             PP               
##                                modelo4    modelo6    modelo7 
## -------------------------------------------------------------
## ANIOS                          -0.176**                      
##                                (0.058)                       
##                                                              
## nivedu.n                        -0.585                       
##                                (0.453)                       
##                                                              
## ANIOS:nivedu.n                  0.019*                       
##                                (0.009)                       
##                                                              
## ESTRATOS_IOPLima Este                     3.131***    0.874  
##                                           (0.848)    (1.043) 
##                                                              
## ESTRATOS_IOPLima Norte                    4.281***  3.850*** 
##                                           (0.877)    (1.048) 
##                                                              
## ESTRATOS_IOPLima Sur                       0.758      2.189  
##                                           (0.983)    (1.274) 
##                                                              
## VS5DSí                                    2.766***    0.731  
##                                           (0.657)    (1.396) 
##                                                              
## ESTRATOS_IOPLima Este:VS5DSí                         5.883** 
##                                                      (1.800) 
##                                                              
## ESTRATOS_IOPLima Norte:VS5DSí                         1.751  
##                                                      (1.901) 
##                                                              
## ESTRATOS_IOPLima Sur:VS5DSí                          -1.877  
##                                                      (2.041) 
##                                                              
## Constant                      57.126***  47.805***  48.337***
##                                (2.891)    (0.640)    (0.714) 
##                                                              
## -------------------------------------------------------------
## Observations                    1,604      1,603      1,603  
## R2                              0.012      0.031      0.043  
## Adjusted R2                     0.010      0.029      0.039  
## =============================================================
## Note:                           *p<0.05; **p<0.01; ***p<0.001


Ejercicio 3: Construcción de índice

El rol de la eficacia política

Existe algunos items dentro del cuestionario que pertenecen al mismo constructo. Este es el caso de los items de la pregunta 66 sobre participación ciudadana. Todos estos items están referidos al constructo denominado eficacia política (capacidad del ciudadano para influir en las autoridades).

En este caso, vamos a tomar solo dos de los items de la pregunta 66, dado que no requieren ser revertidos: “PC4C”/P66C y “P4CE”/P66E.


##install.packages("psych", dependencies=T)

library(psych)

Para saber si estos dos items pueden formar parte de la una escala, podemos realizar un análisis de consistencia.

Primero, hay que convertir los objetos de factor a numérico y los colocamos en un dataframe.


table(lcv18$PC4C)
## 
## Muy en desacuerdo                 2                 3                 4 
##               123               369               671               556 
##    Muy de acuerdo 
##               148
table(lcv18$PC4E)
## 
## Muy en desacuerdo                 2                 3                 4 
##               113               326               636               531 
##    Muy de acuerdo 
##               174
PC4C.n <- as.numeric(lcv18$PC4C)

PC4E.n <- as.numeric(lcv18$PC4E)


table(PC4C.n)
## PC4C.n
##   1   2   3   4   5 
## 123 369 671 556 148
table(PC4E.n)
## PC4E.n
##   1   2   3   4   5 
## 113 326 636 531 174

items <-  data.frame(PC4C.n, PC4E.n)

Ahora, calculamos la consistencia de la escala con la función “alpha” que calcula el Alpha de Cronbach:


alpha(items)
## 
## Reliability analysis   
## Call: alpha(x = items)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##        0.6       0.6    0.43      0.43 1.5 0.018  3.1 0.89     0.43
## 
##  lower alpha upper     95% confidence boundaries
## 0.57 0.6 0.64 
## 
##  Reliability if an item is dropped:
##        raw_alpha std.alpha G6(smc) average_r  S/N alpha se var.r med.r
## PC4C.n      0.43      0.43    0.19      0.43 0.76       NA     0  0.43
## PC4E.n      0.44      0.43    0.19      0.43 0.76       NA     0  0.43
## 
##  Item statistics 
##           n raw.r std.r r.cor r.drop mean sd
## PC4C.n 1867  0.86  0.85  0.56   0.43  3.1  1
## PC4E.n 1780  0.85  0.85  0.56   0.43  3.2  1
## 
## Non missing response frequency for each item
##           1    2    3   4    5 miss
## PC4C.n 0.07 0.20 0.36 0.3 0.08 0.03
## PC4E.n 0.06 0.18 0.36 0.3 0.10 0.07

Finalmente, calculamos el índice de eficacia política:


lcv18$EP <- (PC4C.n + PC4E.n)/2

Calculo de modelo final con eficacia política

modelo8 <- lm(PP ~ ESTRATOS_IOP  + ESTRATOS_IOP:VS5D + EP , lcv18)

stargazer(modelo4, modelo6, modelo7, modelo8, type = "text",
          omit.stat=c("ser","f"), 
          model.numbers = FALSE, object.names = TRUE,
          star.cutoffs = c(0.05, 0.01, 0.001))
## 
## ======================================================================
##                                          Dependent variable:          
##                                ---------------------------------------
##                                                  PP                   
##                                 modelo4   modelo6   modelo7   modelo8 
## ----------------------------------------------------------------------
## ANIOS                          -0.176**                               
##                                 (0.058)                               
##                                                                       
## nivedu.n                        -0.585                                
##                                 (0.453)                               
##                                                                       
## ANIOS:nivedu.n                  0.019*                                
##                                 (0.009)                               
##                                                                       
## ESTRATOS_IOPLima Este                    3.131***    0.874     1.039  
##                                           (0.848)   (1.043)   (1.016) 
##                                                                       
## ESTRATOS_IOPLima Norte                   4.281***  3.850***  5.703*** 
##                                           (0.877)   (1.048)   (1.045) 
##                                                                       
## ESTRATOS_IOPLima Sur                       0.758     2.189    3.770** 
##                                           (0.983)   (1.274)   (1.279) 
##                                                                       
## VS5DSí                                   2.766***    0.731            
##                                           (0.657)   (1.396)           
##                                                                       
## EP                                                           3.753*** 
##                                                               (0.351) 
##                                                                       
## ESTRATOS_IOPLima Centro:VS5DSí                                 1.589  
##                                                               (1.369) 
##                                                                       
## ESTRATOS_IOPLima Este:VS5DSí                        5.883**  6.231*** 
##                                                     (1.800)   (1.102) 
##                                                                       
## ESTRATOS_IOPLima Norte:VS5DSí                        1.751     1.134  
##                                                     (1.901)   (1.276) 
##                                                                       
## ESTRATOS_IOPLima Sur:VS5DSí                         -1.877    -1.364  
##                                                     (2.041)   (1.500) 
##                                                                       
## Constant                       57.126*** 47.805*** 48.337*** 35.982***
##                                 (2.891)   (0.640)   (0.714)   (1.335) 
##                                                                       
## ----------------------------------------------------------------------
## Observations                     1,604     1,603     1,603     1,504  
## R2                               0.012     0.031     0.043     0.121  
## Adjusted R2                      0.010     0.029     0.039     0.116  
## ======================================================================
## Note:                                    *p<0.05; **p<0.01; ***p<0.001

Ejercicio 4: Factores de la participación política en distintos estratos

— ¿Es posible que el modelo mejore su poder explicativo en alguno de los estratos de la ciudad de Lima? Compara “Lima norte” vs. “Lima Este”