Para este instructivo trabajaremos con el módulo 1 de características de la vivienda de la ENAHO 2017
library(haven)
enaho17_m1 <- as.data.frame(read_sav("Enaho01-2017-100.sav"))
Ejemplo 1: Material predominante en las paredes de la vivienda, por área de residencia
Primero debemos recodificar la variable ESTRATO para crear la variable área de residencia urbano / rural:
library(car)
enaho17_m1$urbano <- factor(recode(enaho17_m1$ESTRATO, "1:5 = 1; 6:8=2"),
labels = c("Urbano", "Rural"))
Usando el comando xtabs, generamos la tabla de frecuencias simple:
tabla1.0 <-xtabs(~P102+urbano, data = enaho17_m1)
tabla1.0
## urbano
## P102 Urbano Rural
## 1 14007 1352
## 2 158 32
## 3 3519 5731
## 4 688 2374
## 5 383 221
## 6 29 314
## 7 1842 2088
## 8 95 78
## 9 560 700
Para producir tablas estadísticas utilizando los datos de la ENAHO, es necesario considerar el factor de expansión, de forma tal que los resultados representen la población objetivo, de acuerdo con el diseño muestral de la encuesta. Ello se hace incluyendo la variable factor de expansión (FACTOR07) en la sintaxis que genera la tabla:
tabla1.1 <-xtabs(FACTOR07~P102+urbano, data = enaho17_m1)
tabla1.1
## urbano
## P102 Urbano Rural
## 1 4430141.595 171612.301
## 2 50751.020 5364.462
## 3 1163209.253 1060989.031
## 4 180372.438 424746.735
## 5 107907.001 24775.135
## 6 8349.842 63383.402
## 7 492986.245 231208.510
## 8 18373.766 9031.245
## 9 157376.183 70129.682
Podemos hacer tablas más complejas, incluyendo una variable de control adicional:
Ejemplo 2: Material predominante en las paredes de la vivienda, por dominio geográfico, según área de residencia:
tabla1.2 <-xtabs(FACTOR07~P102+DOMINIO+urbano, data = enaho17_m1)
tabla1.2
## , , urbano = Urbano
##
## DOMINIO
## P102 1 2 3 4 5
## 1 6.374758e+05 3.856580e+05 1.430365e+05 7.076645e+04 2.361096e+05
## 2 3.182414e+03 5.520633e+02 3.525178e+02 7.704647e+02 3.518862e+03
## 3 3.020486e+05 8.831596e+04 6.769787e+03 8.604667e+04 1.851705e+05
## 4 0.000000e+00 1.493101e+02 0.000000e+00 2.765295e+04 1.385197e+05
## 5 4.244625e+04 3.990579e+03 1.273167e+03 5.602370e+02 1.351534e+02
## 6 0.000000e+00 2.668720e+02 4.576491e+01 6.223421e+02 3.360212e+03
## 7 3.473160e+03 2.025551e+04 1.105474e+04 6.533374e+02 2.330169e+03
## 8 2.570553e+03 1.073378e+04 2.867727e+03 0.000000e+00 0.000000e+00
## 9 5.676857e+04 1.991071e+04 4.216641e+03 1.146247e+03 1.534423e+03
## DOMINIO
## P102 6 7 8
## 1 4.449456e+05 2.969418e+05 2.215208e+06
## 2 3.098235e+04 3.302072e+03 8.090272e+03
## 3 3.073114e+05 7.877418e+04 1.087722e+05
## 4 2.426149e+03 1.034396e+04 1.280335e+03
## 5 2.238320e+02 1.546287e+04 4.381491e+04
## 6 2.321184e+03 1.123861e+03 6.096057e+02
## 7 7.144579e+03 2.027647e+05 2.453101e+05
## 8 1.405628e+03 5.575270e+02 2.385499e+02
## 9 6.282358e+03 2.921392e+04 3.830331e+04
##
## , , urbano = Rural
##
## DOMINIO
## P102 1 2 3 4 5
## 1 1.488675e+04 2.162679e+04 1.129672e+04 1.731921e+04 2.819592e+04
## 2 3.601293e+02 0.000000e+00 5.017760e+02 3.110315e+02 1.462179e+03
## 3 1.059455e+05 2.231145e+04 1.485254e+03 2.196051e+05 2.461393e+05
## 4 1.539141e+02 0.000000e+00 0.000000e+00 1.334500e+05 2.705389e+05
## 5 3.813030e+03 4.469124e+03 1.374069e+03 1.700778e+03 1.547051e+03
## 6 0.000000e+00 0.000000e+00 0.000000e+00 1.055042e+04 1.015660e+04
## 7 6.327791e+02 2.521425e+03 3.916682e+03 2.164736e+03 1.052677e+04
## 8 1.482472e+03 2.375810e+03 2.529328e+03 0.000000e+00 1.256275e+03
## 9 1.321558e+04 1.353452e+03 1.986775e+03 4.901534e+03 4.004456e+03
## DOMINIO
## P102 6 7 8
## 1 3.502496e+04 4.326196e+04 0.000000e+00
## 2 2.092075e+03 6.372710e+02 0.000000e+00
## 3 3.870104e+05 7.849214e+04 0.000000e+00
## 4 5.016482e+03 1.558739e+04 0.000000e+00
## 5 7.450273e+02 1.112606e+04 0.000000e+00
## 6 3.903490e+04 3.641473e+03 0.000000e+00
## 7 1.610549e+03 2.098356e+05 0.000000e+00
## 8 4.735013e+02 9.138589e+02 0.000000e+00
## 9 4.439893e+03 4.022799e+04 0.000000e+00
Para presentar una tabla en un formato profesional, lo más conveniente es exportar el resultado de R a un archivo que pueda trabajarse en el Excel, lo que nos permitirá aplicar los formatos estandarizados sugeridos por el INEI (véase: Manual de presentación de cuadros estadísticos del INEI)
Para ello debemos primero convertir la tabla en un data frame de esta manera (se muestran sólo las primeras 20 filas de la tabla):
tabla1.2 <- as.data.frame(tabla1.2)
tabla1.2
## P102 DOMINIO urbano Freq
## 1 1 1 Urbano 637475.7686
## 2 2 1 Urbano 3182.4143
## 3 3 1 Urbano 302048.5838
## 4 4 1 Urbano 0.0000
## 5 5 1 Urbano 42446.2520
## 6 6 1 Urbano 0.0000
## 7 7 1 Urbano 3473.1602
## 8 8 1 Urbano 2570.5527
## 9 9 1 Urbano 56768.5713
## 10 1 2 Urbano 385658.0024
## 11 2 2 Urbano 552.0633
## 12 3 2 Urbano 88315.9551
## 13 4 2 Urbano 149.3101
## 14 5 2 Urbano 3990.5794
## 15 6 2 Urbano 266.8720
## 16 7 2 Urbano 20255.5105
## 17 8 2 Urbano 10733.7806
## 18 9 2 Urbano 19910.7057
## 19 1 3 Urbano 143036.4788
## 20 2 3 Urbano 352.5178
En segundo lugar, utilizamos el comando dcast del paquete reshape2 para acondicionar la tabla a nuestros requerimientos. Para mayor información sobre reshape, puede consultar los siguientes recursos: Reshape 2 - Español; Reshape - R in Action.
En nuestro ejemplo caso, el tipo de material debe ir en la filas, separado por área de residencia, y el dominio geográfico en las columnas:
library(reshape2)
tabla1.2 <- dcast(tabla1.2, urbano + P102 ~ DOMINIO)
tabla1.2
## urbano P102 1 2 3 4
## 1 Urbano 1 637475.7686 385658.0024 143036.47879 70766.4460
## 2 Urbano 2 3182.4143 552.0633 352.51783 770.4647
## 3 Urbano 3 302048.5838 88315.9551 6769.78735 86046.6672
## 4 Urbano 4 0.0000 149.3101 0.00000 27652.9464
## 5 Urbano 5 42446.2520 3990.5794 1273.16671 560.2370
## 6 Urbano 6 0.0000 266.8720 45.76491 622.3421
## 7 Urbano 7 3473.1602 20255.5105 11054.74180 653.3374
## 8 Urbano 8 2570.5527 10733.7806 2867.72732 0.0000
## 9 Urbano 9 56768.5713 19910.7057 4216.64091 1146.2466
## 10 Rural 1 14886.7531 21626.7861 11296.71772 17319.2058
## 11 Rural 2 360.1293 0.0000 501.77599 311.0315
## 12 Rural 3 105945.4547 22311.4517 1485.25443 219605.0549
## 13 Rural 4 153.9141 0.0000 0.00000 133450.0438
## 14 Rural 5 3813.0300 4469.1236 1374.06935 1700.7783
## 15 Rural 6 0.0000 0.0000 0.00000 10550.4243
## 16 Rural 7 632.7791 2521.4246 3916.68173 2164.7361
## 17 Rural 8 1482.4720 2375.8102 2529.32790 0.0000
## 18 Rural 9 13215.5816 1353.4518 1986.77526 4901.5341
## 5 6 7 8
## 1 236109.6106 444945.5897 296941.8166 2215207.8823
## 2 3518.8622 30982.3532 3302.0721 8090.2721
## 3 185170.4744 307311.3913 78774.1787 108772.2148
## 4 138519.7334 2426.1487 10343.9644 1280.3351
## 5 135.1534 223.8320 15462.8661 43814.9148
## 6 3360.2124 2321.1836 1123.8610 609.6057
## 7 2330.1685 7144.5786 202764.6586 245310.0895
## 8 0.0000 1405.6284 557.5270 238.5499
## 9 1534.4225 6282.3577 29213.9245 38303.3135
## 10 28195.9198 35024.9563 43261.9624 0.0000
## 11 1462.1786 2092.0754 637.2710 0.0000
## 12 246139.2597 387010.4121 78492.1433 0.0000
## 13 270538.9079 5016.4822 15587.3866 0.0000
## 14 1547.0510 745.0273 11126.0551 0.0000
## 15 10156.6044 39034.9005 3641.4728 0.0000
## 16 10526.7689 1610.5486 209835.5711 0.0000
## 17 1256.2751 473.5013 913.8589 0.0000
## 18 4004.4564 4439.8929 40227.9901 0.0000
Finalmente exportamos la tabla ya sea como archivo cvs para abrirla en Excel y desde ahi calcular los totales, los porcentajes, y formatearla de acuerdo con el estilo del INEI:
write.csv(tabla1.2, file = "tabla1_2.csv")
Una vez editada la tabla en Excel el resultado final debe verse como se aprecia en el siguiente documento: Tabla 1 - Version Final.
En el siguiente enlace, puede descargar el archivo Excel con el formato final de la tabla: Tabla 1 - Excel
Ejemplo: Monto mensual promedio que estima le pagarían por alquiler de la vivienda, por área de residencia, según dominio geográfico
Para calcular los estadísticos descriptivos ponderados usaremos el comando wtd.mean (weighted mean o media ponderada) del paquete Hmisc, así como el comando ddply del paquete plyr para crear estadísticos por grupo.
library(Hmisc)
library(plyr)
tabla2.1 <- ddply(enaho17_m1,~urbano+DOMINIO,summarise,
Media=wtd.mean(P106,FACTOR07, na.rm=T))
tabla2.1 <- dcast(tabla2.1, DOMINIO ~ urbano)
tabla2.1
## DOMINIO Urbano Rural
## 1 1 300.5465 102.57180
## 2 2 270.6992 146.93856
## 3 3 318.7063 151.60638
## 4 4 235.2339 52.01883
## 5 5 187.3864 60.90453
## 6 6 278.4009 48.82339
## 7 7 238.1291 63.03211
## 8 8 642.8499 NA
Como se aprecia, la tabla 2 calcula las medias para las categorías cruzadas (dominio según área de residencia). Para crear la tabla final debemos también tener las medias para:
Ello implica realizar tres procedimientos adicionales:
# Total nacional
tabla2.t <- wtd.mean(enaho17_m1$P106, enaho17_m1$FACTOR07, na.rm=T)
tabla2.t
## [1] 322.1513
# Por cada dominio
tabla2.2 <- ddply(enaho17_m1,~DOMINIO,summarise,
Media=wtd.mean(P106,FACTOR07, na.rm=T))
tabla2.2
## DOMINIO Media
## 1 1 276.3696
## 2 2 258.7626
## 3 3 298.2543
## 4 4 105.3642
## 5 5 120.4455
## 6 6 188.3954
## 7 7 166.3839
## 8 8 642.8499
# Por cada área de residencia
tabla2.3 <- ddply(enaho17_m1,~urbano,summarise,
Media=wtd.mean(P106,FACTOR07, na.rm=T))
tabla2.3
## urbano Media
## 1 Urbano 411.47156
## 2 Rural 63.04894
Finalmente podemos guardar los resultados como archivos CSV y editarlos en Excel para generar la tabla definitiva:
write.csv(tabla2.1, file = "tabla2_1.csv")
write.csv(tabla2.2, file = "tabla2_2.csv")
write.csv(tabla2.3, file = "tabla2_3.csv")
El resultado final debe quedar como la tabla 2 que se aprecia en el siguiente archivo: Tabla 2 - Final. El archivo en Excel puede descargarse desde el siguiente enlace: Tabla 2 - Excel
Utilizando los datos del módulo 1 de la ENAHO 2017, elabore las siguientes tablas y presente sus resultados en el formato INEI: