Reporte Técnico de Accidentalidad en Medellín

Introducción

El presente trabajo es un reporte técnico sobre la predicción de incidentes viales en la Ciudad de Medellin a partir de datos históricos de accidentes reportados por la Secretaría de Movilidad de la Alcaldía de Medellín cuya fecha de publicación fue el 28 de Diciembre del 2012 y su última modificación el 06 de Marzo del 2021. De acuerdo a la Organización Mundial de la Salud, al año se presenta la pérdida de más de 1,5 millones de vidas en siniestros viales, estos se han convertido en una problemática social por el daño que producen no solo en las familias sino también en la comunidad. En el caso de la ciudad de Medellín, según cifras de la Alcaldía de Medellín y la Secretaría de Movilidad, entre los años 2014 y 2020 se presentaron aproximadamente más de 200.000 incidentes viales.

El análisis predictivo agrupa una variedad de técnicas estadísticas de modelización, aprendizaje automático y minería de datos que analiza los datos actuales e históricos reales para hacer predicciones acerca del futuro o acontecimientos no conocidos, con este trabajo pretendemos aportar a la prevención de accidentes dre tránsito en la Ciudad, implementado un modelo que permitan predecir los incidentes viales en la Ciudad de Medellín que puedan ocurrir en determinado día, semana o mes, el cual puede ser utilizado por los organismos encargados de desarrollar planes y estrategias para prevenir acidentes, para el caso de Medellin la Secretaria de Movilidad .

Exploración base de datos

En primer lugar, preparamos la base de datos para obtener buenos resultados a la hora de implementar los modelos. Al explorar la base de datos se encontraron algunos errores de digitación los cuales fueron debidamente corregidos, también se creó una nueva base de datos a partir de la publicada en MEdata con las variables que consideramos más pertinentes para el desarrollo del modelo. Encontramos en las observaciones de la variable Barrio que 18395 accidentes registrados se ubican en el municipio de Heliconia y por ende no corresponden a la ciudad de Medellín, debido a esto decidimos eliminar esos datos y también aquellos registros faltantes de información en las variables Barrio, Comuna y Localización.Cabe resaltar que con esa base de datos de 251189 observaciones se hizo el análisis descriptivo, pero para el modelo modificamos esa base y se eliminaron los registros de la columna BARRIO que presentaban números y no nombres, ya nuestro mapa no graficaba esos puntos y por falta de tiempo no nos fue posible imputar dichas observaciones.

FECHA_ACCIDENTE AÑO CLASE_ACCIDENTE GRAVEDAD_ACCIDENTE MES BARRIO COMUNA LOCATION holi_bin
2014-07-04 2014 Choque Solo daños 7 La Floresta La América [-75.6025840302, 6.25428002686] 0
2014-07-04 2014 Choque Solo daños 7 Calle Nueva La Candelaria [-75.5732039534, 6.23843689866] 0
2014-07-04 2014 Choque Solo daños 7 Guayabal Guayabal [-75.5899249145, 6.1970468547] 0
2014-07-04 2014 Choque Solo daños 7 Laureles Laureles Estadio [-75.595653992, 6.24537232424] 0
2014-07-04 2014 Choque Solo daños 7 Parque Juan Pablo II Guayabal [-75.5920043504, 6.22222946966] 0
2014-07-04 2014 Choque Solo daños 7 La Candelaria La Candelaria [-75.5676766589, 6.25277718802] 0
2014-07-04 2014 Choque Solo daños 7 El Rincón Belén [-75.6043865284, 6.21056733572] 0
2014-07-04 2014 Choque Solo daños 7 El Poblado El Poblado [-75.5673631561, 6.20947043279] 0
2014-07-04 2014 Choque Solo daños 7 San Germán Robledo [-75.587217576, 6.26538815378] 0
2014-07-04 2014 Choque Solo daños 7 Estación Villa La Candelaria [-75.56649243, 6.25602594722] 0
2014-07-04 2014 Choque Solo daños 7 Laureles Laureles Estadio [-75.5940483665, 6.23901368312] 0
2014-07-04 2014 Choque Solo daños 7 Calle Nueva La Candelaria [-75.5755026696, 6.2399699888] 0
2014-07-04 2014 Choque Solo daños 7 San Bernardo Belén [-75.5976802402, 6.22272063984] 0
2014-07-04 2014 Choque Solo daños 7 Corazón de Jesús La Candelaria [-75.5797413258, 6.24835603336] 0
2014-07-04 2014 Choque Solo daños 7 Facultad de Minas U. Nacional Robledo [-75.5923497685, 6.27292496093] 0
2014-07-04 2014 Choque Solo daños 7 San Diego La Candelaria [-75.5702052616, 6.23450856533] 0
2014-07-04 2014 Choque Solo daños 7 Universidad Nacional Robledo [-75.5742557669, 6.26105610822] 0
2014-07-04 2014 Choque Solo daños 7 Santa María de los Ángeles El Poblado [-75.5802751816, 6.19027119431] 0
2014-07-04 2014 Choque Solo daños 7 La Candelaria La Candelaria [-75.5638204098, 6.24541448237] 0
2014-07-04 2014 Choque Solo daños 7 Guayaquil La Candelaria [-75.570803628, 6.24471990473] 0
2014-07-04 2014 Choque Solo daños 7 Las Acacias Laureles Estadio [-75.6002561334, 6.2387860571] 0
2014-07-04 2014 Choque Solo daños 7 Carlos E. Restrepo Laureles Estadio [-75.5770396779, 6.25542030573] 0
2014-07-04 2014 Choque Con muertos 7 Terminal de Transporte Castilla [-75.5706311344, 6.27412557275] 0
2014-07-05 2014 Atropello Con heridos 7 Campo Valdés No. 2 Manrique [-75.5540595368, 6.27367256312] 0
2014-07-05 2014 Caida Ocupante Con heridos 7 Florida Nueva Laureles Estadio [-75.5935200698, 6.24974103368] 0
2014-07-05 2014 Atropello Con heridos 7 Simón Bolívar La América [-75.6067773699, 6.24408561865] 0
2014-07-05 2014 Atropello Con heridos 7 La Piñuela Aranjuez [-75.5570928264, 6.27916354508] 0
2014-07-05 2014 Choque Solo daños 7 Manrique Central No. 1 Aranjuez [-75.5550574239, 6.2681845763] 0
2014-07-05 2014 Choque Solo daños 7 Facultad de Minas U. Nacional Robledo [-75.591159582, 6.27236713766] 0
2014-07-05 2014 Otro Con heridos 7 Robledo Robledo [-75.5960692039, 6.27546730687] 0
2014-07-05 2014 Choque Con heridos 7 Héctor Abad Gómez Castilla [-75.5595315756, 6.29945161558] 0
2014-07-05 2014 Atropello Con heridos 7 La América La América [-75.6052741462, 6.25081235956] 0
2014-07-05 2014 Choque Solo daños 7 Terminal de Transporte Castilla [-75.573496302, 6.27627044541] 0
2014-07-05 2014 Choque Solo daños 7 Patio Bonito El Poblado [-75.5787575768, 6.20395536321] 0
2014-07-05 2014 Atropello Con heridos 7 La Esperanza No. 2 Popular [-75.5434285138, 6.28984334534] 0
2014-07-05 2014 Atropello Con heridos 7 El Chagualo La Candelaria [-75.5733892852, 6.26033577296] 0
2014-07-05 2014 Otro Con heridos 7 La América La América [-75.6039753736, 6.25064085688] 0
2014-07-05 2014 Atropello Con heridos 7 Berlin Aranjuez [-75.5537758983, 6.28449030902] 0
2014-07-05 2014 Caida Ocupante Con heridos 7 Cabecera San Antonio de Prado Corregimiento de San Antonio de Prado [-75.6593400289, 6.18300992282] 0
2014-07-05 2014 Atropello Con heridos 7 El Diamante No. 2 El Poblado [-75.577680673, 6.18747445198] 0
2014-07-05 2014 Choque Con heridos 7 Barrio Colón La Candelaria [-75.569629034, 6.24112059146] 0
2014-07-05 2014 Atropello Con heridos 7 Campo Valdés No. 1 Aranjuez [-75.5574799961, 6.2769133869] 0
2014-07-05 2014 Atropello Con heridos 7 Barrio de Jesús Buenos Aires [-75.5370220449, 6.23102772162] 0
2014-07-05 2014 Choque Solo daños 7 Los Colores Laureles Estadio [-75.5963306991, 6.26518602759] 0
2014-07-05 2014 Choque Solo daños 7 Belén Belén [-75.6041633678, 6.23183171238] 0
2014-07-05 2014 Choque Solo daños 7 El Velódromo Laureles Estadio [-75.5959104224, 6.25792129904] 0
2014-07-05 2014 Caida Ocupante Con heridos 7 Cerro Nutibara Belén [-75.5809657948, 6.23320774321] 0
2014-07-05 2014 Volcamiento Con heridos 7 Robledo Robledo [-75.5953312711, 6.27488829713] 0
2014-07-05 2014 Choque Solo daños 7 La Aguacatala El Poblado [-75.5755543051, 6.19851066363] 0
2014-07-05 2014 Choque Solo daños 7 El Progreso Castilla [-75.5800542878, 6.2735251587] 0

2014 2015 2016 2017 2018 2019 2020
Con heridos 11547 23600 24320 22952 20983 22997 11099
Con muertos 136 260 249 239 232 224 104
Solo daños 9131 18926 19041 19574 19066 19256 7253

Con respecto a la frecuencia de accidentes registrados por mes entre 2014 y 2020 se puede observar que en el mes en que más se presentan incidentes viales es en Agosto, esto puede ser explicado porque en ese mes se lleva a cabo la Feria de Flores en la Ciudad de Medellin y por ende circulan más vehículos y peatones de lo normal. Asi mismo, podemos notar que el mes de abril es donde se han presentado menores accidentes.

Los dias que con mayor frecuencia se presentaron accidentes fueron los martes y los viernes, seguido de los jueves.

Este gráfico presenta la gravedad de los accidentes registrados entre el 2014 y el 2020, se puede deducir que en todos los años los accidentes registrados en su mayoria presentan heridos y solo daños en comparación con las muertes.

Entre el año 2014 y 2020 la clase de accidente que más se registro fue el choque,se puede ver que las clases caida y atropello tienen en promedio un comportamiento similar en cada uno de los años, ahora bien la clase incendio no es una variabale muy representativa ya que solo el 0.013% de los accidentes registrados pertenecen a la clase de incendio.También, en cuanto a la relación entre accidente por clase y gravedad del accidente,la mayoria de accidentes de la clase atropello presentan heridos al igual que la clase caida ocupante. Asi mismo, el 63.3% de choques en la mayoria de los casos registrados ocasiona solo daños y el 37.8% con heridos. Finalmente, la clase de acccidente que más muertes provocó en ese periodo fue el choque.

2014 2015 2016 2017 2018 2019 2020
Atropello 2376 4524 4185 3655 3581 3973 1771
Caida Ocupante 2059 3741 3734 3459 3615 3522 1481
Choque 13583 28761 29212 29317 28170 28843 11729
Incendio 4 1 4 4 7 8 0
Otro 2309 4294 4960 4744 3735 4519 2221
Volcamiento 483 1465 1515 1586 1173 1612 1254
Atropello Caida Ocupante Choque Incendio Otro Volcamiento
Con heridos 23383 21541 57287 12 26421 8854
Con muertos 682 70 675 1 10 6
Solo daños 0 0 111653 15 351 228

En este gráfico se pueden observar los 9 barrios donde más han ocurrido accidentes,La Candelaria es el sector que encabeza la lista,cabe resaltar que dicho lugar está ubicado en el centro de la Ciudad y allí hay un alto flujo de vehículos y peatones, esto puede explicar la cantidad de accidentes registrados en la zona. En cuanto a los lugares donde se presentaron menos accidentes estos son los corregimientos ya que no se presentan tantos flujos de tráfico,esto exceptuando a San Antonio de Prado.

Barrio Cantidad_accidentes
La Candelaria 5901
Campo Amor 5142
Caribe 5093
Perpetuo Socorro 4858
Colon 4489
Santa fe 4108
Cabecera San Antonio de Prado 3986
Conquistadores 3767
Villa Nueva 3726
San Benito 3538

Base de datos transformada

Se realiza un conteo de accidentes por día agrupando por la variable barrio y tipo de accidente

conteos <- datos %>% group_by(FECHA_ACCIDENTE, CLASE_ACCIDENTE=as.factor(CLASE_ACCIDENTE),
                              BARRIO= as.factor(BARRIO), COMUNA= as.factor(COMUNA))%>%count() %>%data.frame()

Se añaden algunas variables de intéres como

# Arreglando variables predictivas
holidays_fecha<-readRDS(file = "bases_datos/Holidays.rds") %>% data.frame()
conteos$dia_n <-  as.integer(format(conteos$FECHA_ACCIDENTE, "%d"))
conteos$dia <- as.factor(wday(conteos$FECHA_ACCIDENTE, label = TRUE))
conteos$mes <- as.factor(format(conteos$FECHA_ACCIDENTE, "%b")) 
conteos$ano <- as.integer(format(conteos$FECHA_ACCIDENTE, "%Y"))
conteos$holi_bin <- ifelse(conteos$FECHA_ACCIDENTE %in% holidays_fecha$holidays_fecha , 1, 0) %>% factor()
conteos$BARRIO<- as.factor(conteos$BARRIO)

Teniendo la base de datos la siguiente estructura:

FECHA_ACCIDENTE CLASE_ACCIDENTE BARRIO COMUNA n dia_n dia mes ano holi_bin
2014-07-04 choque calle nueva la candelaria 2 4 Fri Jul 2014 0
2014-07-04 choque carlos e. restrepo laureles estadio 1 4 Fri Jul 2014 0
2014-07-04 choque corazon de jesus la candelaria 1 4 Fri Jul 2014 0
2014-07-04 choque el poblado el poblado 1 4 Fri Jul 2014 0
2014-07-04 choque el rincon belen 1 4 Fri Jul 2014 0
2014-07-04 choque estacion villa la candelaria 1 4 Fri Jul 2014 0
2014-07-04 choque facultad de minas u. nacional robledo 1 4 Fri Jul 2014 0
2014-07-04 choque guayabal guayabal 1 4 Fri Jul 2014 0
2014-07-04 choque guayaquil la candelaria 1 4 Fri Jul 2014 0
2014-07-04 choque la candelaria la candelaria 2 4 Fri Jul 2014 0
2014-07-04 choque la floresta la america 1 4 Fri Jul 2014 0
2014-07-04 choque las acacias laureles estadio 1 4 Fri Jul 2014 0
2014-07-04 choque laureles laureles estadio 2 4 Fri Jul 2014 0
2014-07-04 choque parque juan pablo ii guayabal 1 4 Fri Jul 2014 0
2014-07-04 choque san bernardo belen 1 4 Fri Jul 2014 0
2014-07-04 choque san diego la candelaria 1 4 Fri Jul 2014 0
2014-07-04 choque san german robledo 1 4 Fri Jul 2014 0
2014-07-04 choque santa maria de los angeles el poblado 1 4 Fri Jul 2014 0
2014-07-04 choque terminal de transporte castilla 1 4 Fri Jul 2014 0
2014-07-04 choque universidad nacional robledo 1 4 Fri Jul 2014 0
2014-07-05 atropello barrio de jesus buenos aires 1 5 Sat Jul 2014 0
2014-07-05 atropello berlin aranjuez 1 5 Sat Jul 2014 0
2014-07-05 atropello betania san javier 1 5 Sat Jul 2014 0
2014-07-05 atropello campo valdes no. 1 aranjuez 2 5 Sat Jul 2014 0
2014-07-05 atropello campo valdes no. 2 manrique 2 5 Sat Jul 2014 0
2014-07-05 atropello doce de octubre no.2 doce de octubre 1 5 Sat Jul 2014 0
2014-07-05 atropello el chagualo la candelaria 1 5 Sat Jul 2014 0
2014-07-05 atropello el diamante no. 2 el poblado 1 5 Sat Jul 2014 0
2014-07-05 atropello el pinal villa hermosa 1 5 Sat Jul 2014 0
2014-07-05 atropello el poblado el poblado 1 5 Sat Jul 2014 0
2014-07-05 atropello la america la america 1 5 Sat Jul 2014 0
2014-07-05 atropello la candelaria la candelaria 2 5 Sat Jul 2014 0
2014-07-05 atropello la cruz manrique 1 5 Sat Jul 2014 0
2014-07-05 atropello la esperanza no. 2 popular 1 5 Sat Jul 2014 0
2014-07-05 atropello la pinuela aranjuez 1 5 Sat Jul 2014 0
2014-07-05 atropello las granjas manrique 1 5 Sat Jul 2014 0
2014-07-05 atropello manrique oriental manrique 1 5 Sat Jul 2014 0
2014-07-05 atropello miraflores buenos aires 1 5 Sat Jul 2014 0
2014-07-05 atropello simon bolivar la america 1 5 Sat Jul 2014 0
2014-07-05 atropello sucre villa hermosa 1 5 Sat Jul 2014 0
2014-07-05 atropello terminal de transporte castilla 1 5 Sat Jul 2014 0
2014-07-05 atropello villa guadalupe popular 1 5 Sat Jul 2014 0
2014-07-05 caida ocupante belen belen 1 5 Sat Jul 2014 0
2014-07-05 caida ocupante cabecera san antonio de prado corregimiento de san antonio de prado 1 5 Sat Jul 2014 0
2014-07-05 caida ocupante calle nueva la candelaria 1 5 Sat Jul 2014 0
2014-07-05 caida ocupante campo amor guayabal 1 5 Sat Jul 2014 0
2014-07-05 caida ocupante cerro nutibara belen 1 5 Sat Jul 2014 0
2014-07-05 caida ocupante doce de octubre no.1 doce de octubre 2 5 Sat Jul 2014 0
2014-07-05 caida ocupante el pinal villa hermosa 1 5 Sat Jul 2014 0
2014-07-05 caida ocupante el progreso castilla 1 5 Sat Jul 2014 0
  • FECHA_ACCIDENTE: Fecha en la que ocurrió el accidente , el formato es AÑO-MES-DIA
  • MES: Mes en que se presentó el accidente,la variable está enumerada del 1 al 12, comenzando desde enero
  • AÑO: Año en el que se registró el accidente
  • BARRIO:Lugar de Medellin donde se presentó el accidente, tipo factor con 321 niveles
  • CLASE_ACCIDENTE: Los accidentes se clasifican en atropello, choque,incendio,volcamiento,caída de ocupante y otros
  • GRAVEDAD: Gavedad del acidente(Solo daños, con heridos, con muertos
  • holi_bin: Días especiales como feria de flores y dias festivos en Colombia, tipo factor con 2 niveles, con 1 en caso de que sea una fecha festiva y 0 en caso contrario
  • COMUNA: Nombre de las comunas de Medellín, tipo factor con 29 niveles

Según la base de datos el año donde se presentaron más accidentes fue el 2016 en comparación con los demás años, a pesar de que solo tenemos datos para el 2020 hasta el mes de junio se puede plantear que los accidentes en ese año hasta junio disminuyeron con respecto a los demás años esto puede ser a raíz del confinamiento por la pandemia.

División datos

Los modelos predictivos se construyeron con los datos transformados de los años 2014, 2015, 2016 y 2017. Se usan los accidentes del año 2018 y 2019 para validar los modelos. Se analizará el comportamiento del modelo predictivo en los años 2020 y 2021.

setwd("/Users/andremac/Downloads/Tae-AccidentalidadMed")
train<- readRDS("bases_datos/train.rds")
validation <- conteos %>% filter(ano >= 2018 | ano <= 2019)
test <- conteos  %>% filter(ano >= 2020)

Modelo

En este caso se ha elegido modelo lineal generalizado (glm) el cual busca predecir la accidentalidad por tipo de accidente a nivel semanal, mensual y diario. La función de enlace utilizada ha sido la distribución de Poisson ya que se utiliza para modelar la variación en los datos de recuento (es decir, datos que pueden ser iguales a 0, 1, 2,…). La variable respuesta \(y_i\) sería el número de accidentes de tráfico en el barrio i en un intervalo de tiempo determinado. Se propone explicar la variación en \(y_i\) con predictores lineales X, Con un total de 346 coeficientes entre barrios, fechas especiales, número del día, día de la semana, el mes y el año.

\[ y_{i} \sim \operatorname{Poisson}\left(\exp \left( 0.5013+ 0.4033*mesAug+...-1.135e^{-05}*BARRIOyolombo\right)\right) \]

fit.1 <- glm (n ~ ano + mes + dia_n + dia + holi_bin+CLASE_ACCIDENTE+BARRIO+FECHA_ACCIDENTE, 
              family=poisson(link = log),data = train)
## [1] 323.3499
y_est1<- predict.glm(object = fit.1, newdata = train[,-5], type = "response")
y_est2<-predict(object = fit.1, newdata=test[,-5], , type = "response")
y_est3<-predict(object = fit.1, newdata=validation[,-5], type = "response" )
mean((train$n - y_est1)^2)
## [1] 0.337826
mean((test$n - y_est2)^2)
## [1] 1.413125
mean((validation$n - y_est3)^2)
## [1] 1.357081

\[ \mathrm{MSE_{train}}=\frac{1}{N} \sum_{i=1}^{N}\left(y_{i}-\hat{y}_{i}\right)^{2} = 0.337826 \]

\[ \mathrm{MSE_{test}}=\frac{1}{N} \sum_{i=1}^{N}\left(y_{i}-\hat{y}_{i}\right)^{2}= 1.430139 \]

Código

Se pueden consultar lo respectivos códigos utilizados para llevar a cabo los resultados desarrollados en el presente informe técnico sobre accidentalidad en la ciudad de Medellín en el siguiente repositorio de github https://github.com/kaamayam/Tae-AccidentalidadMed