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"))

Tablas de Frecuencias

Tabla de frecuencias sin ponderar

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

Tablas de frecuencias ponderadas

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

Exportación de tablas para su presentación final

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

Tablas de estadisticos descriptivos con ponderación

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

Ejercicios

Utilizando los datos del módulo 1 de la ENAHO 2017, elabore las siguientes tablas y presente sus resultados en el formato INEI: