Introducción

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

ENSANUT

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.

Librerías

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

Base de datos

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

Error al estimar índices con los resultados de las encuestas

No tomar en cuenta los factores de expansión

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:

Forma Manual

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.

Forma con diseño muestral

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:

Estimacion de la prevalencia a nivel nacional

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

Estimacion de la prevalencia por sexo

  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

Estimacion de la prevalencia por provincia

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