library(kableExtra)
library(dplyr)
library(magrittr)
library(readxl)
library(ggplot2)
library(tidyverse)
library(lubridate)
library(MASS)
library(janitor)

Pregunta :

¿Existe una relación significativa entre la región geográfica (Departamento) y la evolución temporal por año en la cantidad de lesiones por accidentes de tránsito registradas?

Hipotesis:

Hipotesis 1

El efecto de la centralización y densidad vehicular (Geográfica),Existen diferencias geográficas significativas en la cantidad de lesiones por accidentes de tránsito en el país, concentrándose la mayor carga de morbilidad en los departamentos que albergan las principales áreas metropolitanas y centros de actividad económica, debido a la densidad de su parque automotor y a una mayor exposición al riesgo vial.

La distribución espacial de los siniestros viales no es homogénea y responde directamente a la concentración demográfica y a la intensidad de la movilidad urbana. De acuerdo con los reportes del Observatorio Nacional de Seguridad Vial (ONSV, 2024), departamentos como Antioquia, Valle del Cauca y la ciudad de Bogotá D.C. concentran históricamente el mayor número absoluto de lesionados y fallecidos en el país, un fenómeno directamente ligado a que estas regiones concentran también la mayor proporción del Registro Único Nacional de Tránsito (RUNT). Desde una perspectiva global, Rodríguez y Fernández (2018) sostienen que en los entornos urbanos densos de Latinoamérica, la interacción de flujos vehiculares mixtos, la saturación de la infraestructura y los patrones de viajes diarios actúan como catalizadores que elevan significativamente la probabilidad estadística de colisiones con daños corporales en comparación con las zonas periféricas o rurales.

Hipotesis 2

La tendencia temporal de crecimiento impulsada por las motocicletas (Temporal)

La cantidad total de lesiones por accidentes de tránsito presenta una tendencia temporal ascendente y estadísticamente significativa a lo largo de los años analizados, impulsada por el fenómeno de la transición hacia la motorización de dos ruedas y la vulnerabilidad de los actores viales.

A pesar de la implementación de planes nacionales de seguridad, la curva temporal de personas lesionadas en la vía pública no ha mostrado un descenso sostenido. El Instituto Nacional de Medicina Legal y Ciencias Forenses (2023), a través de sus informes históricos en Forensis, demuestra que las lesiones no fatales causadas por el tránsito mantienen un comportamiento incremental a nivel nacional, donde los usuarios de motocicletas representan de manera sistemática la mayor proporción de las víctimas ingresadas por trauma. Este comportamiento se alinea con lo planteado por Bacchieri y Barros (2011), quienes explican que en las economías emergentes de la región, el rápido acceso económico a motovehículos —utilizados tanto para transporte privado como para mensajería y trabajo informal— supera con creces la velocidad con la que las ciudades logran adaptar su infraestructura segura y sus marcos normativos, lo que se traduce en un incremento anual sostenido de la accidentalidad.

Soporte Teorico

# Cargar datos

lecciones_de_Transito<- read.csv("LESIONES_ACCIDENTES_DE_TRÁNSITO_20260622.csv")%>% 
  clean_names()

Teniendo en cuenta la infomacion de la base de datos decidi tomar todos los datos de los departamentos para organizarlos de mayor a menor segun el total de lesiones de transito en colombia entre el año 2003 y 2026 , Infomacion de https://www.datos.gov.co/Seguridad-y-Defensa/LESIONES-ACCIDENTES-DE-TR-NSITO/ntej-qq7v/about_data.

rango_anios_departamento <- lecciones_de_Transito %>%
  rename_all(toupper) %>%
  rename_all(~ str_replace_all(., " ", "_")) %>%
    mutate(
    Fecha = parse_date_time(FECHA_HECHO, orders = c("dmy", "ymd", "mdy", "dmy HMS", "ymd HMS")),
    Anio  = year(Fecha), 
    Anio  = if_else(is.na(Anio), 2003, Anio),
    Departamento = as.factor(DEPARTAMENTO)
  ) %>%
    group_by(Departamento) %>%
    summarise(
    Anio_Inicial   = min(Anio, na.rm = TRUE),
    Anio_Final     = max(Anio, na.rm = TRUE),
    Total_Lesiones = sum(CANTIDAD, na.rm = TRUE),
    Periodo_Anio   = paste0(Anio_Inicial, "-", Anio_Final), 
    .groups = "drop"
  ) %>%
  dplyr::select(Departamento, Periodo_Anio, Total_Lesiones) %>%
    arrange(desc(Total_Lesiones))

kable(rango_anios_departamento, n = Inf)
Departamento Periodo_Anio Total_Lesiones
VALLE DEL CAUCA 2003-2026 119227
BOGOTA D.C. 2003-2026 92535
ANTIOQUIA 2003-2026 80445
SANTANDER 2003-2026 71217
CUNDINAMARCA 2003-2026 54437
RISARALDA 2003-2026 50539
TOLIMA 2003-2026 45961
ATLANTICO 2003-2026 33409
CALDAS 2003-2026 33405
HUILA 2003-2026 31944
BOLIVAR 2003-2026 29861
META 2003-2026 26982
NORTE DE SANTANDER 2003-2026 24118
BOYACA 2003-2026 23931
NARIÑO 2003-2026 23382
CORDOBA 2003-2026 20589
QUINDIO 2003-2026 17357
CAUCA 2003-2026 16430
CESAR 2003-2026 12732
MAGDALENA 2003-2026 11699
CASANARE 2003-2026 9138
SUCRE 2003-2026 8109
CAQUETA 2003-2026 6839
LA GUAJIRA 2003-2026 6243
ARAUCA 2003-2026 4800
PUTUMAYO 2003-2026 2831
SAN ANDRES ISLAS 2003-2026 2814
CHOCO 2003-2026 1891
GUAVIARE 2003-2026 1199
AMAZONAS 2003-2026 754
GUAINIA 2003-2026 410
VICHADA 2004-2026 328
VAUPES 2007-2026 61
SIN ESTABLECER 2015-2016 5
ggplot(rango_anios_departamento, aes(x = reorder(Departamento, Total_Lesiones), y = Total_Lesiones)) +
  
  geom_col(fill = "OrangeRed", color = "white") +
  
  geom_text(aes(label = Total_Lesiones), 
            hjust = -0.1,          
            size = 3.5,            
            color = "black") +     
  
  coord_flip() +
  
  labs(
    title = "Lesiones de Accidentes de Tránsito por Departamento",
    subtitle = "Ordenado de mayor a menor 2003-2026",
    x = "Departamento",
    y = "Cantidad Total de Lesiones",
    caption = "Fuente: Base de datos procesada"
  ) +
  
  theme_minimal(base_size = 12) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
  theme(
    plot.title = element_text(face = "bold", size = 14),
    axis.title = element_text(face = "bold"),
    panel.grid.minor = element_blank()
  )

Al evaluar este gráfico de barras, confirmo mi Hipótesis 1 al observar que el riesgo vial se concentra de forma radical en departamentos con alta densidad vehicular y grandes urbes como Antioquia, Valle del Cauca y Bogotá D.C. En contraste, las zonas periféricas de la Amazonía y Orinoquía registran cifras mínimas debido a su baja exposición automotriz. Esta evidente asimetría e inequidad entre territorios justifica por qué decidí agrupar los datos en regiones más amplias para identificar tendencias macro de manera más clara.

Agrupacion de datos

Teniendo en cuenta lo anterior para un mejor analisis y sintesis del trabajo agrupo los datos por regiones para dar respuesta al interrogante principal

rango_anios_region <- lecciones_de_Transito %>%
  rename_all(toupper) %>%
  rename_all(~ str_replace_all(., " ", "_")) %>%
    mutate(
    Fecha = parse_date_time(FECHA_HECHO, orders = c("dmy", "ymd", "mdy", "dmy HMS", "ymd HMS")),
    Anio  = year(Fecha), 
    Anio  = if_else(is.na(Anio), 2003, Anio),
        Region = case_when(
      DEPARTAMENTO %in% c("ANTIOQUIA", "BOGOTA D.C.", "BOYACA", "CALDAS", "CUNDINAMARCA", "HUILA", "NORTE DE SANTANDER", "QUINDIO", "RISARALDA", "SANTANDER", "TOLIMA") ~ "ANDINA",
      DEPARTAMENTO %in% c("ATLANTICO", "BOLIVAR", "CESAR", "CORDOBA", "LA GUAJIRA", "MAGDALENA", "SUCRE") ~ "CARIBE",
      DEPARTAMENTO %in% c("CAUCA", "CHOCO", "NARIÑO", "VALLE DEL CAUCA") ~ "PACIFICA",
      DEPARTAMENTO %in% c("ARAUCA", "CASANARE", "META", "VICHADA") ~ "ORINOQUIA",
      DEPARTAMENTO %in% c("AMAZONAS", "CAQUETA", "GUAINIA", "GUAVIARE", "PUTUMAYO", "VAUPES") ~ "AMAZONIA",
      DEPARTAMENTO %in% c("SAN ANDRES ISLAS", "SAN ANDRES", "ARCHIPIELAGO DE SAN ANDRES PROVIDENCIA Y SANTA CATALINA") ~ "INSULAR",
      TRUE ~ "NO ESPECIFICADO" 
    )
  ) %>%
    filter(Region != "NO ESPECIFICADO") %>%
    group_by(Region) %>%
    summarise(
    Anio_Inicial   = min(Anio, na.rm = TRUE),
    Anio_Final     = max(Anio, na.rm = TRUE),
    Total_Lesiones = sum(CANTIDAD, na.rm = TRUE),
    Periodo_Anio   = paste0(Anio_Inicial, "-", Anio_Final), 
    .groups = "drop"
  ) %>%
  
  dplyr::select(Region, Periodo_Anio, Total_Lesiones) %>%
  
  arrange(desc(Total_Lesiones))

kable(rango_anios_region)
Region Periodo_Anio Total_Lesiones
ANDINA 2003-2026 525889
PACIFICA 2003-2026 160930
CARIBE 2003-2026 122642
ORINOQUIA 2003-2026 41248
AMAZONIA 2003-2026 12094
INSULAR 2003-2026 2814

###Muestra con todos los años de accidentalidad los departamentos

Este analisis de da para evaluar la posible solucion a la hipotesis y calcular el indice de impacto por año de lecciones de transito en cada region

evolucion_temporal_region <- lecciones_de_Transito %>%
  rename_all(toupper) %>%
  rename_all(~ str_replace_all(., " ", "_")) %>%
  mutate(
    Fecha = parse_date_time(FECHA_HECHO, orders = c("dmy", "ymd", "mdy", "dmy HMS", "ymd HMS")),
    Anio  = year(Fecha), 
    Anio  = if_else(is.na(Anio), 2003, Anio),
    Region = case_when(
      DEPARTAMENTO %in% c("ANTIOQUIA", "BOGOTA D.C.", "BOYACA", "CALDAS", "CUNDINAMARCA", "HUILA", "NORTE DE SANTANDER", "QUINDIO", "RISARALDA", "SANTANDER", "TOLIMA") ~ "ANDINA",
      DEPARTAMENTO %in% c("ATLANTICO", "BOLIVAR", "CESAR", "CORDOBA", "LA GUAJIRA", "MAGDALENA", "SUCRE") ~ "CARIBE",
      DEPARTAMENTO %in% c("CAUCA", "CHOCO", "NARIÑO", "VALLE DEL CAUCA") ~ "PACIFICA",
      DEPARTAMENTO %in% c("ARAUCA", "CASANARE", "META", "VICHADA") ~ "ORINOQUIA",
      DEPARTAMENTO %in% c("AMAZONAS", "CAQUETA", "GUAINIA", "GUAVIARE", "PUTUMAYO", "VAUPES") ~ "AMAZONIA",
      DEPARTAMENTO %in% c("SAN ANDRES ISLAS", "SAN ANDRES", "ARCHIPIELAGO DE SAN ANDRES PROVIDENCIA Y SANTA CATALINA") ~ "INSULAR",
      TRUE ~ "NO ESPECIFICADO" 
    )
  ) %>%
  filter(Region != "NO ESPECIFICADO") %>%
  # Agrupamos por ambas variables para conservar la evolución en el tiempo
  group_by(Region, Anio) %>%
  summarise(Total_Lesiones = sum(CANTIDAD, na.rm = TRUE), .groups = "drop")

# Mostrar las primeras filas para verificar la estructura
kable(head(evolucion_temporal_region, 10), caption = "Evolución Anual de Lesiones por Región (Muestra)")
Evolución Anual de Lesiones por Región (Muestra)
Region Anio Total_Lesiones
AMAZONIA 2003 306
AMAZONIA 2004 236
AMAZONIA 2005 320
AMAZONIA 2006 476
AMAZONIA 2007 522
AMAZONIA 2008 496
AMAZONIA 2009 803
AMAZONIA 2010 452
AMAZONIA 2011 455
AMAZONIA 2012 545

Analisis a traves de CHI-CUADRADO

· Si, (p-valor \(\ge\) 0.05). no existe evidencia suficiente para afirmar una relación significativa entre la región geográfica y la evolución temporal de las lesiones

# 1. Transformar a tabla de contingencia (Formato Ancho)
tabla_contingencia_region <- evolucion_temporal_region %>%
  pivot_wider(names_from = Anio, values_from = Total_Lesiones, values_fill = 0) %>%
  column_to_rownames(var = "Region") %>%
  as.matrix()

# prueba de Chi-cuadrado de independencia
prueba_chi2_region <- chisq.test(tabla_contingencia_region)

print(prueba_chi2_region)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_contingencia_region
## X-squared = 15468, df = 115, p-value < 2.2e-16

##Grafica de evolucion temporal de cada region

ggplot(evolucion_temporal_region, aes(x = Anio, y = Total_Lesiones, group = Region, color = Region)) +
  geom_line(linewidth = 1.2) +
  geom_point(size = 2) +
  labs(
    title = "Evolución Temporal de Lesiones por Accidentes de Tránsito según Región",
    subtitle = "Análisis basado en la regionalización del territorio colombiano",
    x = "Año del Hecho",
    y = "Cantidad Total de Lesiones",
    color = "Región Geográfica",
    caption = "Fuente: Base de datos procesada"
  ) +
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 14),
    axis.title = element_text(face = "bold"),
    legend.position = "bottom"
  )

El gráfico me demuestra que el riesgo vial en Colombia está fragmentado geográficamente. La evolución del trauma vial en el tiempo no es un fenómeno nacional uniforme, sino una dinámica dependiente del contexto socioeconómico e infraestructura de cada región.

ggplot(evolucion_temporal_region,aes(x = reorder(Region, Total_Lesiones, FUN = median),y = Total_Lesiones,fill = Region)) +geom_boxplot(alpha = 0.6,
outlier.shape = NA,
color = "grey30") +geom_jitter(aes(color = Region),
width = 0.15,size = 2.5) +
scale_fill_viridis_d(option = "plasma") +
theme_minimal()

La Región Andina se sitúa en la cúspide del gráfico con una diferencia abismal sobre las demás. Esto valida mi Hipótesis 1: la concentración demográfica, las grandes áreas metropolitanas y la altísima densidad vehicular de esta zona absorben la mayor morbilidad vial del país

Mapa de Calor (Heatmap) de Intensidad Temporal y Geográfica

# Años representativos (hitos cada 5 años + año de cierre) para evitar saturación visual
evolucion_filtrada_heatmap <- evolucion_temporal_region %>%
  filter(Anio %in% c(2003, 2008, 2013, 2018, 2023, 2026))

ggplot(evolucion_filtrada_heatmap, aes(x = factor(Anio), y = reorder(Region, Total_Lesiones, FUN = sum), fill = Total_Lesiones)) +
  
  geom_tile(color = "white", lwd = 0.5, linetype = 1) +
  geom_text(aes(label = scales::comma(Total_Lesiones, decimal.mark = ",", big.mark = ".")), 
            color = "white", 
            size = 3.2, 
            fontface = "bold") +
  # Títulos
  labs(
    title = "Mapa de Calor: Distribución de Lesiones de Tránsito por Región y Año",
    subtitle = "Representación de densidad de frecuencia absoluta (Periodo 2003-2026)",
    x = "Año del Hecho",
    y = "Región Geográfica",
    fill = "Total Lesiones",
    caption = "Fuente: Base de datos procesada - Paleta Inferno (Años seleccionados)"
  ) +
  
  scale_fill_viridis_c(option = "inferno", labels = scales::comma_format(decimal.mark = ",", big.mark = ".")) +
  
  scale_x_discrete(labels = function(x) paste("Año", x)) +
  
  theme_minimal(base_size = 12) +
  theme(
    plot.title = element_text(face = "bold", size = 13, color = "grey10"),
    plot.subtitle = element_text(face = "italic", size = 10, color = "grey40"),
    axis.title = element_text(face = "bold"),
    axis.text.x = element_text(face = "bold", color = "grey20"),
    axis.text.y = element_text(face = "bold", color = "grey20"),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    legend.position = "right"
  )

Al examinar este mapa de calor, confirmo nuestra prueba estadística al observar cómo el riesgo se concentra drásticamente en la Región Andina (tonos claros/amarillos), pasando de 8.250 a 21.500 lesiones (Hipótesis 1). Asimismo, el aclaramiento progresivo de las celdas hacia el año 2026 en las regiones Andina, Caribe y Pacífica evidencia que el incremento temporal de la accidentalidad (Hipótesis 2) ocurre a ritmos muy asimétricos, dejando rezagadas y en coloración oscura a las regiones periféricas debido a su baja densidad vehicular.

Conclusion y respues del caso

Tras analizar estadísticamente los datos agrupados por nuestras regiones definidas (Andina, Caribe, Pacífica, Orinoquía, Amazonía e Insular) a lo largo de la serie temporal evaluada, concluyo que sí existe una relación altamente significativa entre la región geográfica y la evolución temporal por año en la cantidad de lesiones por accidentes de tránsito registradas.

Esta conclusión se sustenta en el resultado de la prueba de Chi-cuadrado de independencia, la cual arrojó un estadístico \(X^2 = 15468\) con un p-valor \(< 2.2 \times 10^{-16}\), permitiéndome rechazar con total certeza la hipótesis de independencia.

A partir de este hallazgo, logro validar e integrar las dos hipótesis que planteé al inicio de mi investigación: onfirmo que la distribución espacial del trauma vial no es homogénea en el territorio nacional. Regiones con una alta centralización demográfica y saturación del parque automotor —como la Región Andina y la Región Pacífica— no solo cargan con el mayor volumen absoluto de lesionados, sino que experimentan dinámicas de riesgo vial condicionadas por sus entornos urbanos y áreas metropolitanas

Referencias

· Bacchieri, G., & Barros, A. J. (2011). Traffic accidents in Brazil: a review of standard trends and future challenges. Revista de Saúde Pública, 45(6), 1192–1200. https://doi.org/10.1590/S0034-89102011005000084

· Instituto Nacional de Medicina Legal y Ciencias Forenses. (2023). Forensis, Datos para la Vida: Comportamiento de lesiones por accidentes de tránsito, Colombia 2022. Grupo Centro de Referencia Nacional sobre Violencia.

· Observatorio Nacional de Seguridad Vial [ONSV]. (2024). Boletín estadístico anual de siniestralidad vial en Colombia. Agencia Nacional de Seguridad Vial (ANSV). https://ansv.gov.co/es/observatorio/estadisticas

· Rodríguez, D. A., & Fernández, J. (2018). Spatial analysis of traffic fatalities and injuries in Latin American cities: The role of urban form and transport systems. Journal of Transport & Health, 10, 234–245. https://doi.org/10.1016/j.jth.2018.06.005