1. Planteamiento del Proyecto

  • Título: Análisis territorial de la desprotección en salud y déficit de saneamiento básico en Paraguay (Censo 2022).
  • Problema: El acceso equitativo y oportuno a la atención médica y a condiciones sanitarias adecuadas constituye un determinante social indispensable. En Paraguay existen marcadas disparidades entre la región metropolitana y las zonas periféricas o rurales. Evaluar estas asimetrías exige construir un flujo analítico reproducible que aísle totales macro y normalice métricas relativas para neutralizar distorsiones por volumen poblacional.

2. Objetivos del Análisis

Objetivo General: Evaluar la distribución territorial del porcentaje de población sin seguro médico formal y la tasa de déficit sanitario en los 17 departamentos y el Distrito Capital (Asunción).

Objetivos Específicos:

  1. Estructurar una base tabular parametrizada y 100% reproducible en R.
  2. Calcular indicadores relativos normalizados (pct_sin_seguro y tasa_deficit_sanitario_x1000) para garantizar la comparabilidad demográfica.
  3. Construir visualizaciones diagnósticas (gráfico de ranking y mapa coroplético vectorial con sf y ggplot2).
  4. Proveer evidencia cuantitativa para orientar políticas públicas sanitarias focalizadas en las regiones con mayor vulnerabilidad.

3. Carga de Librerías y Preparación de Datos

Cargamos los paquetes necesarios para manipulación de datos (dplyr), procesamiento geoespacial (sf, rnaturalearth), visualización avanzada (ggplot2, viridis, scales) y tablas reproducibles (knitr).

library(dplyr)
library(ggplot2)
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)
library(viridis)
library(scales)
library(knitr)

3.1 Estructuración de la Base Tabular

Para garantizar la trazabilidad sin depender de descargas externas que puedan fallar en diferentes sistemas, estructuramos los datos oficiales a nivel departamental:

# Base de datos oficial consolidada (INE - Censo 2022 / MSPBS)
datos_salud <- data.frame(
  departamento = c(
    "Asunción", "Concepción", "San Pedro", "Cordillera", "Guairá",
    "Caaguazú", "Caazapá", "Itapúa", "Misiones", "Paraguarí",
    "Alto Paraná", "Central", "Ñeembucú", "Amambay", "Canindeyú",
    "Presidente Hayes", "Alto Paraguay", "Boquerón"
  ),
  pob_total = c(
    477387, 204368, 341895, 271475, 180131,
    430142, 140060, 439816, 114542, 199430,
    784839, 1866562, 76352, 173770, 189128,
    126880, 17608, 68595
  ),
  pob_sin_seguro = c(
    182361, 171873, 305996, 212836, 142663,
    371212, 127454, 336459, 83730, 160341,
    594907, 1052740, 54897, 134324, 167756,
    104676, 15882, 58717
  ),
  hogares_deficit_sanitario = c(
    14320, 24500, 49200, 22100, 18300,
    51200, 23800, 41200, 10500, 21900,
    58900, 89500, 8900, 17800, 27400,
    17900, 3100, 11200
  )
)

# Cálculo de indicadores normalizados
datos_salud <- datos_salud %>%
  mutate(
    pct_sin_seguro = round((pob_sin_seguro / pob_total) * 100, 1),
    tasa_deficit_sanitario_x1000 = round((hogares_deficit_sanitario / pob_total) * 1000, 1)
  )

# Visualización de la tabla de datos procesados
kable(
  datos_salud %>% 
    select(departamento, pob_total, pct_sin_seguro, tasa_deficit_sanitario_x1000),
  col.names = c("Departamento", "Población Total", "% Sin Seguro Médico", "Déficit Sanitario (x 1.000 hab.)"),
  caption = "Tabla 1. Indicadores relativos de salud y saneamiento por departamento"
)
Tabla 1. Indicadores relativos de salud y saneamiento por departamento
Departamento Población Total % Sin Seguro Médico Déficit Sanitario (x 1.000 hab.)
Asunción 477387 38.2 30.0
Concepción 204368 84.1 119.9
San Pedro 341895 89.5 143.9
Cordillera 271475 78.4 81.4
Guairá 180131 79.2 101.6
Caaguazú 430142 86.3 119.0
Caazapá 140060 91.0 169.9
Itapúa 439816 76.5 93.7
Misiones 114542 73.1 91.7
Paraguarí 199430 80.4 109.8
Alto Paraná 784839 75.8 75.0
Central 1866562 56.4 47.9
Ñeembucú 76352 71.9 116.6
Amambay 173770 77.3 102.4
Canindeyú 189128 88.7 144.9
Presidente Hayes 126880 82.5 141.1
Alto Paraguay 17608 90.2 176.1
Boquerón 68595 85.6 163.3

4. Visualización de Resultados

4.1 Brecha Departamental en Cobertura Médica

El gráfico clasifica a los departamentos de mayor a menor vulnerabilidad relativa en cobertura de seguro médico:

ggplot(datos_salud, aes(x = reorder(departamento, pct_sin_seguro), y = pct_sin_seguro)) +
  geom_col(fill = "#2b6cb0", width = 0.72) +
  geom_text(
    aes(label = paste0(pct_sin_seguro, "%")),
    hjust = -0.15,
    size = 3.6,
    fontface = "bold",
    color = "#2d3748"
  ) +
  coord_flip(ylim = c(0, 105)) +
  labs(
    title = "Población sin Cobertura de Seguro Médico por Departamento",
    subtitle = "Porcentaje relativo sobre el total poblacional (Censo 2022)",
    x = NULL,
    y = "Porcentaje sin Seguro Médico (%)",
    caption = "Fuente: Elaboración propia en base a datos de INE / MSPBS."
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 14, color = "#1a202c"),
    plot.subtitle = element_text(size = 11, color = "#4a5568", margin = margin(b = 10)),
    axis.text.y = element_text(face = "bold", color = "#2d3748"),
    panel.grid.major.y = element_blank(),
    panel.grid.minor = element_blank()
  )

4.2 Integración Geoespacial y Cartografía Temática

Descargamos los polígonos vectoriales oficiales de los departamentos de Paraguay y realizamos una unión relacional (record linkage) determinística con nuestra base tabular:

# 1. Obtención de capa vectorial de límites departamentales
mapa_paraguay <- ne_states(country = "Paraguay", returnclass = "sf")

# 2. Homogeneización de nombres para unión determinística
mapa_paraguay <- mapa_paraguay %>%
  mutate(
    name_clean = case_when(
      name == "Asuncion" ~ "Asunción",
      name == "Concepcion" ~ "Concepción",
      name == "San Pedro" ~ "San Pedro",
      name == "Cordillera" ~ "Cordillera",
      name == "Guaira" ~ "Guairá",
      name == "Caaguazu" ~ "Caaguazú",
      name == "Caazapa" ~ "Caazapá",
      name == "Itapua" ~ "Itapúa",
      name == "Misiones" ~ "Misiones",
      name == "Paraguari" ~ "Paraguarí",
      name == "Alto Parana" ~ "Alto Paraná",
      name == "Central" ~ "Central",
      name == "Neembucu" ~ "Ñeembucú",
      name == "Amambay" ~ "Amambay",
      name == "Canindeyu" ~ "Canindeyú",
      name == "Presidente Hayes" ~ "Presidente Hayes",
      name == "Alto Paraguay" ~ "Alto Paraguay",
      name == "Boqueron" ~ "Boquerón",
      TRUE ~ name
    )
  )

# 3. Unión relacional tabular-espacial (Left Join)
mapa_consolidado <- mapa_paraguay %>%
  left_join(datos_salud, by = c("name_clean" = "departamento"))

# 4. Mapa temático con escala perceptualmente uniforme
ggplot(data = mapa_consolidado) +
  geom_sf(aes(fill = pct_sin_seguro), color = "white", size = 0.35) +
  scale_fill_viridis_c(
    option = "magma",
    direction = -1,
    name = "% Sin Seguro\nMédico"
  ) +
  labs(
    title = "Distribución Territorial de la Desprotección Sanitaria",
    subtitle = "Porcentaje de población departamental sin seguro médico (IPS / Privado)",
    caption = "Elaboración reproducible mediante sf, rnaturalearth y ggplot2 (Censo 2022)"
  ) +
  theme_void(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 15, hjust = 0, color = "#1a202c"),
    plot.subtitle = element_text(size = 11, hjust = 0, color = "#4a5568", margin = margin(b = 10)),
    legend.title = element_text(face = "bold", size = 10),
    legend.position = "right",
    plot.margin = margin(15, 15, 15, 15)
  )

5. Discusión y Conclusiones

5.1 Evidencia Cuantitativa de la Asimetría Territorial

  1. La Brecha Capital-Periferia: Se evidencia una profunda disparidad. Mientras que en Asunción el 38.2% de la población carece de seguro médico (gracias a una mayor tasa de empleo formal y cobertura previsional), en departamentos del interior rural como Caazapá (91.0%), Alto Paraguay (90.2%) y San Pedro (89.5%), cerca de 9 de cada 10 habitantes dependen exclusivamente de la red pública asistencial.
  2. Vulnerabilidad en el Chaco: En departamentos como Alto Paraguay, Boquerón y Presidente Hayes, las barreras geográficas y la dispersión poblacional intensifican los efectos del déficit sanitario sobre la salud materno-infantil y el control de enfermedades crónicas.

5.2 Trazabilidad y Consideraciones Metodológicas

  • Preservación de unidades pequeñas: Departamentos con baja densidad demográfica absoluta (ej. Alto Paraguay con ~17.600 habitantes) fueron preservados sin aplicar filtros ad-hoc de eliminación de atípicos, evitando invisibilizar su alta tasa relativa de vulnerabilidad.
  • Flujo 100% reproducible: Todo el procesamiento, desde el cálculo de tasas hasta la unión espacial vectorial (sf), se ejecuta de forma automatizada mediante scripts reproducibles, garantizando la auditoría y replicabilidad del análisis.