El presente archivo R Markdown detalla el proceso de limpieza y visualización de los datos obtenidos de la Encuesta Nacional de Hogares (ENAHO) 2024. El objetivo es transformar los datos crudos en información útil para análisis posteriores, específicamente aquellas variables vinculadas al agua y saneamiento.

Es por ello que la data se estructura en las siguientes secciones:

  • 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 [fuente_agua]: 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 [agua_potable]: ¿El agua es potable? (Rango 1-2)

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

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

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

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

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

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

    1. No
  • P110G [entidad_pago]: ¿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 [gasto_agua_pagado]: El último gasto mensual por consumo de: Agua, ¿pagado por algún miembro de este hogar?

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

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

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

  • T110 [abastecimiento_recod]: (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")
#install.packages("readxl")

2 Carga de librerías

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

3 Carga de datos

enaho_agua = import("enaho_agua.csv")
ubigeo_cat <- read_excel("geodir-ubigeo-inei.xlsx", sheet = "ubigeo_inei") %>%
  mutate(
    ubigeo = str_pad(as.character(Ubigeo), width = 6, side = "left", pad = "0"),
    cod_dpto = str_sub(ubigeo, 1, 2),
    cod_prov = str_sub(ubigeo, 3, 4),
    cod_dist = str_sub(ubigeo, 5, 6)
  )

4 Procesamiento y limpieza

# Configuración inicial

pal_si_no <- c("No" = "#D73027", "Sí" = "#1F78B4")  # Rojo para No, Azul para Sí

# Helper para aplicar paleta Sí/No con etiquetas de % en ejes
scale_fill_si_no <- function(...) {
  scale_fill_manual(values = pal_si_no, ...)
}

# Tema general
tema_apoyo <- function(base_size = 11) {
  theme_minimal(base_size = base_size) +
    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()
    )
}
# Preparación de datos

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, provincia y distrito a partir del UBIGEO
  mutate(
    ubigeo   = str_pad(as.character(ubigeo), width = 6, side = "left", pad = "0"),
    cod_dpto = substr(ubigeo, 1, 2),
    cod_prov = substr(ubigeo, 3, 4),
    cod_dist = substr(ubigeo, 5, 6),

    # Estrato, fuente, etc.
    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)
  )
# Creación de variables: departamento, provincia y distrito

enaho_agua_f <- enaho_agua_f %>%
  left_join(
    ubigeo_cat %>%
      select(ubigeo, Departamento, Provincia, Distrito),
    by = "ubigeo"
  )
names(enaho_agua_f)
##  [1] "ubigeo"                 "estrato"                "fuente_agua"           
##  [4] "agua_potable"           "cloro_residual"         "agua_todos_dias"       
##  [7] "horas_dia_diario"       "dias_semana"            "horas_dia_no_diario"   
## [10] "paga_servicio"          "entidad_pago"           "gasto_agua_pagado"     
## [13] "gasto_agua_donado"      "gasto_agua_autoconsumo" "gasto_agua_hogar"      
## [16] "abastecimiento_recod"   "cod_dpto"               "cod_prov"              
## [19] "cod_dist"               "gasto_agua_total"       "Departamento"          
## [22] "Provincia"              "Distrito"

5 Visualización de datos

5.1 Agua potable por departamento

Este gráfico muestra el porcentaje de hogares con y sin acceso a agua potable en cada departamento del país. Permite identificar las regiones con mayores brechas de cobertura de agua segura.

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

enaho_agua_f %>%
  mutate(Departamento = factor(Departamento, levels = orden_dep),
         agua_potable = fct_relevel(agua_potable, "No", "Sí")) %>%
  filter(!is.na(Departamento), !is.na(agua_potable)) %>%
  ggplot(aes(x = Departamento, fill = agua_potable)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  scale_fill_manual(values = pal_si_no, name = "¿Agua potable?") +
  labs(
    title   = "Acceso a agua potable por Departamento",
    subtitle= "% de hogares dentro de cada departamento",
    x = "Departamento", y = "Participación (%)",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.2 Entidad de pago (nacional)

Se observa a qué tipo de entidad pagan los hogares por el servicio de agua (EPS, municipalidades, organizaciones comunales, camiones cisterna u otras). Refleja la estructura institucional del suministro de agua a nivel nacional.

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 (%)",
    x = "Entidad", y = "Porcentaje de hogares",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.3 Entidad de pago por departamento

Presenta cómo varía, dentro de cada departamento, la entidad a la que se paga por el servicio de agua. Evidencia diferencias territoriales en la provisión y gestión del servicio.

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

enaho_agua_f %>%
  filter(paga_servicio == "Sí", !is.na(entidad_pago), !is.na(Departamento)) %>%
  mutate(Departamento = factor(Departamento, levels = orden_dep)) %>%
  ggplot(aes(x = Departamento, fill = entidad_pago)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Entidad de pago del servicio de agua por Departamento",
    subtitle= "% dentro de los hogares que pagan",
    x = "Departamento", y = "Participación (%)",
    fill = "Entidad",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.4 Fuente principal de agua (nacional)

Muestra la fuente principal de abastecimiento de agua a nivel nacional (red pública, pozo, río, cisterna, etc.). Permite dimensionar la dependencia de infraestructuras seguras frente a fuentes más vulnerables.

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 abastecimiento de agua",
    subtitle= "Distribución nacional (%)",
    x = "Fuente de agua", y = "Porcentaje de hogares",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.5 Fuente principal de agua por departamento

Indica, dentro de cada departamento, qué fuentes de agua son más utilizadas por los hogares. Sirve para identificar regiones que dependen de fuentes más precarias o inseguras.

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

enaho_agua_f %>%
  filter(!is.na(Departamento), !is.na(fuente_agua)) %>%
  mutate(Departamento = factor(Departamento, levels = orden_dep)) %>%
  ggplot(aes(x = Departamento, fill = fuente_agua)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  labs(
    title   = "Fuente principal de agua por Departamento",
    subtitle= "Participación dentro de cada departamento",
    x = "Departamento", y = "Participación (%)",
    fill = "Fuente",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.6 Cloro residual (nacional)

Expone los niveles de cloro residual en el agua consumida por los hogares (seguro, dosificación inadecuada, sin cloro). Es un indicador directo de la calidad microbiológica del agua.

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"
  ) +
  tema_apoyo()

5.7 Dosificación inadecuada por Departamento

Enfocado solo en los hogares con cloro residual “dosificación inadecuada”. Muestra qué departamentos presentan mayores problemas de control en la calidad del agua distribuida.

enaho_agua_f %>%
  filter(!is.na(cloro_residual), !is.na(Departamento)) %>%
  count(Departamento, cloro_residual) %>%
  group_by(Departamento) %>%
  mutate(pct = n / sum(n)) %>%
  ungroup() %>%
  filter(cloro_residual == "Dosificación inadecuada") %>%
  ggplot(aes(y = fct_reorder(Departamento, pct), x = pct)) +
  geom_col() +
  scale_x_continuous(labels = percent_format(accuracy = 1)) +
  labs(
    title    = "Dosificación inadecuada del cloro por Departamento",
    subtitle = "% de hogares dentro de cada departamento",
    x = "Porcentaje de hogares", y = "Departamento",
    caption  = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.8 Acceso al servicio de agua todos los días por departamento

Indica qué porcentaje de hogares recibe agua todos los días de la semana. Es un indicador de la continuidad y confiabilidad del servicio.

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

enaho_agua_f %>%
  mutate(Departamento = factor(Departamento, levels = orden_dep),
         agua_todos_dias = fct_relevel(agua_todos_dias, "No", "Sí")) %>%
  filter(!is.na(Departamento), !is.na(agua_todos_dias)) %>%
  ggplot(aes(x = Departamento, fill = agua_todos_dias)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  scale_fill_manual(values = pal_si_no, name = "¿Todos los días?") +
  labs(
    title   = "Acceso al servicio de agua todos los días",
    subtitle= "% de hogares dentro de cada departamento",
    x = "Departamento", y = "Participación (%)",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.9 Horas de serivicio al día

Caja de distribución de las horas diarias de servicio reportadas por los hogares, por departamento. Permite identificar desigualdades en la cantidad de horas que llega el agua en distintas regiones.

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

enaho_agua_f %>%
  filter(!is.na(Departamento), !is.na(horas_dia_diario)) %>%
  mutate(Departamento = factor(Departamento, levels = orden_dep)) %>%
  ggplot(aes(x = Departamento, y = horas_dia_diario)) +
  geom_boxplot(outlier.alpha = 0.25) +
  coord_flip() +
  labs(
    title   = "Horas de servicio de agua al día",
    subtitle= "Distribución por departamento (entre quienes reportan)",
    x = "Departamento", y = "Horas por día",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.10 Pago por el serivicio (Sí/No)

Muestra el porcentaje de hogares que pagan (o no) por el servicio de agua en cada departamento. Esto da información sobre la sostenibilidad financiera del servicio y la formalidad del acceso.

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

enaho_agua_f %>%
  mutate(Departamento = factor(Departamento, levels = orden_dep),
         paga_servicio = fct_relevel(paga_servicio, "No", "Sí")) %>%
  filter(!is.na(Departamento), !is.na(paga_servicio)) %>%
  ggplot(aes(x = Departamento, fill = paga_servicio)) +
  geom_bar(position = "fill") +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  scale_fill_manual(values = pal_si_no, name = "¿Paga?") +
  labs(
    title   = "Hogares que pagan por el servicio de agua",
    subtitle= "% de hogares dentro de cada departamento",
    x = "Departamento", y = "Participación (%)",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.11 Gasto mensual en agua (histograma)

Distribución del gasto mensual en agua reportado por los hogares. Ayuda a dimensionar el esfuerzo económico que hacen las familias, tanto a nivel de capacidad de pago como de inequidades.

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"
  ) +
  tema_apoyo()

5.12 Hogares sin agua potable + con cloro inadecuado o ausente

Clasifica los hogares en tres grupos: sin agua potable, con agua insegura (cloro insuficiente o ausente) y agua segura. Resume el tamaño del mercado potencial que podría beneficiarse de tecnologías de filtrado como Sawyer.

enaho_agua_f %>%
  mutate(
    riesgo = case_when(
      agua_potable == "No" ~ "Sin agua potable",
      cloro_residual %in% c("Dosificación inadecuada","Sin cloro") ~ "Con agua insegura",
      TRUE ~ "Segura"
    )
  ) %>%
  count(riesgo) %>%
  mutate(pct = n / sum(n)) %>%
  ggplot(aes(x = fct_reorder(riesgo, pct), y = pct, fill = riesgo)) +
  geom_col() +
  coord_flip() +
  scale_y_continuous(labels = percent) +
  scale_fill_manual(values = c("Sin agua potable" = "#D73027",
                               "Con agua insegura" = "#FC8D59",
                               "Segura" = "#1F78B4")) +
  labs(
    title   = "Condición de seguridad del agua en los hogares",
    subtitle= "Segmento de mercado potencial para filtros Sawyer",
    x = "", y = "Porcentaje de hogares",
    fill = "Condición",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.13 Mapa de calor de riesgo por departamento

Ranking de departamentos según el porcentaje de hogares en riesgo (sin agua potable o con cloro inadecuado/sin cloro). Permite priorizar territorios para intervenciones o mercado objetivo.

riesgo_dep <- enaho_agua_f %>%
  filter(!is.na(Departamento)) %>%
  mutate(riesgo = agua_potable == "No" | cloro_residual %in% c("Dosificación inadecuada","Sin cloro")) %>%
  group_by(Departamento) %>%
  summarise(pct_riesgo = mean(riesgo, na.rm = TRUE), .groups = "drop") %>%
  arrange(desc(pct_riesgo))

riesgo_dep %>%
  ggplot(aes(x = pct_riesgo, y = fct_reorder(Departamento, pct_riesgo))) +
  geom_col(fill = "#D73027") +
  scale_x_continuous(labels = percent) +
  labs(
    title   = "Departamentos con mayor exposición a agua insegura",
    subtitle= "% de hogares sin agua potable o con cloro inadecuado",
    x = "Porcentaje de hogares en riesgo", y = "Departamento",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.14 Cruce con ámbito rural

Compara la condición del agua (segura vs. en riesgo) entre ámbitos urbano y rural. Destaca la mayor vulnerabilidad de la población rural, donde suelen concentrarse los mayores problemas de acceso.

enaho_agua_f <- enaho_agua_f %>%
  mutate(
    # si estrato es factor con etiquetas, intento convertir a número
    estrato_num = suppressWarnings(as.integer(as.character(estrato))),
    ambito = case_when(
      # Caso 1: tengo número 1–8
      !is.na(estrato_num) & estrato_num %in% 1:6 ~ "Urbano",
      !is.na(estrato_num) & estrato_num %in% 7:8 ~ "Rural",
      # Caso 2: estrato con etiquetas tipo "AER Compuesto"/"AER Simple"
      is.na(estrato_num) & !is.na(estrato) & str_detect(as.character(estrato), "AER") ~ "Rural",
      is.na(estrato_num) & !is.na(estrato) ~ "Urbano",
      TRUE ~ NA_character_
    ),
    ambito = factor(ambito, levels = c("Urbano","Rural"))
  )

enaho_agua_f %>%
  mutate(riesgo = agua_potable == "No" | cloro_residual %in% c("Dosificación inadecuada","Sin cloro")) %>%
  count(ambito, riesgo) %>%
  group_by(ambito) %>%
  mutate(pct = n/sum(n)) %>%
  ungroup() %>%
  ggplot(aes(x = ambito, y = pct, fill = riesgo)) +
  geom_col(position = "fill") +
  scale_y_continuous(labels = percent) +
  scale_fill_manual(values = c("TRUE" = "#D73027", "FALSE" = "#1F78B4"),
                    labels = c("TRUE"="En riesgo","FALSE"="Agua segura")) +
  labs(
    title   = "Condición del agua por ámbito",
    subtitle= "Mayor vulnerabilidad en zonas rurales",
    x = "Ámbito", y = "Participación (%)",
    fill = "Condición",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.15 Cacidad de pago vs riesgo

Muestra el gasto mensual en agua de los hogares, diferenciado entre los que cuentan con agua segura y los que están en riesgo. Evidencia que muchas familias invierten dinero pero no acceden a agua de calidad.

enaho_agua_f %>%
  mutate(riesgo = agua_potable == "No" | cloro_residual %in% c("Dosificación inadecuada","Sin cloro")) %>%
  filter(!is.na(gasto_agua_total), gasto_agua_total >= 0) %>%
  mutate(riesgo = ifelse(riesgo, "En riesgo", "Seguro")) %>%
  ggplot(aes(x = gasto_agua_total, fill = riesgo)) +
  geom_histogram(bins = 40, position = "identity", alpha = 0.6) +
  scale_x_continuous(labels = label_number(big.mark = ",")) +
  scale_fill_manual(values = c("En riesgo"="#D73027","Seguro"="#1F78B4")) +
  labs(
    title   = "Gasto mensual en agua por condición de riesgo",
    subtitle= "Muchos hogares invierten pero siguen sin agua segura",
    x = "Gasto mensual en agua (moneda local)", y = "Número de hogares",
    fill = "Condición",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()

5.16 Top 10 provincias con mayor riesgo

Ranking de provincias con mayor porcentaje de hogares en riesgo (sin agua potable o con cloro inadecuado/sin cloro). Útil para focalizar intervenciones o estrategias comerciales a nivel subnacional.

top_prov <- enaho_agua_f %>%
  filter(!is.na(Provincia)) %>%
  mutate(riesgo = agua_potable == "No" | cloro_residual %in% c("Dosificación inadecuada","Sin cloro")) %>%
  group_by(Provincia) %>%
  summarise(pct_riesgo = mean(riesgo, na.rm = TRUE), .groups = "drop") %>%
  arrange(desc(pct_riesgo)) %>%
  slice_head(n = 10)

ggplot(top_prov, aes(x = pct_riesgo, y = fct_reorder(Provincia, pct_riesgo))) +
  geom_col(fill = "#D73027") +
  scale_x_continuous(labels = percent) +
  labs(
    title   = "Top 10 provincias con mayor exposición a agua insegura",
    subtitle= "% de hogares en riesgo (sin agua potable o con cloro inadecuado)",
    x = "Porcentaje de hogares en riesgo", y = "Provincia",
    caption = "Fuente: ENAHO 2024"
  ) +
  tema_apoyo()