1. UBIGEOS

Cargar el Módulo de Sumaria

library(foreign)

sumaria <- read.spss("Sumaria-2019.sav", to.data.frame = T)

Crear las variables para Dpto, Prov y Distrito a partir de los UBIGEOS

Los ubigeos del INEI pueden verse en el siguiente enlace: Ubigeos

Acá se usa el comando substr para “partir” y seleccionar porciones de un texto:

UBIGEO: DDPPdd (Departamento, provincia, distrito)

sumaria$dpto <- substr(sumaria$UBIGEO, 1,2)  # Selecciono los dos primeros caract de ubigeo

sumaria$prov <- substr(sumaria$UBIGEO, 3,4) # Selecciono los caracteres 3 y 4

sumaria$dist <- substr(sumaria$UBIGEO, 5,6) # Selecciono los caracteres 5 y 6

¿Cuántos hogares fueron encuestados en el distrito de San Miguel en Lima?

san.miguel <- subset(sumaria, dpto == "15" & prov == "01" & dist == "36")
 
table(san.miguel$dist)
## 
## 36 
## 81

La cantidad de hogares entrevistados por departamento

table(sumaria$dpto)
## 
##   01   02   03   04   05   06   07   08   09   10   11   12   13   14   15   16 
## 1229 1421  959 1560 1169 1442 1009 1278 1032 1277 1563 1571 1585 1428 4514 1468 
##   17   18   19   20   21   22   23   24   25 
##  642  971  889 1655 1202 1335 1348  854 1164

2. Cuántos hogares tienen computadora

Primero es cargar el módulo 18 que tiene esa información

modulo18 <- read.spss("Enaho01-2019-612.sav", to.data.frame = T)
names(modulo18)
##  [1] "AÑO"       "MES"       "NCONGLOME" "CONGLOME"  "VIVIENDA"  "HOGAR"    
##  [7] "UBIGEO"    "DOMINIO"   "ESTRATO"   "P612N"     "P612"      "P612A"    
## [13] "P612B"     "P612C"     "P612C1"    "P612G"     "P612H"     "TICUEST01"
## [19] "D612G"     "D612H"     "I612G"     "I612H"     "FACTOR07"

Vamos a utilizar el comando **xtabs* para hacer un cruce del tipo de equipo (P612N) según si tiene o no el equipo (P612), poderado por el factor de expansión, y expresamos la table en porcentajes. El resultado nos dice qué porcentaje (se lee en forma horizontal) de hogares tienen o no el equipo en cuestión:

prop.table(xtabs(FACTOR07 ~ P612N + P612, data = modulo18),1)*100
##                            P612
## P612N                               Si         No
##   Radio                     52.6582588 47.3417412
##   TV a color                79.4164799 20.5835201
##   TV blanco y negro          4.2257152 95.7742848
##   Equipo de sonido          33.3968086 66.6031914
##   DVD                       30.9639126 69.0360874
##   Video grabadora            0.6455429 99.3544571
##   Computadora/laptop        32.7249432 67.2750568
##   Plancha electrica         55.1520583 44.8479417
##   Licuadora                 64.8860310 35.1139690
##   Cocina a gas              89.1561631 10.8438369
##   Cocina a kerosene          0.2581895 99.7418105
##   Refrigeradora/congeladora 54.4664783 45.5335217
##   Lavadora de ropa          30.5004248 69.4995752
##   Horno microondas          19.2963378 80.7036622
##   Máquina de coser           8.0425056 91.9574944
##   Bicicleta                 16.0867228 83.9132772
##   Auto, camioneta           11.8155175 88.1844825
##   Motocicleta               10.6340100 89.3659900
##   Triciclo                   1.3594770 98.6405230
##   Mototaxi                   6.3949112 93.6050888
##   Camión                     0.4829961 99.5170039
##   Otro                      36.6316531 63.3683469
##   Otro_duplicated_23        16.4048975 83.5951025
##   Otro_duplicated_24         7.9068265 92.0931735
##   Otro_duplicated_25         3.4569921 96.5430079
##   Otro_duplicated_26         1.3517670 98.6482330

Luego vamos a calcular, entre los hogares que tienen equipamiento, en promedio cuántos de esos artefactos o equipos tienen (variable P612A). Se usa el comando ddply para hacer la tabla y el comando wtd.mean para calcular la media ponderada:

## Se cargan los paquetes necesarios

library(plyr)
library(Hmisc)

## Se pide la tabla

ddply(modulo18,~ P612N,summarise,  
      Media=wtd.mean(P612A,FACTOR07, na.rm=T))
##                        P612N    Media
## 1                      Radio 1.078380
## 2                 TV a color 1.446941
## 3          TV blanco y negro 1.040610
## 4           Equipo de sonido 1.042330
## 5                        DVD 1.060643
## 6            Video grabadora 1.049426
## 7         Computadora/laptop 1.318997
## 8          Plancha electrica 1.057437
## 9                  Licuadora 1.047655
## 10              Cocina a gas 1.052143
## 11         Cocina a kerosene 1.182066
## 12 Refrigeradora/congeladora 1.052599
## 13          Lavadora de ropa 1.019082
## 14          Horno microondas 1.015621
## 15          Máquina de coser 1.172158
## 16                 Bicicleta 1.249001
## 17           Auto, camioneta 1.129240
## 18               Motocicleta 1.143126
## 19                  Triciclo 1.067950
## 20                  Mototaxi 1.062512
## 21                    Camión 1.090364
## 22                      Otro 1.055387
## 23        Otro_duplicated_23 1.074695
## 24        Otro_duplicated_24 1.071939
## 25        Otro_duplicated_25 1.075623
## 26        Otro_duplicated_26 1.145481

Cruzar el dato de equipamiento por el Estrato Social

Priemro veremos cuál es el porcentaje de hogares según estrato social

prop.table(xtabs(FACTOR07 ~ ESTRSOCIAL, data = sumaria))*100
## ESTRSOCIAL
##         A         B         C         D         E     Rural 
##  1.114613  3.294581  9.246276 29.496459 34.234541 22.613530

La variable estrato social está en el módulo de sumaria, entonces vamos a crear un subconjunto de datos de sumaria que tenga solo las variables que vamos a usar:

mis.vars <- c("CONGLOME", "VIVIENDA", "HOGAR", "ESTRSOCIAL", "POBREZA")

sum.reduc <- sumaria[mis.vars]

Ahora juntamos los módulos 18 con las variables escogidas de sumaria. Hacemos un merge que conserve TODOS los registros del módulo 18:

modulo18.v2 <- merge(modulo18, sum.reduc, by = c("CONGLOME", "VIVIENDA", "HOGAR"),
                     all.x = TRUE)

Tabla de el porcentaje de hogares que tienen equipamiento por estrato social:

library(reshape2)

tabla1 <- dcast(as.data.frame(xtabs(FACTOR07 ~ P612N + P612 + ESTRSOCIAL, 
                                    data = modulo18.v2)),
                P612N + ESTRSOCIAL ~ P612)

head(tabla1)
##   P612N ESTRSOCIAL         Si         No
## 1 Radio          A   37278.89   58645.73
## 2 Radio          B  123250.00  160938.16
## 3 Radio          C  378848.95  432614.38
## 4 Radio          D 1211251.18 1419766.66
## 5 Radio          E 1566225.61 1550894.08
## 6 Radio      Rural 1428432.30  643331.13

Calculo una columna de porcentaje de hogares que tienen equipamiento:

tabla1$pct.tiene <- tabla1$Si/(tabla1$Si + tabla1$No) * 100

head(tabla1)
##   P612N ESTRSOCIAL         Si         No pct.tiene
## 1 Radio          A   37278.89   58645.73  38.86269
## 2 Radio          B  123250.00  160938.16  43.36915
## 3 Radio          C  378848.95  432614.38  46.68713
## 4 Radio          D 1211251.18 1419766.66  46.03736
## 5 Radio          E 1566225.61 1550894.08  50.24592
## 6 Radio      Rural 1428432.30  643331.13  68.94765

Selecciono la variable equipo, estrato social y el pct que tiene el equipo

tabla1.2 <- tabla1[, c(1, 2, 5)]

Corvierto la tabla de formato angosto a formato ancho. La tabla me indica el porcentaje de hogares que tienen los equipos por estrato social:

tabla1.2 <- dcast(tabla1.2, P612N ~ ESTRSOCIAL)
tabla1.2
##                        P612N           A           B          C          D
## 1                      Radio 38.86268800 43.36915308 46.6871312 46.0373610
## 2                 TV a color 98.68461922 97.38494162 96.3282794 93.1373626
## 3          TV blanco y negro  0.03131108  0.77580464  1.9431591  3.1250140
## 4           Equipo de sonido 58.18671558 57.04237352 51.6901403 43.6838879
## 5                        DVD 43.02388849 35.80320929 36.2593251 35.1716858
## 6            Video grabadora  3.07868004  1.85856904  0.9886112  1.0384243
## 7         Computadora/laptop 79.52196537 67.90114723 57.6534420 45.6477098
## 8          Plancha electrica 91.45855626 87.60769906 82.9829814 74.3378725
## 9                  Licuadora 95.31660478 90.07739508 88.1027549 80.7682805
## 10              Cocina a gas 95.74694365 94.31876610 96.7714804 95.9651664
## 11         Cocina a kerosene  0.50493144  0.71836853  0.2107512  0.2441027
## 12 Refrigeradora/congeladora 95.75105863 91.55823157 86.3213861 73.9856753
## 13          Lavadora de ropa 84.89968782 76.34008923 62.2552607 47.2115421
## 14          Horno microondas 72.03339434 62.83605244 43.8379763 29.2148394
## 15          Máquina de coser 14.74530597 13.88458868 13.2637874 10.1938908
## 16                 Bicicleta 17.15564321 18.91810913 17.7891912 17.3770561
## 17           Auto, camioneta 47.57866943 30.75685083 22.8146174 14.8553470
## 18               Motocicleta  1.58501084  2.94899262  3.6926802  7.6612031
## 19                  Triciclo  0.00000000  0.05094995  0.5093615  1.0682459
## 20                  Mototaxi  0.06862539  0.57049283  2.4054940  4.7713009
## 21                    Camión  0.48558360  0.02358566  0.2391981  0.4840800
## 22                      Otro 79.49006937 75.12386618 61.0256728 51.2310622
## 23        Otro_duplicated_23 51.50908995 45.63916743 33.1252813 23.8011737
## 24        Otro_duplicated_24 34.45141803 26.97702981 19.0439289 11.4415180
## 25        Otro_duplicated_25 16.66845522 13.10909377  9.1935333  5.2061589
## 26        Otro_duplicated_26  6.20015258  5.90122399  4.0589479  1.9322027
##             E       Rural
## 1  50.2459245 68.94765469
## 2  83.2189263 46.28982820
## 3   5.0884354  5.88697792
## 4  32.5373690 10.06951568
## 5  31.8613018 20.97380082
## 6   0.4149584  0.08011578
## 7  28.1537834  6.43555799
## 8  54.3644745 14.93839571
## 9  66.4323769 28.43192898
## 10 92.8820547 70.90717844
## 11  0.2923475  0.16871793
## 12 51.8382508 14.15628203
## 13 20.9287684  2.43522608
## 14 10.9418521  1.24373796
## 15  6.6300553  4.27873168
## 16 17.9511243 10.53824865
## 17  8.9170080  3.75394043
## 18 13.5053390 14.28108639
## 19  2.0783306  1.22316518
## 20 10.9320294  4.28480098
## 21  0.6327063  0.41475846
## 22 30.4876889 10.51627035
## 23 11.3583696  2.42044809
## 24  4.4250971  0.44939939
## 25  1.4359398  0.09389715
## 26  0.4736765  0.02691343

3. ¿Cuáles son los principales problemas del país?

Cargamos la base de datos del módulo 85: Gobernabilidad, democracia y transparencia

gobern <- read.spss("Enaho01B-2019-1.sav", to.data.frame = T)

Seleccionamos las variables acerca de los principales problemas del país: de la P2_1.01 hasta la P2_1.17.

Incluimos en la selección las variables que identifican al informante y el factor de expansión:

problemas1 <- gobern[, c(4:7, 202, 33:49)]

head(problemas1)
##   CONGLOME VIVIENDA HOGAR CODPERSO FAMIEGOB07       P2_1.01 P2_1.02
## 1   005009      041    11       02  189.08626          Pase    Pase
## 2   005009      056    11       01  174.89723 La corrupción    Pase
## 3   005009      084    11       01   94.54313          Pase    Pase
## 4   005009      098    11       01  189.08626 La corrupción    Pase
## 5   005015      018    11       04  199.32011          Pase    Pase
## 6   005015      030    11       01  265.76013 La corrupción    Pase
##              P2_1.03 P2_1.04 P2_1.05 P2_1.06 P2_1.07 P2_1.08 P2_1.09 P2_1.10
## 1               Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase
## 2               Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase
## 3               Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase
## 4               Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase
## 5 La falta de empleo    Pase    Pase    Pase    Pase    Pase    Pase    Pase
## 6               Pase    Pase    Pase    Pase    Pase    Pase    Pase    Pase
##   P2_1.11 P2_1.12 P2_1.13 P2_1.14      P2_1.15 P2_1.16 P2_1.17
## 1 Pobreza    Pase    Pase    Pase         Pase    Pase    Pase
## 2 Pobreza    Pase    Pase    Pase         Pase    Pase    Pase
## 3 Pobreza    Pase    Pase    Pase         Pase    Pase    Pase
## 4 Pobreza    Pase    Pase    Pase Delincuencia    Pase    Pase
## 5    Pase    Pase    Pase    Pase         Pase    Pase    Pase
## 6 Pobreza    Pase    Pase    Pase Delincuencia    Pase    Pase

Recodificamos las respuestas a los problemas

Vamos a uniformizar las respuestas a cada problema, convirtiendo las respuestas originales en 0 (Pase) y 1 (menciona el problema). De esta forma todas las variables de los problemas tendrán una misma estructura.

Primero convertimos las etiquetas originales de respuesta en números

library(dplyr)


problemas1 <- problemas1 %>%
  mutate_at(vars(6:22), as.numeric)

head(problemas1)
##   CONGLOME VIVIENDA HOGAR CODPERSO FAMIEGOB07 P2_1.01 P2_1.02 P2_1.03 P2_1.04
## 1   005009      041    11       02  189.08626       1       1       1       1
## 2   005009      056    11       01  174.89723       2       1       1       1
## 3   005009      084    11       01   94.54313       1       1       1       1
## 4   005009      098    11       01  189.08626       2       1       1       1
## 5   005015      018    11       04  199.32011       1       1       2       1
## 6   005015      030    11       01  265.76013       2       1       1       1
##   P2_1.05 P2_1.06 P2_1.07 P2_1.08 P2_1.09 P2_1.10 P2_1.11 P2_1.12 P2_1.13
## 1       1       1       1       1       1       1       2       1       1
## 2       1       1       1       1       1       1       2       1       1
## 3       1       1       1       1       1       1       2       1       1
## 4       1       1       1       1       1       1       2       1       1
## 5       1       1       1       1       1       1       1       1       1
## 6       1       1       1       1       1       1       2       1       1
##   P2_1.14 P2_1.15 P2_1.16 P2_1.17
## 1       1       1       1       1
## 2       1       1       1       1
## 3       1       1       1       1
## 4       1       2       1       1
## 5       1       1       1       1
## 6       1       2       1       1

Luego recodificamos todo en 0 y 1

problemas1 <- problemas1 %>%
  mutate_at(vars(6:22), funs(recode(., `1` = 0, `2` = 1, .default = NaN)))

Convertimos la base de datos ancha en una angosta

problemas <- melt(problemas1, id.vars = c("CONGLOME", "HOGAR", "VIVIENDA",
                                          "CODPERSO", "FAMIEGOB07"))

head(problemas)
##   CONGLOME HOGAR VIVIENDA CODPERSO FAMIEGOB07 variable value
## 1   005009    11      041       02  189.08626  P2_1.01     0
## 2   005009    11      056       01  174.89723  P2_1.01     1
## 3   005009    11      084       01   94.54313  P2_1.01     0
## 4   005009    11      098       01  189.08626  P2_1.01     1
## 5   005015    11      018       04  199.32011  P2_1.01     0
## 6   005015    11      030       01  265.76013  P2_1.01     1

Verificamos la distribución de frecuencias de las respuestas, recodificamos los NaN como NA y etiquetamos las respuestas:

table(problemas$value, exclude = NULL)
## 
##      0      1   <NA>    NaN 
## 456997  57767  71927    914
library(car)

problemas$rpta <- factor(car::recode(problemas$value, "0=0; 1=1; else = NA"), 
                         labels = c("No Mencionado", "Mencionado"))

Tabla de principales problemas del país:

prop.table(xtabs(FAMIEGOB07 ~ variable + rpta, data = problemas),1) * 100
##          rpta
## variable  No Mencionado  Mencionado
##   P2_1.01    38.4140373  61.5859627
##   P2_1.02    92.3213459   7.6786541
##   P2_1.03    87.2670391  12.7329609
##   P2_1.04    84.1791014  15.8208986
##   P2_1.05    92.7867197   7.2132803
##   P2_1.06    94.9340680   5.0659320
##   P2_1.07    98.6878852   1.3121148
##   P2_1.08    90.0659129   9.9340871
##   P2_1.09    98.1803440   1.8196560
##   P2_1.10    94.7467842   5.2532158
##   P2_1.11    79.2817883  20.7182117
##   P2_1.12    99.0025028   0.9974972
##   P2_1.13    96.5276801   3.4723199
##   P2_1.14    98.6574696   1.3425304
##   P2_1.15    58.4695127  41.5304873
##   P2_1.16    82.6840721  17.3159279
##   P2_1.17   100.0000000   0.0000000

Orden de prioridad de los problemas

Seleccionar las variables:

orden.problema <- gobern[, c(4:7, 202, 50:65)]

Convertimos el formato ancho en angosto:

orden.problema <- melt(orden.problema, id.vars = c("CONGLOME", "HOGAR", "VIVIENDA",
                                          "CODPERSO", "FAMIEGOB07"))

head(orden.problema)
##   CONGLOME HOGAR VIVIENDA CODPERSO FAMIEGOB07 variable value
## 1   005009    11      041       02  189.08626  P2_2.01    NA
## 2   005009    11      056       01  174.89723  P2_2.01     1
## 3   005009    11      084       01   94.54313  P2_2.01    NA
## 4   005009    11      098       01  189.08626  P2_2.01     1
## 5   005015    11      018       04  199.32011  P2_2.01    NA
## 6   005015    11      030       01  265.76013  P2_2.01     1

Calculamos el orden promedio de cada problema: A menor valor más prioridad

ddply(orden.problema,~ variable,summarise,  
      Orden=wtd.mean(value,FAMIEGOB07, na.rm=T))
##    variable    Orden
## 1   P2_2.01 1.468957
## 2   P2_2.02 2.058167
## 3   P2_2.03 2.175091
## 4   P2_2.04 2.119936
## 5   P2_2.05 2.267396
## 6   P2_2.06 2.350662
## 7   P2_2.07 2.626470
## 8   P2_2.08 1.957433
## 9   P2_2.09 2.631629
## 10  P2_2.10 2.493763
## 11  P2_2.11 1.975632
## 12  P2_2.12 2.967594
## 13  P2_2.13 2.107338
## 14  P2_2.14 2.893488
## 15  P2_2.15 1.860742
## 16  P2_2.16 1.808265