En Argentina existen marcadas inequidades en salud que pueden suponerse relacionadas, en gran parte, a una desigual distribución de los recursos y facilidades para la atención dentro del sistema de salud. En este marco, seleccionando dicho país como recorte geográfico, este trabajo propone responder a las siguientes preguntas de investigación:
¿Cómo es la distribución geográfica (a escala departamental) de los establecimientos de salud con internación (del 2do o 3er nivel de atención)? ¿Cómo se distribuyen dichos establecimientos si consideramos su sector (público o privado) y/o su tipología de prestación principal?
¿Cómo es la densidad de estos establecimientos (cantidad por cada 10.000 habitantes) en 2022? ¿Existe una distribución desigual en el territorio nacional de este indicador?
library(tidyverse)
library(sf)
library(ggmap)
library(ggplot2)
library(haven)
library(leaflet)
library(leaflet.extras)
library(dplyr)
Este dataset, en formato vectorial (geometría de polígonos), se descargó del sitio web oficial del Instituto Geográfico Nacional (IGN). Según esta fuente, los Departamentos se definen como una división político administrativa de Argentina de segundo orden, que incluye partido y comuna.
Cargo entonces la capa en mi ambiente de trabajo:
deptos_shp <- st_read("data/departamentoPolygon.shp",
stringsAsFactors = TRUE,
options = "ENCODING=UTF-8")
## options: ENCODING=UTF-8
## Reading layer `departamentoPolygon' from data source
## `C:\Proyecto_FLACSO_CienciaDeDatos_II\data\departamentoPolygon.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 529 features and 8 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -74 ymin: -90 xmax: -25 ymax: -21.78086
## Geodetic CRS: WGS 84
Confirmo a continuación que se trata de un dataset geográfico y reviso su sistema de coordenadas:
class(deptos_shp)
## [1] "sf" "data.frame"
st_crs(deptos_shp)
## Coordinate Reference System:
## User input: WGS 84
## wkt:
## GEOGCRS["WGS 84",
## DATUM["World Geodetic System 1984",
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["latitude",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["longitude",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## ID["EPSG",4326]]
Exploro a continuación las características generales de mi dataset, comenzando por su visualización en un mapa (cuya estética será ajustada mas adelante):
ggplot()+
geom_sf(data=deptos_shp)
Reviso las dimensiones del dataset y sus variables:
dim(deptos_shp)
## [1] 529 9
head(deptos_shp)
## Simple feature collection with 6 features and 8 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -61.12208 ymin: -36.37492 xmax: -58.64951 ymax: -33.88293
## Geodetic CRS: WGS 84
## gid objeto fna gna nam
## 1 531 Departamento Partido de Saladillo Partido Saladillo
## 2 532 Departamento Partido de Las Flores Partido Las Flores
## 3 533 Departamento Partido de Rojas Partido Rojas
## 4 534 Departamento Partido de Escobar Partido Escobar
## 5 535 Departamento Partido de Jos\xe9 C. Paz Partido Jos\xe9 C. Paz
## 6 536 Departamento Partido de San Antonio de Areco Partido San Antonio de Areco
## in1 fdc sag
## 1 06707 ARBA - Gerencia de Servicios Catastrales IGN
## 2 06455 ARBA - Gerencia de Servicios Catastrales IGN
## 3 06686 ARBA - Gerencia de Servicios Catastrales IGN
## 4 06252 ARBA - Gerencia de Servicios Catastrales IGN
## 5 06412 ARBA - Gerencia de Servicios Catastrales IGN
## 6 06735 ARBA - Gerencia de Servicios Catastrales IGN
## geometry
## 1 MULTIPOLYGON (((-59.61517 -...
## 2 MULTIPOLYGON (((-59.11058 -...
## 3 MULTIPOLYGON (((-60.89525 -...
## 4 MULTIPOLYGON (((-58.71215 -...
## 5 MULTIPOLYGON (((-58.78948 -...
## 6 MULTIPOLYGON (((-59.32196 -...
Se observa que la capa incluye 529 departamentos, con información referida a 9 variables, siendo la de mi interés el código departamental (variable in1), el cual me permitirá realizar las uniones entre capas. Renombro esta variable como codigo y controlo que se renombró correctamente:
deptos_shp <- deptos_shp %>%
rename(codigo = in1)
names(deptos_shp)
## [1] "gid" "objeto" "fna" "gna" "nam" "codigo" "fdc"
## [8] "sag" "geometry"
Esta base de datos, en formato .dta, recopila información del total de población por depto. a partir del Censo Nacional de Población, Hogares y Viviendas 2022, del INDEC (Argentina). Procedo a la carga de estos datos en mi ambiente de trabajo:
censo2022 <- read_dta("data/censo_2022.dta")
Exploro este dataset:
class(censo2022)
## [1] "tbl_df" "tbl" "data.frame"
dim(censo2022)
## [1] 528 11
Se observa que es una base de datos tabular, conformada por 528 líneas (departamentos). Debe notarse que en este dataset, a diferencia del anterior, se excluye a las Islas del Atlántico Sur (código 91021), de allí la diferencia en el total de deptos de ambas bases de datos. Las variables que se incluyen son 11, correspondientes a las que se despliegan a continuación:
names(censo2022)
## [1] "codigo" "provincia" "departamento" "pob_2022" "viv_total"
## [6] "viv_partic" "viv_presen" "viv_ausent" "viv_colect" "Depto"
## [11] "IN1"
Para este trabajo me interesa la variable pob_2022, correspondiente al total de personas o habitantes en cada departamento.
Realizo una exploración general del dataset, con foco en la variable pob_2022:
censo2022 %>%
arrange(pob_2022) %>%
head()
## # A tibble: 6 × 11
## codigo provincia departamento pob_2022 viv_total viv_partic viv_presen
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 94028 Tierra del Fuego Antártida A… 81 3 0 0
## 2 42091 La Pampa Limay Mahuida 423 293 291 187
## 3 42084 La Pampa Lihuel Calel 443 437 436 178
## 4 26063 Chubut Mártires 754 405 403 337
## 5 42042 La Pampa Curacó 1116 713 708 459
## 6 26049 Chubut Gastre 1195 766 763 531
## # ℹ 4 more variables: viv_ausent <dbl>, viv_colect <dbl>, Depto <chr>,
## # IN1 <chr>
censo2022 %>%
arrange(desc(pob_2022)) %>%
head()
## # A tibble: 6 × 11
## codigo provincia departamento pob_2022 viv_total viv_partic viv_presen
## <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 6427 Buenos Aires La Matanza 1841247 605680 605557 568103
## 2 14014 Córdoba Capital 1505250 613263 612979 545786
## 3 82084 Santa Fe Rosario 1348725 570554 570188 496443
## 4 6441 Buenos Aires La Plata 768470 332177 331998 295518
## 5 6490 Buenos Aires Lomas de Zamora 690323 245763 245682 231233
## 6 6357 Buenos Aires General Pueyrred… 667082 343188 342942 256657
## # ℹ 4 more variables: viv_ausent <dbl>, viv_colect <dbl>, Depto <chr>,
## # IN1 <chr>
Se observa que los departamentos con menor tamaño poblacional pertenecen a las provincias de Tierra del Fuego, La Pampa y Chubut, mientras que los más poblados corresponden a departamentos de Buenos Aires, Córdoba y Santa Fe.
Exploro también si existen datos faltantes para la variable de población 2022, y calculo sus medidas resumen:
sum(is.na(censo2022$pob_2022))
## [1] 0
summary(censo2022$pob_2022)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 81 12802 32124 86917 87541 1841247
Los resultados anteriores me confirman que no hay datos faltantes para esta variable. Las medidas resumen nos muestran que en promedio los deptos. tienen una población de 86917 habitantes, aunque con un valor mediano de 32124 habitantes (rango intercuartílico de 74739), y un mínimo y máximo de 81 y 1841247 habitantes, respectivamente. Esto da cuenta de las notables diferencias entre tamaños poblacionales departamentales dentro del territorio nacional.
Controlo y confirmo que están todas las provincias argentinas en el dataset:
unique(censo2022$provincia)
## [1] "Tierra del Fuego" "Buenos Aires"
## [3] "Ciudad Autónoma de Buenos Aires" "Salta"
## [5] "RÃo Negro" "San Luis"
## [7] "Chaco" "La Rioja"
## [9] "Córdoba" "Santiago del Estero"
## [11] "Chubut" "Catamarca"
## [13] "Corrientes" "Misiones"
## [15] "Santa Fe" "Entre RÃos"
## [17] "Neuquén" "San Juan"
## [19] "Tucumán" "Mendoza"
## [21] "Jujuy" "La Pampa"
## [23] "Formosa" "Santa Cruz"
Se descarga la base Establecimientos de salud con internación, en formato vectorial (geometría de puntos), de la Plataforma abierta de datos espaciales de la Argentina. La misma se encuentra disponible en: https://poblaciones.org/cartografias/
Cargo la capa en mi ambiente de trabajo, y verifico que se trata de un dataset espacial y su sistema de coordenadas:
ptos_est_salud <- st_read("data/Establecimientos de salud con internación - Argentina.shp")
## Reading layer `Establecimientos de salud con internación - Argentina' from data source `C:\Proyecto_FLACSO_CienciaDeDatos_II\data\Establecimientos de salud con internación - Argentina.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 6532 features and 23 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: -72.88607 ymin: -54.82676 xmax: -53.64927 ymax: -22.05423
## Geodetic CRS: WGS 84
class(ptos_est_salud)
## [1] "sf" "data.frame"
st_crs(deptos_shp)
## Coordinate Reference System:
## User input: WGS 84
## wkt:
## GEOGCRS["WGS 84",
## DATUM["World Geodetic System 1984",
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["latitude",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["longitude",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## ID["EPSG",4326]]
Observo que el sistema de coordenadas es el mismo que la capa departamental, lo cual va a permitir su correcta unión.
A modo exploratorio, mapeo los puntos del dataset, correspondientes a cada establecimiento de salud con internación en Argentina, para el año 2022. Para una mejor visualización, superpongo el polígono del país como marco (esta capa en formato .shp se descargó también de la web del IGN).
Arg_shp <- st_read("data/paisPolygon.shp")
## Reading layer `paisPolygon' from data source
## `C:\Proyecto_FLACSO_CienciaDeDatos_II\data\paisPolygon.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 1 feature and 8 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -74 ymin: -89 xmax: -25 ymax: -21.78086
## Geodetic CRS: WGS 84
Construyo un mapa preliminar con los puntos de establecimientos (cuya estética será mejorada en la etapa de análisis). Como el bbox del mapa de Argentina es muy amplio (porque, como en el caso de la capa de deptos, incluye a la Antártida), se ajustan los márgenes del mapa al bbox de la capa de puntos (dataset de establecimientos de salud)
bbox_ptos_salud <- st_bbox(ptos_est_salud)
margen <- 1.5
ggplot()+
geom_sf(data=Arg_shp, size = 1, inherit.aes = FALSE)+
geom_sf(data=ptos_est_salud, fill=NA, size = 0.4, inherit.aes = FALSE)+
coord_sf(
xlim = c(bbox_ptos_salud["xmin"] - margen, bbox_ptos_salud["xmax"] + margen),
ylim = c(bbox_ptos_salud["ymin"] - margen, bbox_ptos_salud["ymax"] + margen),
expand = FALSE
)
Exploro las dimensiones y variables del dataset de puntos:
dim(ptos_est_salud)
## [1] 6532 24
names(ptos_est_salud)
## [1] "C__DIGO" "NOMBRE" "TIPOLOGIA" "CATEGORIA" "SECTOR"
## [6] "DEPENDENCI" "LOCALIDAD" "DEPARTAMEN" "BARRIO" "DOMICILIO"
## [11] "CP" "TEL__FONO" "CORREOELEC" "WEB" "RESPONSABL"
## [16] "ORIGENGEOR" "LATITUD" "LONGITUD" "IDPROV" "PROV"
## [21] "IDDPTO" "DPTO" "REDCODE" "geometry"
Vemos que el dataset incluye 6532 establecimientos de salud, y contiene 24 variables. En este caso me interesan las variables TIPOLOGIA y SECTOR, además del código departamental para las uniones de capas. Exploramos las categorías de las variables mencionadas:
unique(ptos_est_salud$SECTOR)
## [1] 1 2
unique(ptos_est_salud$TIPOLOGIA)
## [1] 6 4 5 2 3 1
Los códigos anteriores corresponden a las siguientes clasificaciones de Sector: 1-Público y 2-Privado; y de Tipología: 1-Con internación especializada en maternidad/materno infantil; 2-Con internación especializada en otras especialidades; 3-Con internación especializada en especialidades en TE (Tercera Edad); 4-Con internación especializada en pediatría; 5-Con internación especializada en salud mental; 6-Con internación general.
Para poder realizar los análisis, primero asigno los datos geográficos del mapa base departamental a la base de datos tradicional del censo 2022.
deptos_pop2022 <- left_join(deptos_shp, censo2022, by=c("codigo" = "IN1"))
Controlo y verifico la unión:
class(deptos_shp)
## [1] "sf" "data.frame"
dim(deptos_pop2022)
## [1] 529 19
names(deptos_pop2022)
## [1] "gid" "objeto" "fna" "gna" "nam"
## [6] "codigo" "fdc" "sag" "codigo.y" "provincia"
## [11] "departamento" "pob_2022" "viv_total" "viv_partic" "viv_presen"
## [16] "viv_ausent" "viv_colect" "Depto" "geometry"
sum(is.na(deptos_pop2022$pob_2022))
## [1] 1
Se observa que en la base deptos_pop2022, de tipo geográfica, se unieron las variables del dataset con datos censales. Y que solo hay 1 dato faltante de población, correspondiente al depto. mencionado de Antartida Argentina.
Contruyo un mapa con la distribución de todos los establecimientos de salud con internación sobre la capa de departamentos, mejorando su estética general:
ggplot()+
geom_sf(data=deptos_pop2022, color="white") +
geom_sf(data=ptos_est_salud, fill=NA, color = "blue", size = 0.5, alpha=0.4, inherit.aes = FALSE) +
labs(title="Establecimientos de salud con internación",
subtitle="Argentina, 2022",
caption="Fuente: REFES, Ministerio de Salud de la Nación")+
theme_void()+
theme(title=element_text(size=10, face = "bold"),
plot.caption=element_text(face = "italic", colour = "gray35",size=7)) +
coord_sf(
xlim = c(bbox_ptos_salud["xmin"] - margen, bbox_ptos_salud["xmax"] + margen),
ylim = c(bbox_ptos_salud["ymin"] - margen, bbox_ptos_salud["ymax"] + margen),
expand = FALSE
)
En este mapa, cada establecimiento de salud con internación es representado por un punto. En términos generales, y sin distinción por sector o tipología, se observa una mayor concentración de establecimientos en los departamentos de la región pampeana de Argentina, siendo la región patagónica y algunos sectores del norte del país los que parecen ubicar a los departamentos con menor cantidad de establecimientos. Para una mejor visualización, construyo un mapa de calor, como sigue.
leaflet(ptos_est_salud) %>%
addTiles() %>%
addHeatmap(radius = 15,
max = 0.05) %>%
addMiniMap()
El mapa de calor obtenido confirma en gran parte lo antes descripto, a lo que se puede agregar un punto caliente en torno a la ciudad de Mendoza.
A continuación, exploro la distribución de los establecimientos de salud considerando el Sector al que pertenece (1:Público; 2:Privado). Para proceder con los análisis convierto la variable SECTOR a factor y le asigno las etiquetas correspondientes:
ptos_est_salud$SECTOR <- factor(ptos_est_salud$SECTOR,
levels = c(1, 2),
labels = c("Público", "Privado"))
Mapeo los establecimientos (puntos) por sector, como sigue:
ggplot()+
geom_sf(data=deptos_shp) +
geom_sf(data=ptos_est_salud, aes(color=SECTOR), size = 0.5, alpha=0.4, inherit.aes = FALSE) +
labs(title="Establecimientos de salud con internación por sector",
subtitle="Argentina, 2022",
caption="Fuente: REFES, Ministerio de Salud de la Nación")+
scale_color_manual(values=c("deeppink", "blue"))+
theme_void()+
theme(title=element_text(size=10, face = "bold"),
plot.caption=element_text(face = "italic", colour = "gray35",size=7)) +
coord_sf(
xlim = c(bbox_ptos_salud["xmin"] - margen, bbox_ptos_salud["xmax"] + margen),
ylim = c(bbox_ptos_salud["ymin"] - margen, bbox_ptos_salud["ymax"] + margen),
expand = FALSE
)
La distribución de establecimientos es heterogénea a lo largo del territorio nacional, para ambos sectores. Para poder apreciar mejor su distribución diferencial por sector, construyo un mapeo facetado por dicha variable (SECTOR):
ggplot()+
geom_sf(data=deptos_shp) +
geom_sf(data=ptos_est_salud, aes(color=SECTOR), size = 0.8, alpha=0.4, inherit.aes = FALSE) +
labs(title="Establecimientos de salud con internación por sector",
subtitle="Argentina, 2022",
caption="Fuente: REFES, Ministerio de Salud de la Nación")+
scale_color_manual(values=c("deeppink", "blue"))+
theme_void()+
theme(title=element_text(size=10, face = "bold"),
plot.caption=element_text(face = "italic", colour = "gray35",size=7)) +
coord_sf(
xlim = c(bbox_ptos_salud["xmin"] - margen, bbox_ptos_salud["xmax"] + margen),
ylim = c(bbox_ptos_salud["ymin"] - margen, bbox_ptos_salud["ymax"] + margen),
expand = FALSE
) +
facet_wrap(~SECTOR)
Esto mapas muestran que los establecimientos del sector público se encuentran más distribuidos a lo largo del territorio nacional, en comparación a aquellos del sector privado, aunque con fuerte concentración en departamentos de la región centro-este. Los establecimientos del sector privado parecen concentrarse mayormente en departamentos de la región pampeana, aunque con menor presencia en los deptos. del noreste y sur de Argentina.
A continuación, para explorar la distribución de departamentos dentro de cada sector, a nivel país, se realizó el siguiente cálculo:
bysector <- ptos_est_salud %>%
group_by(SECTOR) %>%
summarise(cantidad = n()) %>%
mutate(porcentaje = cantidad / sum(cantidad) * 100)
bysector
## Simple feature collection with 2 features and 3 fields
## Geometry type: MULTIPOINT
## Dimension: XY
## Bounding box: xmin: -72.88607 ymin: -54.82676 xmax: -53.64927 ymax: -22.05423
## Geodetic CRS: WGS 84
## # A tibble: 2 × 4
## SECTOR cantidad geometry porcentaje
## * <fct> <int> <MULTIPOINT [°]> <dbl>
## 1 Público 1710 ((-66.36646 -23.39953), (-66.36746 -23.40147), (-… 26.2
## 2 Privado 4822 ((-65.70179 -23.19446), (-65.59858 -22.10262), (-… 73.8
Se observa que un 73% de los establecimientos de salud con internación de Argentina (n=4822) pertenecen al sector privado, y solo un 26% al ámbito público.
Se considera ahora la distribución de establecimientos según tipología de prestación, como sigue:
ptos_est_salud$TIPOLOGIA <- factor(
ptos_est_salud$TIPOLOGIA,
levels = c(1, 2, 3, 4, 5, 6),
labels = c("Maternidad/materno infantil",
"Otras especialidades",
"Tercera edad",
"Pediatría",
"Salud mental",
"Internación general")
)
bytipologia <- ptos_est_salud %>%
group_by(TIPOLOGIA) %>%
summarise(cantidad=n())%>%
mutate(porcentaje = cantidad / sum(cantidad) * 100)
bytipologia
## Simple feature collection with 6 features and 3 fields
## Geometry type: MULTIPOINT
## Dimension: XY
## Bounding box: xmin: -72.88607 ymin: -54.82676 xmax: -53.64927 ymax: -22.05423
## Geodetic CRS: WGS 84
## # A tibble: 6 × 4
## TIPOLOGIA cantidad geometry porcentaje
## * <fct> <int> <MULTIPOINT [°]> <dbl>
## 1 Maternidad/materno infantil 64 ((-65.20541 -24.2542), (-65.3… 0.980
## 2 Otras especialidades 628 ((-64.79597 -23.8194), (-65.2… 9.61
## 3 Tercera edad 3060 ((-65.279 -24.17929), (-65.33… 46.8
## 4 Pediatría 47 ((-65.21112 -26.84068), (-65.… 0.720
## 5 Salud mental 414 ((-63.79709 -22.53031), (-65.… 6.34
## 6 Internación general 2319 ((-66.36646 -23.39953), (-66.… 35.5
ggplot(bytipologia, aes(x = reorder(TIPOLOGIA, porcentaje), y = porcentaje, fill = TIPOLOGIA)) +
geom_col(show.legend = FALSE) +
coord_flip() +
labs(
title = "Distribución de establecimientos de salud por tipología",
x = "Tipología",
y = "% del total"
) +
scale_fill_brewer(palette = "Set2") +
theme_minimal()
Se observa que la tipología mas frecuente en Argentina es la de Establecimientos con especialidades para la tercera edad (46.8 % del total de establecimientos de salud con internación del país), seguido por aquellos de Internación General (35.5%). Por su parte, los establecimientos especializados en Pediatría y Maternidad/materno intantil representan, cada uno, menos del 1% del total. Solo un 6% de los establecimientos de salud con internación se especializan en Salud Mental.
Para describir de manera resumida la información sobre las dos variables hasta aquí analizadas, construyo ahora un gráfico de barras como sigue:
sector_tipologia <- ptos_est_salud %>%
group_by(SECTOR, TIPOLOGIA) %>%
summarise(cantidad = n(), .groups = "drop_last") %>%
group_by(SECTOR) %>%
mutate(porcentaje = cantidad / sum(cantidad) * 100) %>%
ungroup()
sector_tipologia
## Simple feature collection with 12 features and 4 fields
## Geometry type: MULTIPOINT
## Dimension: XY
## Bounding box: xmin: -72.88607 ymin: -54.82676 xmax: -53.64927 ymax: -22.05423
## Geodetic CRS: WGS 84
## # A tibble: 12 × 5
## SECTOR TIPOLOGIA cantidad geometry porcentaje
## <fct> <fct> <int> <MULTIPOINT [°]> <dbl>
## 1 Público Maternidad/materno inf… 34 ((-65.31475 -24.18148), … 1.99
## 2 Público Otras especialidades 60 ((-65.15243 -24.40583), … 3.51
## 3 Público Tercera edad 293 ((-65.33747 -24.17995), … 17.1
## 4 Público Pediatría 22 ((-65.21112 -26.84068), … 1.29
## 5 Público Salud mental 47 ((-63.79709 -22.53031), … 2.75
## 6 Público Internación general 1254 ((-66.36646 -23.39953), … 73.3
## 7 Privado Maternidad/materno inf… 30 ((-65.20541 -24.2542), (… 0.622
## 8 Privado Otras especialidades 568 ((-64.79597 -23.8194), (… 11.8
## 9 Privado Tercera edad 2767 ((-65.279 -24.17929), (-… 57.4
## 10 Privado Pediatría 25 ((-65.19789 -26.82323), … 0.518
## 11 Privado Salud mental 367 ((-65.29533 -24.18614), … 7.61
## 12 Privado Internación general 1065 ((-65.70179 -23.19446), … 22.1
ggplot(sector_tipologia, aes(x = SECTOR, y = porcentaje, fill = TIPOLOGIA)) +
geom_col(position = "fill") +
scale_y_continuous(labels = scales::percent_format(scale = 100)) +
labs(title = "Distribución de establecimientos de salud con internación",
subtitle="Tipologías dentro de cada secto. Argentina, 2022",
y = "% de establecimientos",
fill = "Tipología") +
theme_minimal()
Como lo más destacado, se observa que la tipología de establecimiento de salud más frecuente dentro del sector público es la de internación general, la cual representa el 73% de los establecimientos en este sector versus solo el 22% del total de los establecimientos en el sector privado. En cambio, en este último, la categoría con mayor porcentaje fue la de tercera edad, correspondiente al 57% de los establecimientos del sector privado.
Ahora voy a contruir un mapa interactivo, para lo cual antes debo ajustar el encoding para evitar que tildes y “ñ” salgan mal. Me aseguro además que la latitud y longitud estén en formato numérico:
ptos_est_salud <- ptos_est_salud %>%
mutate_if(is.character, iconv, from="UTF-8", to="latin1" )
ptos_est_salud$LONGITUD <- as.numeric(ptos_est_salud$LONGITUD)
ptos_est_salud$LATITUD <- as.numeric(ptos_est_salud$LATITUD)
Armo luego una paleta de colores que diferencie cada establecimiento de salud por su tipología, y con ello, ejecuto el mapa interactivo:
factpal <- colorFactor(palette = "Set2", domain = ptos_est_salud$TIPOLOGIA)
leaflet(ptos_est_salud) %>%
addTiles() %>%
addCircleMarkers(
~LONGITUD, ~LATITUD,
popup = paste("Tipología:", ptos_est_salud$TIPOLOGIA, "<br>",
"Sector:", ptos_est_salud$SECTOR),
color = ~factpal(TIPOLOGIA),
radius = 5,
fillOpacity = 0.8
) %>%
addLegend(
"bottomright",
pal = factpal,
values = ~TIPOLOGIA,
title = "Tipología",
opacity = 1
) %>%
addMiniMap()
Obtengo mi mapa, el cual permita visualizar la distribución de cada establecimiento de salud con internación de Argentina, y explorar de manera interactiva (con un click) su información conjunta de Sector y Tipología.
Respecto a las tipologías que resultaron las mas frecuente dentro de cada sector (Tercera edad en el privado e Internación General en el público), el mapa muestra claramente que los establecimientos especializados en la tercera edad se concentran principalmente en la región pampeana, mientras que los de internación general están mas distribuidos en todas las regiones del país.
Me interesa ahora explorar la distribución del indicador densidad de establecimientos de salud con internación a nivel de departamento, el cual representa la cantidad de establecimientos cada 10000 habitantes.
Para obtener este indicador, comienzo por calcular y explorar la cantidad de establecimientos por departamento:
ptos_salud_bydpto <- ptos_est_salud %>%
group_by(IDDPTO) %>%
summarise(cantidad=n())
ptos_salud_bydpto %>%
arrange(desc(cantidad)) %>%
head(3)
## Simple feature collection with 3 features and 2 fields
## Geometry type: MULTIPOINT
## Dimension: XY
## Bounding box: xmin: -64.3036 ymin: -38.10762 xmax: -57.53233 ymax: -31.32279
## Geodetic CRS: WGS 84
## # A tibble: 3 × 3
## IDDPTO cantidad geometry
## <chr> <int> <MULTIPOINT [°]>
## 1 14014 284 ((-64.14628 -31.37923), (-64.14639 -31.37925), (-64.13586 -31…
## 2 06357 214 ((-57.61112 -37.94543), (-57.62046 -37.95981), (-57.61476 -37…
## 3 82084 208 ((-60.78169 -32.92801), (-60.77317 -32.90938), (-60.81368 -32…
Los departamentos 14014, 06357 y 82082 son los que presentan mayor cantidad de establecimientos de salud con internación (con valores por encima de 200). Los mismos pertenecen a las provincias de Córdoba, Buenos Aires y Santa Fe, respectivamente.
Ahora quiero unir mis dataset utilizando left_join(), por lo cual es necesario que al menos uno de los dos datasets no sea espacial. Por eso, el siguiente paso fue transformar el dataset espacial ptos_salud_bydpto en un dataset tradicional, quitándole la geometría con la función st_set_geometry().
ptos_salud_bydpto <- ptos_salud_bydpto %>%
st_set_geometry(NULL)
head(ptos_salud_bydpto)
## # A tibble: 6 × 2
## IDDPTO cantidad
## <chr> <int>
## 1 02001 26
## 2 02002 41
## 3 02003 49
## 4 02004 37
## 5 02005 59
## 6 02006 53
class(ptos_salud_bydpto)
## [1] "tbl_df" "tbl" "data.frame"
Verifico que el dataset ya no es geográfico y realizo entonces la unión con el dataset espacial de deptos utilizando left_join(). Luego controlo la unión:
dim(deptos_pop2022)
## [1] 529 19
deptos_pop2022 <- left_join(deptos_pop2022, ptos_salud_bydpto, by = c("codigo" = "IDDPTO"))
class(deptos_pop2022)
## [1] "sf" "data.frame"
dim(deptos_pop2022)
## [1] 529 20
names(deptos_pop2022)
## [1] "gid" "objeto" "fna" "gna" "nam"
## [6] "codigo" "fdc" "sag" "codigo.y" "provincia"
## [11] "departamento" "pob_2022" "viv_total" "viv_partic" "viv_presen"
## [16] "viv_ausent" "viv_colect" "Depto" "cantidad" "geometry"
sum(is.na(deptos_pop2022$pob_2022))
## [1] 1
Compruebo que la unión se realizó correctamente, y que ahora en el dataset geográfico de deptos tengo la variable cantidad antes generada, correspondiente a la cantidad de establecimientos de salud con internación por cada departamento de Argentina. Esta me servirá para calcular el indicador densidad de establecimientos por población y mapearlo, como sigue.
Antes de proseguir, en la variable cantidad asigno valor 0 a los deptos que tienen valores NA, como sigue:
deptos_pop2022$cantidad <- ifelse(is.na(deptos_pop2022$cantidad), 0, deptos_pop2022$cantidad)
Construyo el mapa de distribución espacial del indicador de densidad de interés:
ggplot()+
geom_sf(data=deptos_pop2022, aes(fill= (cantidad / pob_2022) * 10000)) +
scale_fill_viridis_c(option = "plasma",
name = "Cantidad/10000 habitantes", direction = -1, na.value = "white" ) +
labs(title="Densidad de establecimientos de salud con internación",
subtitle="Argentina, 2022",
caption="Fuente: REFES, Ministerio de Salud de la Nación")+
theme_minimal()+
theme(title=element_text(size=10, face = "bold"),
plot.caption=element_text(face = "italic", colour = "gray35",size=7)) +
coord_sf(
xlim = c(bbox_ptos_salud["xmin"] - margen, bbox_ptos_salud["xmax"] + margen),
ylim = c(bbox_ptos_salud["ymin"] - margen, bbox_ptos_salud["ymax"] + margen),
expand = FALSE
)
Vemos que, al considera la cantidad de habitantes del departamento, el patrón geográfico difiere un poco del descripto anteriormente (basado solo en la cantidad total de establecimientos). La principal diferencia está en que, en la región patagónica, la densidad de establecimientos es alta en algunos departamentos, aunque estos datos deben interpretarse con cautela dada la baja densidad poblacional de la región. La región pampeana, en cambio, también concentra los mayores valores para este indicador, principalmente en los departamentos de la Provincia de Buenos Aires. La región del noreste y cuyana, por su parte, presenta niveles de densidad bajo en gran parte de sus departamentos.
Para aportar a la descripción de este indicador, se calcularon medidas resumen y se construyó un histograma, como sigue:
densidad <- (deptos_pop2022$cantidad / deptos_pop2022$pob_2022) * 10000
summary(densidad, na.rm = TRUE)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.0000 0.7261 1.3561 1.8044 2.3657 12.3229 1
sd(densidad, na.rm = TRUE)
## [1] 1.638263
ggplot(deptos_pop2022, aes(x = (cantidad / pob_2022) * 10000)) +
geom_histogram(binwidth = 1, fill = "pink", color = "red", alpha = 0.7) +
geom_vline(
xintercept = median((deptos_pop2022$cantidad / deptos_pop2022$pob_2022) * 10000, na.rm = TRUE),
color = "red4",
linetype = "dashed",
size = 1) +
labs(
title = "Distribución de la densidad de establecimientos de salud",
subtitle = "Por 10.000 habitantes, Argentina 2022",
x = "Establecimientos por 10.000 habitantes",
y = "Frecuencia de departamentos (cantidad)") +
scale_x_continuous(breaks = seq(0, max((deptos_pop2022$cantidad / deptos_pop2022$pob_2022) * 10000, na.rm = TRUE), 1), expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
theme_minimal(base_size = 12)
Esta figura ilustra la distribución del indicador densidad de establecimientos de salud con internación (cantidad/10.000 habitantes) en Argentina, marcando con una línea punteada el valor de la mediana para dicho indicador (igual a 1.3 establecimientos/10.000 hab.). Se observa que existe una distribución marcadamente asimétrica, con notables brechas entre los valores extremos de este indicador. Puede también observarse que el 50% de los deptos. tienen entre 1 y 2 establecimientos / 10.000 habitantes o menos, y el 50% se ubica por encima de ese valor, existiendo incluso un número pequeño de departamentos que tienen más de 6 establecimientos de salud/10.000 habitantes. De la interpretación de las medidas resumen calculadas puede agregarse que la media (desvío estándar) del indicador fue de 1.8 (1.6) establecimientos/10.000 hab., registrándose un valor mínimo de 0 y máximo de 12/10.000. Solo en un 25% de los departamentos de Argentina existen mas de 2 establecimientos cada 10.000 habitantes (Q3=2.36).
En función de los resultados presentados, se concluye que la distribución geográfica, a escala departamental, de los establecimientos de salud con internación (del 2do o 3er nivel de atención) en Argentina es heterogénea a lo largo del territorio nacional, con diferenciales marcados entre regiones geográficas y según pertenezcan al sector público o privado. Las tipologías de prestaciones mas representadas dentro de cada sector también difieren en su porcentaje y distribución espacial, siendo los establecimientos para la tercera edad los mas frecuentes en el sector privado y los destinados a internación general en el sector público.
En término de la densidad de estos establecimientos (cantidad por cada 10.000 habitantes) en 2022, los mapas ilustran una distribución desigual en el territorio nacional, que parece evidenciar una situación de desventaja en los departamentos del noreste argentino y región de Cuyo.