6.5 Diagrama de barras para variables categoricas
Los gráficos de barras son una de las formas más comunes de representar información categórica en el análisis de encuestas. Permiten mostrar la magnitud de las estimaciones asociadas a distintas categorías, ya sea en términos de conteos o proporciones, incorporando los factores de expansión para que los resultados representen de manera adecuada a la población. A diferencia de los gráficos de barras construidos con datos no ponderados, el uso de pesos garantiza que la visualización corresponda a una estimación válida a nivel poblacional.
Es recomendable acompañar las barras con líneas de error que indiquen los intervalos de confianza de las estimaciones puntuales. Esta práctica no solo comunica el valor central de interés, sino que también transmite la incertidumbre asociada al proceso de estimación muestral. De esta forma, los gráficos de barras no solo son útiles para describir patrones generales, sino también para evaluar la precisión y robustez de las conclusiones.
La construcción de gráficos de barras en R requiere en primera instancia calcular las estimaciones que se desean graficar. Para ello, se utilizan funciones como survey_total() dentro de la librería srvyr, que permiten obtener tanto los estimadores puntuales como sus errores estándar e intervalos de confianza. A continuación, estas estimaciones se representan gráficamente mediante funciones del paquete ggplot2, lo que ofrece gran flexibilidad para definir colores, títulos, escalas y otros elementos visuales.
Una de las ventajas de los gráficos de barras es que pueden extenderse fácilmente a comparaciones entre varias variables categóricas. Por ejemplo, es posible analizar el tamaño poblacional de distintos grupos de pobreza cruzado con la situación de empleo, distinguiendo además subcategorías como desempleo o población infantil. Este tipo de análisis gráfico resulta especialmente útil para identificar intersecciones de vulnerabilidad, al mostrar de manera simultánea dos o más características poblacionales.
En síntesis, los gráficos de barras permiten no solo una descripción clara de los patrones de consumo, empleo o pobreza en la población, sino también una visualización intuitiva de la incertidumbre estadística. Cuando se aplican correctamente, constituyen una herramienta poderosa para comunicar hallazgos de encuestas de hogares a tomadores de decisiones, investigadores y público en general, manteniendo siempre el rigor estadístico en la representación de los resultados.
tamano_zona <- diseno %>%
group_by(Zone) %>%
summarise( Nd = survey_total(vartype = c("se", "ci")))
tamano_zona ## # A tibble: 2 × 5
## Zone Nd Nd_se Nd_low Nd_upp
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Rural 72102. 3062. 66039. 78165.
## 2 Urban 78164. 2847. 72526. 83802.
Ahora, se procede a hacer el gráfico como se mostró en las secciones anteriores:
plot25_Ponde <- ggplot(
data = tamano_zona,
aes(
x = Zone,
y = Nd,
ymax = Nd_upp,
ymin = Nd_low,
fill = Zone)) +
geom_bar(stat = "identity", position = "dodge") +
geom_errorbar(position = position_dodge(width = 0.9),
width = 0.3) +
theme_bw()
plot25_PondeComo se ha visto en los gráficos anteriores, se pueden extender a variables con muchas más categorías:
tamano_pobreza <- diseno %>%
group_by(Poverty) %>%
summarise(Nd = survey_total(vartype = c("se", "ci")))
tamano_pobreza## # A tibble: 3 × 5
## Poverty Nd Nd_se Nd_low Nd_upp
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 NotPoor 91398. 4395. 82696. 100101.
## 2 Extreme 21519. 4949. 11719. 31319.
## 3 Relative 37349. 3695. 30032. 44666.
El gráfico se obtiene con una sintaxis homologa a la anterior:
plot26_Ponde <- ggplot(
data = tamano_pobreza,
aes(
x = Poverty,
y = Nd,
ymax = Nd_upp,
ymin = Nd_low,
fill = Poverty)) +
geom_bar(stat = "identity", position = "dodge") +
geom_errorbar(
position = position_dodge(width = 0.9),
width = 0.3) +
theme_bw()
plot26_PondeDe forma similar a los gráficos Boxplot, es posible realizar comparaciones entre más dos variables.
tamano_ocupacion_pobreza <- diseno %>%
group_by(desempleo, Poverty) %>%
summarise(Nd = survey_total(vartype = c("se", "ci"))) %>% as.data.frame() %>%
mutate(desempleo = ifelse(is.na(desempleo),"Ninos",desempleo))
tamano_ocupacion_pobreza## desempleo Poverty Nd Nd_se Nd_low Nd_upp
## 1 0 NotPoor 68946 3676.3 61666.8 76226
## 2 0 Extreme 11549 2208.8 7175.8 15923
## 3 0 Relative 22847 2558.5 17780.5 27913
## 4 1 NotPoor 1768 405.4 965.7 2571
## 5 1 Extreme 1169 348.1 479.9 1859
## 6 1 Relative 1697 457.8 790.7 2604
## 7 Ninos NotPoor 20684 1256.6 18195.4 23172
## 8 Ninos Extreme 8800 2979.9 2899.7 14701
## 9 Ninos Relative 12805 1551.0 9733.9 15876
El gráfico para la tabla anterior queda de la siguiente manera:
plot27_Ponde <- ggplot(
data = tamano_ocupacion_pobreza,
aes(
x = Poverty,
y = Nd,
ymax = Nd_upp,
ymin = Nd_low,
fill = as.factor(desempleo))) +
geom_bar(stat = "identity", position = "dodge") +
geom_errorbar(
position = position_dodge(width = 0.9),
width = 0.3) +
theme_bw()
plot27_PondeEn estos gráficos también se pueden presentar proporciones, como se muestra a continuación:
prop_ZonaH_Pobreza <- sub_Hombre %>%
group_by(Zone, Poverty) %>%
summarise(prop = survey_prop(vartype = c("se", "ci")))
prop_ZonaH_Pobreza## # A tibble: 6 × 6
## # Groups: Zone [2]
## Zone Poverty prop prop_se prop_low prop_upp
## <chr> <fct> <dbl> <dbl> <dbl> <dbl>
## 1 Rural NotPoor 0.549 0.0626 0.424 0.668
## 2 Rural Extreme 0.198 0.0675 0.0958 0.364
## 3 Rural Relative 0.254 0.0372 0.187 0.334
## 4 Urban NotPoor 0.660 0.0366 0.584 0.728
## 5 Urban Extreme 0.113 0.0245 0.0726 0.171
## 6 Urban Relative 0.227 0.0260 0.180 0.283
Después de tener la tabla con los valores a presentar en el gráfico, los códigos computacionales para realizar el gráfico es el siguiente:
plot28_Ponde <- ggplot(
data = prop_ZonaH_Pobreza,
aes(
x = Poverty, y = prop,
ymax = prop_upp, ymin = prop_low,
fill = Zone)) +
geom_bar(stat = "identity", position = "dodge") +
geom_errorbar(
position = position_dodge(width = 0.9),
width = 0.3
) + scale_fill_manual(values = colorZona) +
theme_bw()
plot28_PondeAhora bien, grafiquemos la proporción de hombres en condición de pobreza por región:
prop_RegionH_Pobreza <- sub_Hombre %>%
group_by(Region, pobreza) %>%
summarise(
prop = survey_prop(vartype = c("se", "ci"))) %>%
data.frame()
prop_RegionH_Pobreza## Region pobreza prop prop_se prop_low prop_upp
## 1 Norte 0 0.6315 0.05523 0.5171 0.7327
## 2 Norte 1 0.3685 0.05523 0.2673 0.4829
## 3 Sur 0 0.6134 0.05672 0.4970 0.7181
## 4 Sur 1 0.3866 0.05672 0.2819 0.5030
## 5 Centro 0 0.6453 0.08464 0.4666 0.7910
## 6 Centro 1 0.3547 0.08464 0.2090 0.5334
## 7 Occidente 0 0.6259 0.04387 0.5358 0.7080
## 8 Occidente 1 0.3741 0.04387 0.2920 0.4642
## 9 Oriente 0 0.5450 0.10125 0.3480 0.7289
## 10 Oriente 1 0.4550 0.10125 0.2711 0.6520
El gráfico de barras es el siguiente:
plot29_Ponde <- ggplot(
data = prop_RegionH_Pobreza,
aes(
x = Region, y = prop,
ymax = prop_upp, ymin = prop_low,
fill = as.factor(pobreza))) +
geom_bar(stat = "identity", position = "dodge") +
geom_errorbar(
position = position_dodge(width = 0.9),
width = 0.3
) +
theme_bw()
plot29_Ponde