library(foreign)
sumaria <- read.spss("Sumaria-2019.sav", to.data.frame = T)
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
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
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
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)))
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"))
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
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