Este documento está en construcción. Tiene por objetivo generar el material necesario para manejar las bases de datos del INEC basadas en el diseño de muestras complejas. Para este ejemplo se utilizará la base de datos de la Encuesta Nacional de Salud y Nutrición – ENSANUT 2018. También se usará como guía el documento de los principales resultados de la ENSANUT 2018 que se encuentra en este link
La Encuesta Nacional de Salud y Nutrición – ENSANUT 2018 es una operación estadística por muestreo probabilístico que consta en el Programa Nacional Estadístico con periodicidad quinquenal y cuya población objetivo son todos los miembros del hogar. Investiga 2.591 conglomerados y 46.638 viviendas a nivel nacional con cobertura geográfica de las 24 provincias del país.
Se manejarán los siguientes paquetes:
library(tidyverse) #Para manipulación de datos
library(srvyr) #Para manejo de muestras
library(rio) #Para abrir bases de datos de fuentes ajenas
La ENSANUT 2018 está compuesta de 5 formularios: Formulario 1 de miembros de hogar (incluye antropometría); Formulario 2 de Mujeres en Edad Fértil, Salud de la niñez y Lactancia Materna; Formulario 3 Salud Sexual y Reproductiva Hombres 12 años y más; Formulario 4 Factores de Riesgo 5 a menores de 18 años de edad; y Formulario 5 Desarrollo Infantil para niños menores de 5 años. Tiene como población objetivo atodos los miembros del hogar y de manera específica recolecta información en mujeres en edad fértil (MEF) de 10 a 49 años, menores de 5 años, hombres de 12 años y más de edad y niños de 5 a 17 años. En este ejemplo se utilizará el formulario 1 de miembros de hogar, y se nombrará a la base de datos como personas
personas <- import("insumos/1_BDD_ENS2018_f1_personas.dta")
Uno de los errores más comunes, es utilizar los resultados de las encuestas como poblacionales, sin tomar en cuenta de que se tratan de resultados de una muestra.
Para ejemplificar esto, calculemos el índice de desnutrición crónica para los niños menores de 2 años. Utilizando la lógica presentada en este apartado se haría lo siguiente: \(A=\frac{1}{N}\sum{dcronica_2}\)
En R, generamos una tabla para ver cuántos niños menores de dos años tienen DCI y cuántos no.
df <- table(personas$dcronica_2)
df
##
## 0 1
## 5591 2210
Se puede observar que 2.210 niños menores de 2 años padecen Desnutrición Crónica Infantil y 5.591 no.
Entonces, procedemos a calcular el total de niños menores a 2 años que fueron incluidos en el levantamiento de información
nm2 <- df[1]+df[2]
nm2
## 0
## 7801
Teniendo un total de 7.801 niños menores a 2 años que fueron incluidos. Ahora, simplemente tendríamos que dividir al grupo de niños que padecen DCI para el total de niños intervenidos en el levantamiento de información de la ENSANUT:
dci <- df[2]/nm2
dci
## 1
## 0.283297
Y concluiríamos que, la desnutrición crónica infantil en niños menores de 2 años en el Ecuador es del 28,32%
Cometeríamos un error, puesto que el muestreo no es aleatorio, sino bietápico estratificado por conglomerados y se deben considerar los factores de expansión. Si comparamos este índice calculado, con los principales resultados mostrados por el INEC, comprobaríamos que estamos equivocados, puesto que, la Desnutrición Crónica Infantil realmente es del 27,2%, como se puede observar en la siguiente imagen:
Generamos una tabla auxiliar con la suma de los factores de expansión de los niños menores de 2 años que padecen DCI y quienes no, luego procedemos a dividir el total de niños con DCI para el total de niños que fueron intervenidos en la encuesta.
aux <- personas %>%
group_by(dcronica_2) %>%
summarise(sum_fexp=sum(fexp))
aux
## # A tibble: 3 × 2
## dcronica_2 sum_fexp
## <dbl> <dbl>
## 1 0 449961.
## 2 1 167876.
## 3 NA 16527957.
aux <- aux[1:2,1:2]
dci2 <- aux[2,2]/(aux[1,2]+aux[2,2])
dci2
## sum_fexp
## 1 0.2717159
De esta manera, concluiríamos que, la desnutrición crónica infantil es del 27,17% al igual que los resultados oficiales.
Sin embargo, para evitar construir tablas auxiliares y obtener más indicadores que nos muestren la representatividad de los estadísticos calculados y su validez para inferir en los parámetros poblacionales como el coeficiente de variación, o el erro estándar.
Se declara el diseño muestral
dm <- personas %>% #Creamos el objeto dm Diseño Muestral
as_survey_design(ids = "upm", #Para identificador ids, seleccionamos la upm
strata = "estrato", #Seleccionamos la variable de estrato
weights = "fexp") #Seleccionamos el factor de expansión
options(survey.lonely.psu = "certainty") #Activamos la opción que permite upm singulares
Una vez establecido el diseño muestral, el cálculo de los indicadores es sencillo:
dci_nac <- dm %>%
summarise(survey_mean(dcronica_2,na.rm=T))
dci_nac
## # A tibble: 1 × 2
## coef `_se`
## <dbl> <dbl>
## 1 0.272 0.00917
Obteniendo el resultado correcto nuevamente junto con el error estandar
De esta manera, también se puede calcular los indicadores para diferentes grupos:
tab_nac <- dm %>%
summarise(survey_mean(dcronica_2, vartype = c("se","cv"), na.rm = T),
n_muestra = sum(!is.na(dcronica_2))) %>%
mutate(dominio = "Nacional") %>%
select(dominio, porcentaje = coef, se = `_se`, cv =`_cv`, n_muestra)
tab_nac
## # A tibble: 1 × 5
## dominio porcentaje se cv n_muestra
## <chr> <dbl> <dbl> <dbl> <int>
## 1 Nacional 0.272 0.00917 0.0337 7801
tab_sex <- dm %>%
group_by(sexo) %>%
summarise(survey_mean(dcronica_2, vartype = c("se","cv"), na.rm = T),
n_muestra = sum(!is.na(dcronica_2))) %>%
mutate(dominio = "Nacional",
sexo = ifelse(sexo == 1, "Hombre", "Mujer")) %>%
select(dominio = sexo, porcentaje = coef, se = `_se`, cv =`_cv`, n_muestra)
tab_sex
## # A tibble: 2 × 5
## dominio porcentaje se cv n_muestra
## <chr> <dbl> <dbl> <dbl> <int>
## 1 Hombre 0.308 0.0121 0.0393 4023
## 2 Mujer 0.234 0.0125 0.0532 3778
tab_pro <- dm %>%
group_by(prov) %>%
summarise(survey_mean(dcronica_2, vartype = c("se","cv"), na.rm = T),
n_muestra = sum(!is.na(dcronica_2))) %>%
mutate(dominio = "Nacional") %>%
select(dominio = prov, porcentaje = coef, se = `_se`, cv =`_cv`, n_muestra)
tab_pro
## # A tibble: 25 × 5
## dominio porcentaje se cv n_muestra
## <chr> <dbl> <dbl> <dbl> <int>
## 1 01 0.307 0.0557 0.182 196
## 2 02 0.346 0.0446 0.129 184
## 3 03 0.288 0.0398 0.138 221
## 4 04 0.303 0.0376 0.124 223
## 5 05 0.348 0.0365 0.105 255
## 6 06 0.394 0.0365 0.0928 269
## 7 07 0.198 0.0216 0.109 570
## 8 08 0.227 0.0222 0.0978 369
## 9 09 0.225 0.0199 0.0886 580
## 10 10 0.308 0.0376 0.122 246
## # … with 15 more rows