Limpieza ENAHO

El siguiente archivo prentende limpiar la data perteneciente al módulo 100 de la ENAHO 2024. A continuación iremos paso a paso.

Nuestras variables de interés son las siguientes:

  • ubigeo: Ubicación geográfica

  • estrato: Estrato geográfico (Rango: 1-8)

    1. De 500 000 a más habitantes
    2. De 100 000 a 499 999 habitantes
    3. De 50 000 a 99 999 habitantes
    4. De 20 000 a 49 999 habitantes
    5. De 2 000 a 19 999 habitantes
    6. De 500 a 1 999 habitantes
    7. Área de Empradonamiento Rural (AER) Compuesto
    8. Área de Empradonamiento Rural (AER) Simple
  • P110: El agua que utilizan en el hogar procede principalmente de: (Rango 1-8)

    1. Red pública, dentro de la vivienda
    2. Red pública, fuera de la vivienda pero dentro del edificio
    3. Pilón o pileta de uso público
    4. Camión-cisterna u otro similar
    5. Pozo (agua subterránea)
    6. Manantial o puquio
    7. Otra
    8. Río, acequia, lago, laguna
  • P110A1: ¿El agua es potable? (Rango 1-2)

    1. No
  • P110A: Nivel de cloro residual del agua (Rango 1-3)

    1. Seguro
    2. Inadecuada dosificación de Cloro
    3. Sin Cloro
    4. Missing value
  • P110C: ¿El hogar tiene acceso al servicio de agua todos los días de la semana (Rango 1-2)

    1. No
    2. Missing value
  • P110C1: ¿Cuántas horas al dia? (Rango 1-24)

  • P110C2: ¿Cuántos días a la semana tiene este servicio? (Rango 1-7)

  • P110C3: ¿Cuántas horas al día? (Rango 1-24)

  • P110F: ¿Pagan por el servicio de agua? (Rango 1-2)

    1. No
  • P110G: ¿A qué empresa o entidad se paga por el servicio de agua? (Rango 1-5)

    1. Empresa prestadora del servicios (EPS-SEDA-EMAPA=)
    2. Municipalidad
    3. Organización Comunal
    4. Camión cisterna
    5. Otro
  • P1172$01: El último gasto mensual por consumo de: Agua, ¿pagado por algún miembro de este hogar?

  • P1173$01: El último gasto mensual por consumo de: Agua. ¿donado o regalado por algún miembro de otro hogar?

  • P1174$01: El último gasto mensual por consumo de: Agua, ¿autoconsumo o autosuministro?

  • D1172$01: El último gasto mensual de: Agua, pagado por mimebro de este hogar

  • T110: (Recodificado) El abastecimiento de agua en su hogar procede de: (Rango: 1-9)

    1. Red pública, dentro de la vivienda
    2. Red pública, fuera de la vivienda pero dentro del edificio
    3. Pilón o pileta de uso público
    4. Camión-cisterna u otro similar
    5. Pozo (agua subterránea)
    6. Manantial o puquio
    7. Otra
    8. Río, acequia, lago, laguna
    9. Agua potable del vecino

1. Instalación de paquetes

#install.packages("haven")
#install.packages("rio)
#install.packages("dplyr")
#install.packages("stringr")
#install.packages("tidyr")
#install.packages("forcats")
#install.packages("scales")
#install.packages("ggplot2")

2. Carga de librerías

library(haven)
library(rio)
library(dplyr)
library(stringr)
library(tidyr)
library(forcats)
library(scales)
library(ggplot2)

3. Carga de datos

enaho <- read_dta("enaho01-2024-100.dta")

4. Limpieza de datos

# Seleccionamos variables
enaho_agua <- enaho %>%
  select(ubigeo, estrato, p110, p110a1, p110a, p110c, p110c1, p110c2, p110c3, 
         p110f, p110g, p1172_01, p1173_01, p1174_01, d1172_01, t110)
enaho_agua_f <- enaho_agua %>%
  # Renombrar variables
  rename(
    ubigeo                 = ubigeo,
    estrato                = estrato,
    fuente_agua            = p110,
    agua_potable           = p110a1,
    cloro_residual         = p110a,
    agua_todos_dias        = p110c,
    horas_dia_diario       = p110c1,
    dias_semana            = p110c2,
    horas_dia_no_diario    = p110c3,
    paga_servicio          = p110f,
    entidad_pago           = p110g,
    gasto_agua_pagado      = `p1172_01`,
    gasto_agua_donado      = `p1173_01`,
    gasto_agua_autoconsumo = `p1174_01`,
    gasto_agua_hogar       = `d1172_01`,
    abastecimiento_recod   = t110
  ) %>%
  # Construir región y aplicar etiquetas
  mutate(
    ubigeo     = str_pad(as.character(ubigeo), width = 6, side = "left", pad = "0"),
    cod_region = substr(ubigeo, 1, 2),
    region     = recode(cod_region,
      "01"="Amazonas","02"="Áncash","03"="Apurímac","04"="Arequipa",
      "05"="Ayacucho","06"="Cajamarca","07"="Callao","08"="Cusco",
      "09"="Huancavelica","10"="Huánuco","11"="Ica","12"="Junín",
      "13"="La Libertad","14"="Lambayeque","15"="Lima","16"="Loreto",
      "17"="Madre de Dios","18"="Moquegua","19"="Pasco","20"="Piura",
      "21"="Puno","22"="San Martín","23"="Tacna","24"="Tumbes",
      "25"="Ucayali"
    ),
    estrato = factor(estrato, levels = 1:8, labels = c(
      "≥500k hab","100k–499,999","50k–99,999","20k–49,999",
      "2k–19,999","500–1,999","AER Compuesto","AER Simple"
    )),
    fuente_agua = factor(fuente_agua, levels = 1:8, labels = c(
      "Red dentro de la vivienda",
      "Red fuera (dentro del edificio)",
      "Pilón/pileta pública",
      "Camión-cisterna u otro",
      "Pozo (subterránea)",
      "Manantial/puquio",
      "Otra",
      "Río/acequia/lago/laguna"
    )),
    agua_potable = factor(agua_potable, levels = 1:2, labels = c("Sí","No")),
    cloro_residual = na_if(cloro_residual, 9) %>%
      factor(levels = 1:3, labels = c("Seguro","Dosificación inadecuada","Sin cloro")),
    agua_todos_dias = na_if(agua_todos_dias, 9) %>%
      factor(levels = 1:2, labels = c("Sí","No")),
    paga_servicio = factor(paga_servicio, levels = 1:2, labels = c("Sí","No")),
    entidad_pago = factor(entidad_pago, levels = 1:5, labels = c(
      "EPS/SEDA/EMAPA","Municipalidad","Organización comunal","Camión cisterna","Otro"
    )),
    abastecimiento_recod = factor(abastecimiento_recod, levels = 1:9, labels = c(
      "Red dentro de la vivienda",
      "Red fuera (dentro del edificio)",
      "Pilón/pileta pública",
      "Camión-cisterna u otro",
      "Pozo (subterránea)",
      "Manantial/puquio",
      "Otra",
      "Río/acequia/lago/laguna",
      "Agua potable del vecino"
    )),
    horas_dia_diario    = ifelse(horas_dia_diario %in% 1:24, horas_dia_diario, NA),
    dias_semana         = ifelse(dias_semana %in% 1:7, dias_semana, NA),
    horas_dia_no_diario = ifelse(horas_dia_no_diario %in% 1:24, horas_dia_no_diario, NA),
    gasto_agua_total    = rowSums(across(c(gasto_agua_pagado, gasto_agua_donado, gasto_agua_autoconsumo)), na.rm = TRUE)
  )

5. Graficamos

# Ordenamos regiones por % Sí para lectura
orden_regiones <- enaho_agua_f %>%
  filter(!is.na(region), !is.na(agua_potable)) %>%
  group_by(region) %>%
  summarise(pct_si = mean(agua_potable == "Sí"), .groups = "drop") %>%
  arrange(pct_si) %>% pull(region)

enaho_agua_f %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  filter(!is.na(region), !is.na(agua_potable)) %>%
  ggplot(aes(x = region, fill = agua_potable)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Agua potable por región",
    subtitle= "% de hogares dentro de cada región",
    x = "Región",
    y = "Participación (%)",
    fill = "¿Agua potable?",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    legend.position = "bottom",
    panel.grid.minor = element_blank()
  )

enaho_agua_f %>%
  filter(paga_servicio == "Sí", !is.na(entidad_pago)) %>%
  count(entidad_pago) %>%
  mutate(pct = n / sum(n)) %>%
  ggplot(aes(x = fct_reorder(entidad_pago, pct), y = pct)) +
  geom_col() +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Entidad a la que se paga por el servicio de agua",
    subtitle= "Distribución nacional (% entre hogares que pagan)",
    x = "Entidad",
    y = "Porcentaje de hogares",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

orden_regiones <- enaho_agua_f %>%
  filter(paga_servicio == "Sí", !is.na(region)) %>%
  count(region) %>% arrange(n) %>% pull(region)

enaho_agua_f %>%
  filter(paga_servicio == "Sí", !is.na(entidad_pago), !is.na(region)) %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  ggplot(aes(x = region, fill = entidad_pago)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Entidad a la que se paga por región",
    subtitle= "Participación (%) dentro de los hogares que pagan en cada región",
    x = "Región",
    y = "Participación (%)",
    fill = "Entidad",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    legend.position = "bottom",
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

enaho_agua_f %>%
  filter(!is.na(fuente_agua)) %>%
  count(fuente_agua) %>%
  mutate(pct = n / sum(n)) %>%
  ggplot(aes(x = fct_reorder(fuente_agua, pct), y = pct)) +
  geom_col() +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Fuente principal de agua",
    subtitle= "Distribución nacional (%)",
    x = "Fuente de agua",
    y = "Porcentaje de hogares",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

orden_regiones <- enaho_agua_f %>%
  filter(!is.na(region)) %>% count(region) %>% arrange(n) %>% pull(region)

enaho_agua_f %>%
  filter(!is.na(region), !is.na(fuente_agua)) %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  ggplot(aes(x = region, fill = fuente_agua)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Fuente principal de agua por región",
    subtitle= "Participación (%) dentro de cada región",
    x = "Región",
    y = "Participación (%)",
    fill = "Fuente",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    legend.position = "bottom",
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

enaho_agua_f %>%
  filter(!is.na(cloro_residual)) %>%
  count(cloro_residual) %>%
  mutate(pct = n / sum(n)) %>%
  ggplot(aes(x = fct_reorder(cloro_residual, pct), y = pct)) +
  geom_col() +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Nivel de cloro residual en el agua",
    subtitle= "Distribución nacional (%)",
    x = "Nivel de cloro",
    y = "Porcentaje de hogares",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

enaho_agua_f %>%
  filter(!is.na(cloro_residual), !is.na(region)) %>%
  count(region, cloro_residual) %>%
  group_by(region) %>%
  mutate(pct = n / sum(n)) %>%
  ungroup() %>%
  filter(str_to_lower(cloro_residual) == "dosificación inadecuada") %>%
  ggplot(aes(y = fct_reorder(region, pct), x = pct)) +
  geom_col() +
  scale_x_continuous(labels = percent_format(accuracy = 1)) +
  labs(
    title = "Dosificación inadecuada del cloro residual por región",
    subtitle = "Distribución dentro de cada región (%)",
    x = "Porcentaje de hogares",
    y = "Región",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    plot.caption = element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

orden_regiones <- enaho_agua_f %>%
  filter(!is.na(region), !is.na(agua_todos_dias)) %>%
  group_by(region) %>%
  summarise(pct_si = mean(agua_todos_dias == "Sí"), .groups = "drop") %>%
  arrange(pct_si) %>% pull(region)

enaho_agua_f %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  filter(!is.na(region), !is.na(agua_todos_dias)) %>%
  ggplot(aes(x = region, fill = agua_todos_dias)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Acceso al servicio de agua todos los días",
    subtitle= "% de hogares dentro de cada región",
    x = "Región",
    y = "Participación (%)",
    fill = "¿Todos los días?",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    legend.position = "bottom",
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

orden_regiones <- enaho_agua_f %>%
  filter(!is.na(region), !is.na(horas_dia_diario)) %>%
  group_by(region) %>%
  summarise(med = median(horas_dia_diario, na.rm = TRUE), .groups = "drop") %>%
  arrange(med) %>% pull(region)

enaho_agua_f %>%
  filter(!is.na(region), !is.na(horas_dia_diario)) %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  ggplot(aes(x = region, y = horas_dia_diario)) +
  geom_boxplot(outlier.alpha = 0.25) +
  coord_flip() +
  labs(
    title   = "Horas de servicio al día",
    subtitle= "Distribución por región (entre quienes reportan)",
    x = "Región",
    y = "Horas por día",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

orden_regiones <- enaho_agua_f %>%
  filter(!is.na(region), !is.na(paga_servicio)) %>%
  group_by(region) %>%
  summarise(pct_paga = mean(paga_servicio == "Sí"), .groups = "drop") %>%
  arrange(pct_paga) %>% pull(region)

enaho_agua_f %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  filter(!is.na(region), !is.na(paga_servicio)) %>%
  ggplot(aes(x = region, fill = paga_servicio)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Hogares que pagan por el servicio de agua",
    subtitle= "% de hogares dentro de cada región",
    x = "Región",
    y = "Participación (%)",
    fill = "¿Paga?",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    legend.position = "bottom",
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

enaho_agua_f %>%
  filter("gasto_agua_total" %in% names(enaho_agua_f)) %>%
  filter(!is.na(gasto_agua_total), gasto_agua_total >= 0) %>%
  ggplot(aes(x = gasto_agua_total)) +
  geom_histogram(bins = 40) +
  scale_x_continuous(labels = label_number(big.mark = ",")) +
  labs(
    title   = "Distribución del gasto mensual en agua",
    subtitle= "Hogares a nivel nacional",
    x = "Gasto mensual (moneda local)",
    y = "Número de hogares",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(base_size = 11) +
  theme(
    plot.title  = element_text(hjust = 0.5, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5),
    plot.caption= element_text(hjust = 1),
    plot.caption.position = "plot",
    panel.grid.minor = element_blank()
  )

enaho_agua_f <- enaho_agua_f %>%
  mutate(
    ambito = case_when(
      estrato %in% c("AER Compuesto","AER Simple") ~ "Rural",
      TRUE ~ "Urbano"
    ) %>% factor(levels = c("Urbano","Rural"))
  )

enaho_agua_f %>%
  filter(!is.na(ambito), !is.na(agua_potable)) %>%
  count(ambito, agua_potable) %>%
  group_by(ambito) %>% mutate(pct = n / sum(n)) %>% ungroup() %>%
  ggplot(aes(x = ambito, y = pct, fill = agua_potable)) +
  geom_col(position = "fill") +
  scale_y_continuous(labels = percent) +
  labs(
    title = "Agua potable por ámbito",
    subtitle = "% de hogares dentro de cada ámbito",
    x = "Ámbito",
    y = "Participación (%)",
    fill = "¿Agua potable?",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(11) +
  theme(plot.title = element_text(hjust = .5, face = "bold"),
        plot.subtitle = element_text(hjust = .5),
        plot.caption = element_text(hjust = 1),
        plot.caption.position = "plot",
        legend.position = "bottom",
        panel.grid.minor = element_blank())

orden_regiones <- enaho_agua_f %>%
  filter(!is.na(region), !is.na(agua_potable)) %>%
  group_by(region) %>%
  summarise(pct_si = mean(agua_potable == "Sí"), .groups = "drop") %>%
  arrange(pct_si) %>% pull(region)

enaho_agua_f %>%
  filter(!is.na(region), !is.na(ambito), !is.na(agua_potable)) %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  ggplot(aes(x = region, fill = agua_potable)) +
  geom_bar(position = "fill") +
  coord_flip() +
  facet_wrap(~ ambito, nrow = 1) +
  scale_y_continuous(labels = percent) +
  labs(
    title = "Agua potable por región y ámbito",
    subtitle = "Participación (%) dentro de cada región",
    x = "Región",
    y = "Participación (%)",
    fill = "¿Agua potable?",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(11) +
  theme(plot.title = element_text(hjust = .5, face = "bold"),
        plot.subtitle = element_text(hjust = .5),
        plot.caption = element_text(hjust = 1),
        plot.caption.position = "plot",
        legend.position = "bottom",
        panel.grid.minor = element_blank())

brecha <- enaho_agua_f %>%
  filter(!is.na(region), !is.na(ambito), !is.na(agua_potable)) %>%
  group_by(region, ambito) %>%
  summarise(pct_si = mean(agua_potable == "Sí"), .groups = "drop") %>%
  pivot_wider(names_from = ambito, values_from = pct_si)

orden_regiones <- brecha %>%
  mutate(brecha = Urbano - Rural) %>%
  arrange(brecha) %>% pull(region)

brecha %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  ggplot() +
  geom_segment(aes(x = 1, xend = 2, y = Rural, yend = Urbano)) +
  geom_point(aes(x = 1, y = Rural), size = 2) +
  geom_point(aes(x = 2, y = Urbano), size = 2) +
  scale_y_continuous(labels = percent) +
  scale_x_continuous(breaks = c(1,2), labels = c("Rural","Urbano")) +
  coord_flip() +
  facet_wrap(~ region, ncol = 4, scales = "free_y") +
  labs(
    title = "Brecha urbano–rural en agua potable por región",
    subtitle = "% de hogares con agua potable (línea une Rural→Urbano)",
    x = "",
    y = "% de hogares con agua potable",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(11) +
  theme(plot.title = element_text(hjust = .5, face = "bold"),
        plot.subtitle = element_text(hjust = .5),
        plot.caption = element_text(hjust = 1),
        plot.caption.position = "plot",
        panel.grid.minor = element_blank())

enaho_agua_f %>%
  filter(!is.na(ambito), !is.na(fuente_agua)) %>%
  count(ambito, fuente_agua) %>%
  group_by(ambito) %>% mutate(pct = n / sum(n)) %>% ungroup() %>%
  ggplot(aes(x = fuente_agua, y = pct, fill = ambito)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title = "Fuente principal de agua por ámbito",
    subtitle = "Distribución nacional (%)",
    x = "Fuente de agua",
    y = "Porcentaje de hogares",
    fill = "Ámbito",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(11) +
  theme(plot.title = element_text(hjust = .5, face = "bold"),
        plot.subtitle = element_text(hjust = .5),
        legend.position = "bottom",
        plot.caption = element_text(hjust = 1),
        plot.caption.position = "plot",
        panel.grid.minor = element_blank())

orden_regiones <- enaho_agua_f %>%
  filter(!is.na(region), !is.na(paga_servicio)) %>%
  group_by(region) %>%
  summarise(pct_paga = mean(paga_servicio == "Sí"), .groups = "drop") %>%
  arrange(pct_paga) %>% pull(region)

enaho_agua_f %>%
  filter(!is.na(region), !is.na(ambito), !is.na(paga_servicio)) %>%
  mutate(region = factor(region, levels = orden_regiones)) %>%
  ggplot(aes(x = region, fill = paga_servicio)) +
  geom_bar(position = "fill") +
  coord_flip() +
  facet_wrap(~ ambito, nrow = 1) +
  scale_y_continuous(labels = percent) +
  labs(
    title = "Hogares que pagan por el servicio por región y ámbito",
    subtitle = "Participación (%) dentro de cada región",
    x = "Región",
    y = "Participación (%)",
    fill = "¿Paga?",
    caption = "Fuente: ENAHO 2024"
  ) +
  theme_minimal(11) +
  theme(plot.title = element_text(hjust = .5, face = "bold"),
        plot.subtitle = element_text(hjust = .5),
        legend.position = "bottom",
        plot.caption = element_text(hjust = 1),
        plot.caption.position = "plot",
        panel.grid.minor = element_blank())