libs <- c("dplyr", "tidyverse", "knitr", "leaflet", "mapSpain", "osmdata", "sf", "sp", "spatstat", "tidygeocoder", "readxl", "leaflet.extras", "stringr", "htmltools", "writexl")
installed_libs <- libs %in% rownames(installed.packages())
if (any(installed_libs == F))
{install.packages(libs[!installed_libs])}
invisible(lapply(libs, library, character.only = T))
rm(libs, installed_libs)
Hepatitis B en la Comunitat Valenciana: Una Perspectiva Geoespacial
Input
En el catálogo de descargas de Datos.gob se ofrece el dataset “Incidencia de Hepatitis B en la Comunitat Valenciana”, que recopila datos epidemiológicos expresados en forma de tasa bruta por 100.000 personas. Estos datos se obtienen a partir de indicadores seleccionados del Sistema de Vigilancia Epidemiológica y del Sistema de Vigilancia de las Infecciones Respiratorias Agudas en la Comunitat Valenciana, y están organizados a diferentes niveles geográficos: Comunitat Valenciana, provincial y departamental.
La base de datos se orienta a realizar un análisis integral de la incidencia de Hepatitis B en la Comunitat Valenciana, permitiendo estudiar la evolución de la tasa de incidencia a lo largo de varios años (desde 2021 hasta el 2024) y facilitando la identificación de tendencias y áreas con mayor incidencia. La información, detallada en el portal de Datos.gob, constituye un recurso actualizado y fiable que respalda investigaciones y fundamenta la toma de decisiones en el ámbito de la salud pública y la vigilancia epidemiológica.
A continuación, se muestra más información de interés:
-
Granularidad: Comunitat Valenciana, Provincial y Departamental
- Fecha de creación: 30/12/2024 - 0:00 (UTC+01:00)
- Fecha de la última actualización: 10/03/2025 - 0:00 (UTC+01:00)
-
Referencias: Datos.gob
- Formatos Disponibles: CSV, JSON y XML
En este caso, se ha descargado el fichero en formato CSV para llevar a cabo el análisis, procesándolo y adaptándolo según las necesidades del estudio (tras su descarga, se transformó a formato XLSX).
Descripción
Cargamos las librerias necesarias:
Cargamos los datos en nuestro entorno de R:
datos <- read_excel("data/000130/Incidencia_de_HepatitisB_Comunitat_Valenciana.xlsx")
El objeto datos
es un tibble, es decir, una versión moderna y mejorada del data frame en R. Las clases "tbl_df"
y "tbl"
son específicas de los tibbles y ofrecen una presentación más clara y funciones adicionales para la manipulación de datos, mientras que la inclusión de la clase "data.frame"
garantiza la compatibilidad con las funciones tradicionales de R que operan sobre data frames.
class(datos)
[1] "tbl_df" "tbl" "data.frame"
Nuestro objeto datos
tiene 14 filas y 29 columnas, lo que proporciona información sobre la dimensión del conjunto de datos y permite conocer el número de observaciones y variables presentes. Cada fila es un año (del 2010 al 2023), y cada columna es un departamento de salud para cada municipio de cada provincia de la comunidad valenciana.
dim(datos)
[1] 14 29
Tratamiento
El tratamiento de los datos se centra en transformar el dataset, que originalmente se encuentra en formato wide, a un formato long que facilite el análisis de la incidencia de Hepatitis B por departamento de salud a lo largo de los diferentes periodos. En nuestro caso, el dataset cuenta con las siguientes variables principales:
-
periodo
: Indica el año o periodo del registro. - Variables territoriales generales:
comunitat_valenciana
,prov_alicante
,prov_castellon
,prov_valencia
. - Variables de incidencia por departamentos de salud:
[1] "dpto_salud_vinaros"
[2] "dpto_salud_castello"
[3] "dpto_salud_laplana"
[4] "dpto_salud_sagunt"
[5] "dpto_salud_clinic_malvarrosa"
[6] "dpto_salud_vilanova_lliria"
[7] "dpto_salud_valencia_lafe"
[8] "dpto_salud_requena"
[9] "dpto_salud_valencia_hospital_general"
[10] "dpto_salud_doctor_peset"
[11] "dpto_salud_ribera"
[12] "dpto_salud_gandia"
[13] "dpto_salud_denia"
[14] "dpto_salud_xativa_ontinyent"
[15] "dpto_salud_alcoi"
[16] "dpto_salud_marina_baixa"
[17] "dpto_salud_sant_joan_alacant"
[18] "dpto_salud_elda"
[19] "dpto_salud_alacant_hospital_general"
[20] "dpto_salud_elx_hospital_general"
[21] "dpto_salud_orihuela"
[22] "dpto_salud_torrevieja"
[23] "dpto_salud_manises"
[24] "dpto_salud_elx_crevillent"
Ahora, con el fin de realizar la transformación antes mencionada, he elaborado el siguiente codigo, el cual se divide en:
Selección de variables:
Se utilizaselect(periodo, starts_with("dpto_salud_"))
para quedarnos únicamente con la columnaperiodo
y todas las columnas que contienen datos de incidencia de Hepatitis B por departamento (identificadas por el prefijodpto_salud_
). Esto permite enfocarse solo en las variables de interés, eliminando información adicional que no se utilizará en el análisis.-
Transformación de formato (de wide a long):
La funciónpivot_longer
transforma el dataset de un formato wide —donde cada departamento es una columna separada— a un formato long, en el cual cada fila representa un único registro para un departamento en un determinado periodo.- Se crea una columna llamada
Departamento
que contendrá el nombre original de cada columna de incidencia (por ejemplo,dpto_salud_vinaros
,dpto_salud_castello
, etc.).
- Se crea otra columna llamada
Casos
que almacena el número de casos de Hepatitis B correspondientes a cada departamento en cadaperiodo
.
- Se crea una columna llamada
Esta transformación es esencial para facilitar el análisis temporal y espacial, ya que permite trabajar con una estructura de datos en la que cada observación es independiente y se pueden aplicar fácilmente funciones de agrupación, filtrado y visualización.
datos_long <- datos %>%
select(periodo, starts_with("dpto_salud_")) %>%
pivot_longer(
cols = starts_with("dpto_salud_"),
names_to = "Departamento",
values_to = "Casos"
)
Verificamos que la transformación se ha realizado sin problemas y que hemos obtenido el resultado esperado.
head(datos_long)
# A tibble: 6 × 3
periodo Departamento Casos
<dbl> <chr> <chr>
1 2010 dpto_salud_vinaros 1.08
2 2010 dpto_salud_castello 0.68
3 2010 dpto_salud_laplana 2.61
4 2010 dpto_salud_sagunt 1.32
5 2010 dpto_salud_clinic_malvarrosa 0.85
6 2010 dpto_salud_vilanova_lliria 1.97
Dado que la transformación se ha llevado a cabo correctamente y cada fila ahora corresponde a un periodo
(que es un año), un Departamento
y el número de Casos
, podemos continuar con el siguiente paso de nuestro flujo de trabajo. A partir de este momento, nos enfocaremos en integrar estos datos con la información geoespacial de los departamentos de salud de la Comunitat Valenciana, para así poder visualizar la incidencia de Hepatitis B en un mapa y analizar su distribución espacial a lo largo del tiempo.
# Extraigo de 'datos_long' una lista única de nombres de departamentos,
# descartando aquellos registros que tengan valores NA en la columna 'Departamento'.
dept_names <- datos_long %>%
distinct(Departamento) %>%
filter(!is.na(Departamento))
# 1. Limpieza de los nombres de los departamentos
dept_names <- dept_names %>%
mutate(Departamento_limpio = Departamento %>%
# Elimino el prefijo "dpto_salud_"
str_replace_all("dpto_salud_", "") %>%
# Reemplazo los guiones bajos "_" por espacios
str_replace_all("_", " ") %>%
# Convierto a formato título (opcional), por ejemplo, "vinaros" a "Vinaros"
str_to_title()
)
# 2. Geocodifico los nombres limpios de los departamentos
dept_coords <- dept_names %>%
geocode(Departamento_limpio, method = "osm", lat = lat, long = lon)
# Verifico los resultados
head(dept_coords)
# A tibble: 6 × 4
Departamento Departamento_limpio lat lon
<chr> <chr> <dbl> <dbl>
1 dpto_salud_vinaros Vinaros 40.5 0.475
2 dpto_salud_castello Castello 45.0 9.25
3 dpto_salud_laplana Laplana 42.6 -2.33
4 dpto_salud_sagunt Sagunt 39.7 -0.279
5 dpto_salud_clinic_malvarrosa Clinic Malvarrosa NA NA
6 dpto_salud_vilanova_lliria Vilanova Lliria NA NA
# 3. Uno las coordenadas al data frame original (datos_long)
# Primero, limpio la columna 'Departamento' de 'datos_long' de la misma manera
datos_long_limpio <- datos_long %>%
mutate(Departamento_limpio = Departamento %>%
str_replace_all("dpto_salud_", "") %>%
str_replace_all("_", " ") %>%
str_to_title()
)
# Luego, uno por la columna 'Departamento_limpio'
datos_long_coords <- datos_long_limpio %>%
left_join(dept_coords, by = "Departamento_limpio")
# Reviso las primeras filas para confirmar la incorporación de latitud y longitud
head(datos_long_coords)
# A tibble: 6 × 7
periodo Departamento.x Casos Departamento_limpio Departamento.y lat lon
<dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
1 2010 dpto_salud_vina… 1.08 Vinaros dpto_salud_vi… 40.5 0.475
2 2010 dpto_salud_cast… 0.68 Castello dpto_salud_ca… 45.0 9.25
3 2010 dpto_salud_lapl… 2.61 Laplana dpto_salud_la… 42.6 -2.33
4 2010 dpto_salud_sagu… 1.32 Sagunt dpto_salud_sa… 39.7 -0.279
5 2010 dpto_salud_clin… 0.85 Clinic Malvarrosa dpto_salud_cl… NA NA
6 2010 dpto_salud_vila… 1.97 Vilanova Lliria dpto_salud_vi… NA NA
Con una simple inspección inicial, ya se observa la presencia de valores faltantes en las coordenadas. Por ello, el siguiente paso es identificar de forma precisa qué departamentos no se han podido geolocalizar correctamente.
# Filtro las filas donde lat o lon son NA y listo los departamentos correspondientes
dept_na <- datos_long_coords %>%
filter(is.na(lat) | is.na(lon)) %>%
distinct(Departamento_limpio)
# Veamos el resultado
dept_na
# A tibble: 3 × 1
Departamento_limpio
<chr>
1 Clinic Malvarrosa
2 Vilanova Lliria
3 Valencia Lafe
Considerando que el problema de las coordenadas faltantes afecta únicamente a tres departamentos (lo cual es favorable), resulta totalmente viable optar por una solución manual: buscar dichos departamentos en Google, obtener sus direcciones, localizarlas en Google Maps para extraer sus coordenadas y, finalmente, ingresarlas manualmente en nuestro dataset.
Sin embargo, además de los valores faltantes, observé que tres ubicaciones (Laplana, Ribera y Castello) tenían coordenadas incorrectas. Por ello, opté por crear un diccionario manual, no solo para completar los datos faltantes, sino también para corregir las coordenadas erróneas, garantizando así una representación geográfica precisa.
ATENCIÓN: En caso de no poder corregir manualmente las coordenadas faltantes (por ejemplo, si en vez de tener que buscar las coordenadas de tres departamentos, tuvieramos que buscar las de 300), se podría recurrir a un proceso de geocodificación iterativa que emplee varios servicios y algoritmos de comparación para localizar automáticamente los lugares. Por ejemplo, se podrían probar sucesivamente distintos proveedores (OpenStreetMap, Google, etc.), aplicando reglas de normalización de texto (corrección de ortografía, eliminación de caracteres especiales) y usando algoritmos de coincidencia aproximada (fuzzy matching) para aumentar las probabilidades de encontrar una referencia válida en las bases de datos de geolocalización. De este modo, se automatizaría la búsqueda de coordenadas, reduciendo la necesidad de intervención manual.
# Voy a crear un data frame con las coordenadas manuales (obtenidas de Google Maps) para los departamentos con NA
# y para aquellos cuyas coordenadas eran incorrectas
manual_coords <- tibble::tibble(
Departamento_limpio = c("Laplana", "Ribera", "Castello",
"Clinic Malvarrosa", "Vilanova Lliria", "Valencia Lafe"),
lat_manual = c(39.92486972762214, 39.16047620715192, 40.00310053942574,
39.476616437171145, 39.49085060796928, 39.44545437422216),
lon_manual = c(-0.09713093215244077, -0.4179129628796965, -0.04223913214856884,
-0.3254069745018546, -0.40350936100991974, -0.37041201683088126)
)
# Ahora, uno las coordenadas manuales al data frame original y actualizo las columnas lat y lon
datos_long_coords <- datos_long_coords %>%
left_join(manual_coords, by = "Departamento_limpio") %>%
mutate(
lat = if_else(is.na(lat), lat_manual, lat),
lon = if_else(is.na(lon), lon_manual, lon)
) %>%
select(-lat_manual, -lon_manual)
# Momento de una nueva revisión (si obtengo una tabla vacía, será porque ya no tengo NAs)
datos_long_coords %>% filter(is.na(lat) | is.na(lon))
# A tibble: 0 × 7
# ℹ 7 variables: periodo <dbl>, Departamento.x <chr>, Casos <chr>,
# Departamento_limpio <chr>, Departamento.y <chr>, lat <dbl>, lon <dbl>
# Normalizo la columna 'Departamento_limpio' en el dataframe principal
datos_long_coords <- datos_long_coords %>%
mutate(Departamento_limpio = str_to_lower(str_trim(Departamento_limpio)))
# Normalizo la columna 'Departamento_limpio' en el tibble manual
manual_coords <- manual_coords %>%
mutate(Departamento_limpio = str_to_lower(str_trim(Departamento_limpio)))
# Realizo el join para actualizar las coordenadas manualmente
datos_long_coords <- datos_long_coords %>%
left_join(manual_coords, by = "Departamento_limpio") %>%
mutate(
lat = if_else(!is.na(lat_manual), lat_manual, lat),
lon = if_else(!is.na(lon_manual), lon_manual, lon)
) %>%
select(-lat_manual, -lon_manual)
# Reviso los primeros registros para confirmar la actualización
head(datos_long_coords)
# A tibble: 6 × 7
periodo Departamento.x Casos Departamento_limpio Departamento.y lat lon
<dbl> <chr> <chr> <chr> <chr> <dbl> <dbl>
1 2010 dpto_salud_vin… 1.08 vinaros dpto_salud_vi… 40.5 0.475
2 2010 dpto_salud_cas… 0.68 castello dpto_salud_ca… 40.0 -0.0422
3 2010 dpto_salud_lap… 2.61 laplana dpto_salud_la… 39.9 -0.0971
4 2010 dpto_salud_sag… 1.32 sagunt dpto_salud_sa… 39.7 -0.279
5 2010 dpto_salud_cli… 0.85 clinic malvarrosa dpto_salud_cl… 39.5 -0.325
6 2010 dpto_salud_vil… 1.97 vilanova lliria dpto_salud_vi… 39.5 -0.404
# Voy a renombrar la columna `Departamento.x` como `Departamento` y a eliminar la columna
#`Departamento.y`.
datos_long_coords <- datos_long_coords %>%
rename(Departamento = Departamento.x) %>%
select(-Departamento.y)
datos_long_coords
# Guardo en mi ordenador la base de datos ya tratada
write_xlsx(datos_long_coords, "data/datos_tratados.xlsx")
# Pero como también la quiero en formato gpkg:
# 1. Convierto 'datos_long_coords' en un objeto sf utilizando las columnas de latitud y longitud
library(sf)
datos_long_coords_sf <- st_as_sf(
datos_long_coords,
coords = c("lon", "lat"), # Ajusta si tus columnas se llaman distinto
crs = 4326 # EPSG:4326 para coordenadas geográficas
)
# 2. Guardo el objeto sf en formato GeoPackage
st_write(
obj = datos_long_coords_sf,
dsn = "data/datos_tratados.gpkg",
driver = "GPKG",
delete_dsn = TRUE
)
Excelente, ya dispongo de la tabla preparada para comenzar el análisis. Por lo que doy por terminado el apartado de Tratamiento.
Output
La tabla final, mostrada anteriormente, consolida toda la información necesaria para el análisis y la posterior generación de mapas. En concreto:
-
periodo: Indica el año o periodo de registro de los casos de Hepatitis B.
-
Departamento: Muestra el nombre original del departamento de salud tal como figuraba en el dataset inicial.
-
Casos: Recoge la cantidad de casos de Hepatitis B asociados a cada departamento en cada periodo.
-
Departamento_limpio: Contiene los nombres de los departamentos estandarizados (sin prefijos ni guiones bajos), lo que ha facilitado la geocodificación y la integración con la información espacial.
- lat y lon: Proporcionan las coordenadas geográficas (latitud y longitud) de cada departamento, ya sea obtenidas a través de un servicio de geocodificación o introducidas manualmente en los casos necesarios.
Gracias a esta estructura, es posible llevar a cabo un análisis tanto temporal como espacial de la incidencia de Hepatitis B en la Comunitat Valenciana, permitiendo la elaboración de visualizaciones y mapas interactivos que reflejen la evolución y distribución de los casos a lo largo del tiempo.
A continuación, muestro dos ejemplo de mi propia elaboración:
El primer mapa se construyó a partir de la base de datos tratada en formato XLSX, mientras que el segundo se generó utilizando el archivo en formato GPKG.
# Convierto la columna 'Casos' a numérica
datos_long_coords <- datos_long_coords %>%
mutate(Casos = as.numeric(Casos))
# Obtengo la geometría oficial de la Comunitat Valenciana con mapSpain (EPSG:4326)
cv_polygon <- esp_get_ccaa(ccaa = "Comunitat Valenciana", epsg = 4326)
# Defino una paleta de colores para representar la variable 'Casos'
pal <- colorNumeric(
palette = c("#0000FF", "#00FFFF", "#39FF14", "#FFFF00", "#FFA500", "#FF0000"),
domain = datos_long_coords$Casos
)
# Identifico los distintos periodos (años) en el dataset
periodos <- sort(unique(datos_long_coords$periodo))
# 1. Inicio el mapa con una capa base y añado la herramienta de medición
# Uso "Base" como grupo inicial, de modo que cada año será un grupo base alternativo.
m <- leaflet() %>%
addTiles(group = "Base") %>%
addMeasure(
position = "topleft",
primaryLengthUnit = "meters",
primaryAreaUnit = "sqmeters",
activeColor = "#3D535D",
completedColor = "#7D4479"
)
# 2. Para cada periodo, creo una capa base que incluye el polígono de la Comunitat Valenciana y los marcadores
for (p in periodos) {
# Filtro los datos para el periodo actual
datos_periodo <- datos_long_coords %>% filter(periodo == p)
# Añado la capa base y el polígono de la Comunitat Valenciana con el nombre del periodo
m <- m %>%
addTiles(group = as.character(p)) %>%
addPolygons(
data = cv_polygon,
color = "blue",
weight = 2,
fillOpacity = 0.1,
group = as.character(p),
popup = "Comunitat Valenciana"
) %>%
addCircleMarkers(
data = datos_periodo,
lat = ~lat,
lng = ~lon,
# Ajusto el tamaño de los marcadores según la raíz cuadrada de 'Casos'
radius = ~sqrt(Casos) * 2,
color = ~pal(Casos),
fillOpacity = 0.7,
group = as.character(p),
label = ~paste0(Departamento_limpio, ": ", Casos, " casos"),
popup = ~paste0("<strong>", Departamento_limpio, "</strong><br/>Casos: ", Casos)
)
}
# 3. Configuro el control de capas, de modo que solo un año pueda visualizarse a la vez
m <- m %>%
addLayersControl(
baseGroups = c("Base", as.character(periodos)),
options = layersControlOptions(collapsed = FALSE)
) %>%
# Añado la leyenda
addLegend(
position = "bottomleft",
pal = pal,
values = datos_long_coords$Casos,
title = HTML("<span style='font-size:12px;'>Casos de Hepatitis B</span>"),
opacity = 0.7,
labFormat = labelFormat(digits = 1)
) %>%
# Centro el mapa en la Comunitat Valenciana
setView(lng = -0.3763, lat = 39.4699, zoom = 8) %>%
addControl("| © Pablo Palenciano Cerro",
position = "bottomright",
className = "map-signature")
# 4. Muestro el mapa interactivo
m
# 1. Leo el archivo GeoPackage y convierto 'Casos' a numérico
datos_sf <- st_read("data/000130/datos_tratados.gpkg", quiet = TRUE) %>%
mutate(Casos = as.numeric(Casos))
# 2. Obtengo el polígono oficial de la Comunitat Valenciana (EPSG:4326) con mapSpain
cv_polygon <- esp_get_ccaa(ccaa = "Comunitat Valenciana", epsg = 4326)
# 3. Defino una función sencilla para asignar colores a los marcadores:
# Valores menores a 2: azul, entre 2 y 4: verde, y mayores o iguales a 4: rojo.
myMarkerColor <- function(x) {
if (x < 2) {
"blue"
} else if (x < 4) {
"green"
} else {
"red"
}
}
# 4. Identifico los distintos periodos (años) en el dataset
periodos <- sort(unique(datos_sf$periodo))
# 5. Inicio el mapa usando "CartoDB.Positron" como fondo, añadiendo el polígono y la herramienta de medición
m <- leaflet() %>%
addProviderTiles("CartoDB.Positron", group = "Base") %>%
addPolygons(
data = cv_polygon,
color = "black",
weight = 2,
fillColor = "white",
fillOpacity = 0.3,
group = "CV",
popup = "Comunitat Valenciana"
) %>%
addMeasure(
position = "topleft",
primaryLengthUnit = "meters",
primaryAreaUnit = "sqmeters",
activeColor = "#3D535D",
completedColor = "#7D4479"
)
# 6. Para cada periodo, añado una capa con marcadores usando addAwesomeMarkers
for (p in periodos) {
datos_periodo <- datos_sf %>% filter(periodo == p)
m <- m %>%
addProviderTiles("CartoDB.Positron", group = as.character(p)) %>%
addPolygons(
data = cv_polygon,
color = "black",
weight = 2,
fillColor = "white",
fillOpacity = 0.3,
group = as.character(p),
popup = "Comunitat Valenciana"
) %>%
addAwesomeMarkers(
data = datos_periodo,
icon = ~awesomeIcons(
icon = "exclamation-triangle",
library = "fa",
iconColor = "white",
markerColor = ~sapply(Casos, myMarkerColor)
),
group = as.character(p),
label = ~paste0(Departamento_limpio, ": ", Casos, " casos"),
popup = ~paste0("<strong>", Departamento_limpio, "</strong><br/>Casos: ", Casos)
)
}
# 7. Configuro el control de capas (para que solo se muestre un periodo a la vez)
# y añado la leyenda en la esquina inferior izquierda con una paleta simplificada.
m <- m %>%
addLayersControl(
baseGroups = c("Base", as.character(periodos)),
options = layersControlOptions(collapsed = FALSE)
) %>%
addLegend(
position = "bottomleft",
pal = colorNumeric(
palette = c("blue", "green", "red"),
domain = c(0, 6)
),
values = datos_sf$Casos,
title = "Casos de Hepatitis B",
opacity = 0.8
) %>%
setView(lng = -0.3763, lat = 39.4699, zoom = 8) %>%
addControl("| © Pablo Palenciano Cerro",
position = "bottomright",
className = "map-signature")
# 8. Muestro el mapa interactivo
m
Estos mapas interactivos ilustran la distribución espacial y temporal de la incidencia de Hepatitis B en la Comunitat Valenciana. Cada capa corresponde a un año, lo que me permite visualizar la información de un único periodo a la vez mediante el control de capas.
Marcadores: Representan los municipios de cada departamento de salud, y tanto su tamaño (en el primer gráfico) como su color indican la cantidad de casos registrados, facilitando la comparación entre regiones.
Polígono: Delimita la Comunitat Valenciana, sirviendo como referencia geográfica.
Leyenda: Ubicada en la esquina inferior izquierda, explica la escala de colores utilizada.
Esta visualización interactiva permite explorar de forma dinámica la evolución de la enfermedad a lo largo del tiempo y detectar áreas con mayor incidencia.
Este trabajo me ha permitido explorar en profundidad la incidencia de la Hepatitis B en la Comunitat Valenciana desde una perspectiva espacial y temporal. Mediante un cuidadoso proceso de obtención, limpieza y tratamiento de los datos, he logrado generar un conjunto de información fiable y enriquecida con coordenadas geográficas precisas. La visualización interactiva creada con leaflet
facilita enormemente la comprensión de patrones y tendencias regionales de la enfermedad, así como la identificación inmediata de departamentos con mayor incidencia.
Cabe destacar que, durante el proceso, fue necesario corregir manualmente ciertas coordenadas para garantizar la calidad y precisión del análisis. Esto subraya la importancia del control de calidad y validación de los datos en estudios de tipo geoespacial.
Finalmente, esta metodología demuestra ser eficaz no solo para la visualización y análisis de datos epidemiológicos, sino también como herramienta útil para apoyar la toma de decisiones en salud pública a nivel regional.
El fichero generado con esta metodología puede ser descargado desde aquí, si es que quieres los datos en formato XLSX.
O aquí, en caso de que los prefieras en formato GPKG.
Proyectos de Innovación Educativa Emergente PIEE-2737007 y PIEE-3325394