Para responder la pregunta vamos a utilizar información de la Encuesta Nacional de Salud y Nutrición (ENSANUT) de 2018. Para ver más detalles de la encuesta se puede consultar la siguiente liga.
Seleccionamos la tabla CS_ANTROPEMETRIA.csv de la componente de Nutrición.
#librerias a ocupar
library(reactable)
library(ggplot2)
library(plotly)
library(dplyr)
library(leaflet)Importamos la base de datos
La base de datos se compone de 33818 personas entrevistadas y 57 preguntas.
Verificamos el nombre de las variables
## [1] "UPM" "VIV_SEL" "HOGAR"
## [4] "NUMREN" "PESO1_1" "PESO1_2"
## [7] "P2" "P3" "TALLA4_1"
## [10] "TALLA4_2" "P5" "P6"
## [13] "P7_1" "CIRCUNFERENCIA8_1" "CIRCUNFERENCIA8_2"
## [16] "P9" "P10" "P11"
## [19] "PESO12_1" "PESO12_2" "P13"
## [22] "P14" "TALLA15_1" "TALLA15_2"
## [25] "P16" "TALLAPIE17_1" "P18"
## [28] "CIRCPANTORRILLA19_1" "P20" "CINTURA21_1"
## [31] "CINTURA21_2" "P22" "HEMIENVERGADURA23_1"
## [34] "P24" "MEDIABRAZO25_1" "P26"
## [37] "P27_1_1" "P27_1_2" "P27_2_1"
## [40] "P27_2_2" "P28" "P29"
## [43] "P30" "EDAD" "EDAD_MESES"
## [46] "SEXO" "ENT" "DOMINIO"
## [49] "ALTITUD" "REGION" "EST_DIS"
## [52] "UPM_DIS" "ESTRATO" "F_ANTROP"
## [55] "F_ANTROP_INSP" "GPO_INSP" "DIAS"
En particular para nuestra pregunta sólo consideramos personas mayores de 20 años. También para evitar sesgos por datos atípicos ó mal llenado truncamos alturas mayores a 2.20 mts.
df <- subset(df, df$EDAD>=20 & df$TALLA4_1<=220)
#numero de adultos con talla medida valida
nrow(df)## [1] 13082
Para estimar la estatura promedio de los mexicanos, consideramos los dominios de sexo y entidad federativa y utilizamos el estimador de razón
\[\hat {\bar {Y_{d}}} =\dfrac{\hat t_{y_d}}{\hat N_{d}}, \] donde:
En este caso, \(\pi_{i}\) denota la probabilidad de inclusión del \(i\)-ésimo individuo en la muestra \(s\). En general se suele reportar el factor de expansión, definido como el inverso de la probabilidad de inclusión, esto es, \(f_i =1/\pi_i\)1. En la base de datos se encuentra etiquetada como F_ANTRO_INSP.
Con el siguiente código obtenemos la altura promedio por sexo y entidad federativa
library(dplyr)
estados <-df %>% filter(TALLA4_1 !=is.na(TALLA4_1)) %>%
mutate( sumando = TALLA4_1* F_ANTROP_INSP) %>%
group_by(SEXO,ENT) %>%
summarise( totales = sum(sumando), N = sum(F_ANTROP_INSP))
estados <- estados %>% mutate( talla.hat = round( totales/N,2))
#pegamos la etiqueta de los estados
catalog <- read.csv("dataset/catalogo.csv",header=T)
estados <- left_join(estados, catalog, by = c('ENT'= 'ENTIDAD'))
names(estados)[6] <- 'ENTIDAD'Obtenemos la gráfica de barras para hombres
mygraph <- ggplot(estados[estados$SEXO==1,], aes(x=reorder(ENTIDAD,talla.hat),y= talla.hat,fill= as.factor(ENTIDAD))) + theme(legend.position = 'none')+ scale_fill_hue(c = 50) +
geom_bar(stat='identity')+ coord_flip()+labs(title ="Estatura promedio estimada",y="Altura (cm)", x="Entidad")
ggplotly(mygraph)Obtenemos ahora el mapa para la distribución de la altura en el País
library(rgdal)
library(htmltools)
mexico <- readOGR(dsn="dataset/desta4mgw.shp",verbose=F)
mexico$CVE_EDO <-as.numeric(mexico$CVE_EDO)
mexico@data <- left_join(mexico@data,
estados[estados$SEXO==1, c('ENT','talla.hat','ENTIDAD')],
by =c('CVE_EDO'='ENT'))
names(mexico)[names(mexico)=='talla.hat'] <-'talla_hombres'
pal <- colorNumeric('Greens',domain = mexico$talla_hombres)
labels <- sprintf(
"<strong>%s</strong><br/>Talla promedio: %g cm",
mexico$ENTIDAD, mexico$talla_hombres
) %>% lapply(htmltools::HTML)
mymap <- leaflet(mexico) %>%
addPolygons(color="white",
weight=1,
fillOpacity = 0.7,
fillColor = ~pal(talla_hombres),
label = labels) %>%
addLegend(pal = pal, values = ~talla_hombres, opacity = 0.7, title = 'Talla',
position = "bottomright")
mymapY la estimación de la altura promedio de mujeres
mygraph <- ggplot(estados[estados$SEXO==2,], aes(x=reorder(ENTIDAD,talla.hat),y= talla.hat, fill = as.factor(ENTIDAD))) + scale_fill_hue(c = 50) +
geom_bar(stat='identity')+theme(legend.position="none")+
coord_flip()+labs(title ="Estatura promedio estimada",y="Altura (cm)", x="Entidad")
ggplotly(mygraph)Y el mapa de las estaturas para las entidades federativas
mexico@data <- left_join(mexico@data,
estados[estados$SEXO==2, c('ENT','talla.hat')],
by =c('CVE_EDO'='ENT'))
names(mexico)[names(mexico)=='talla.hat'] <-'talla_mujeres'
pal <- colorNumeric('Purples',domain = mexico$talla_mujeres)
labels <- sprintf(
"<strong>%s</strong><br/>Talla promedio: %g cm",
mexico$ENTIDAD, mexico$talla_mujeres
) %>% lapply(htmltools::HTML)
mymap <- leaflet(mexico) %>%
addPolygons(color="white",
weight=1,
fillOpacity = 0.7,
fillColor = ~pal(talla_mujeres),
label = labels) %>%
addLegend(pal = pal, values = ~talla_mujeres, opacity = 0.7, title = 'Talla',
position = "bottomright")
mymapSärndal, C., et.al.(1992). Model Assisted Survey Sampling. Springer-Verlag↩︎