La alta accidentalidad en Medellín se está convirtiendo en un problema de salud pública (Concejo de Medellín, 2020), los accidentes de tránsito aparecen como la séptima causa de muerte en el planeta y más aún, ha sido considerada como la segunda causa que más genera muertes en Colombia (Sistemas y Comunicaciones FODC, s.f.). Esta “epidemia” es la primera causa de muerte de las personas menores de 40 años a escala mundial. (ARL SURA, 2020)
Gracias a los datos abiertos presentados por la Alcaldía de Medellín, se puede acceder a las bases de datos de movilidad de forma gratuita, donde muestra los Incidentes de Tránsito Georreferenciados por la Secretaria de Movilidad de la Alcaldía de Medellín, durante un periodo de tiempo de un año especifico. Entendiéndose por accidente de tránsito a un evento, generalmente involuntario, generado al menos por un vehículo en movimiento, que causa daños a personas y bienes involucrados en él, e igualmente afecta la normal circulación de los vehículos que se movilizan por la vía o vías comprendidas en las mayores zonas de influencia del hecho (Alcaldía de Medellín, 2020).
El objetivo de este trabajo es que, a partir de técnicas en aprendizaje estadístico, se analicen, se modelen y se evalúen los datos (obtenidos como se mencionó anteriormente), para ello, se realizó un análisis descriptivo y exploratorio de los datos, que permitió inferir y ver tendencias en el comportamiento de los mismos. Seguido de esto se crearon modelos estadísticos que predijeron la accidentalidad en Medellín diaria, semanal y mensual, en un periodo de tiempo de 4 años (Del año 2014 al 2017) y con el fin de identificar que los modelos se comportaran correctamente se evaluaron en los datos del año 2018. Finalmente, se hizo un análisis que permitio la agrupación de los diferentes barrios de la ciudad de Medellín (presentes en sus 16 comunas y 5 corregimientos) de acuerdo con su accidentalidad.
Se realiza un análisis exploratorio para descubrir las principales características de la información contenida en la base de datos de accidentalidad a través de gráficos.
Se muestran los 10 primeros registros de una de las bases de datos obtenidas de datos abiertos de la Alcaldía de Medellín.
## X.U.FEFF.X Y OBJECTID RADICADO FECHA HORA DIA
## 1 -75.60273 6.219016 211279 1423828 2014/01/01 00:00:00+00 02:20:00 1
## 2 -75.56818 6.260009 211280 1423839 2014/01/01 00:00:00+00 12:50:00 1
## 3 -75.54994 6.264765 211281 1423840 2014/01/01 00:00:00+00 01:00:00 1
## 4 -75.60761 6.234327 211282 1423849 2014/01/01 00:00:00+00 12:37:00 1
## 5 -75.57969 6.299968 211283 1423890 2014/01/01 00:00:00+00 10:40:00 1
## 6 -75.55543 6.284499 211284 1423892 2014/01/01 00:00:00+00 04:00:00 1
## 7 -75.55525 6.243999 211285 1423894 2014/01/01 00:00:00+00 07:15:00 1
## 8 -75.55461 6.235756 211286 1423896 2014/01/01 00:00:00+00 05:00:00 1
## 9 -75.59578 6.257979 211287 1423897 2014/01/01 00:00:00+00 01:30:00 1
## 10 -75.57678 6.220072 211288 1423898 2014/01/01 00:00:00+00 02:00:00 1
## PERIODO CLASE DIRECCION DIRECCION_ENC CBML
## 1 2014 Choque CR 80 CL 8 CR 080 008 000 00000 1611
## 2 2014 Atropello CR 53 CL 61 CR 053 061 000 00000 1003
## 3 2014 Atropello CR 39 CL 70 CR 039 070 000 00000 0308
## 4 2014 Atropello CL 32 CR 84 CL 032 084 000 00000 1617
## 5 2014 Caída de Ocupante CR 80 CL 101 CR 080 101 000 00000 0603
## 6 2014 Choque CR 48 CL 93 CR 048 093 000 00000 0401
## 7 2014 Choque CL 51 CR 35 CL 051 035 000 00000 0906
## 8 2014 Choque CR 29 CL 42 CR 029 042 000 00000 0910
## 9 2014 Choque CR 78 CL 47 D CR 078 047 D 000 00000 1116
## 10 2014 Caída de Ocupante CR 49 CL 18 CR 049 018 000 00000 1403
## TIPO_GEOCOD GRAVEDAD BARRIO
## 1 Malla vial aproximada: CR 81-7 HERIDO Loma de los Bernal
## 2 Malla vial HERIDO Jesús Nazareno
## 3 Malla vial HERIDO Manrique Oriental
## 4 Malla vial HERIDO Las Mercedes
## 5 Malla vial HERIDO Doce de Octubre No.2
## 6 Malla vial HERIDO Berlin
## 7 Malla vial HERIDO Barrio Caicedo
## 8 Malla vial HERIDO La Milagrosa
## 9 Malla vial HERIDO U.D. Atanasio Girardot
## 10 Malla vial HERIDO Villa Carlota
## COMUNA DISENO DIA_NOMBRE MES MES_NOMBRE X_MAGNAMED
## 1 Belén Tramo de via MIÉRCOLES 1 NA 831190.1
## 2 La Candelaria Tramo de via MIÉRCOLES 1 NA 835013.6
## 3 Manrique Tramo de via MIÉRCOLES 1 NA 837032.7
## 4 Belén Tramo de via MIÉRCOLES 1 NA 830649.5
## 5 Doce de Octubre Tramo de via MIÉRCOLES 1 NA 833740.8
## 6 Aranjuez Interseccion MIÉRCOLES 1 NA 836425.4
## 7 Buenos Aires Tramo de via MIÉRCOLES 1 NA 836445.0
## 8 Buenos Aires Interseccion MIÉRCOLES 1 NA 836516.5
## 9 Laureles Estadio Tramo de via MIÉRCOLES 1 NA 831959.6
## 10 El Poblado Tramo de via MIÉRCOLES 1 NA 834062.0
## Y_MAGNAMED LONGITUD LATITUD
## 1 1179690 -75.60273 6.219016
## 2 1184224 -75.56818 6.260009
## 3 1184750 -75.54994 6.264765
## 4 1181383 -75.60761 6.234327
## 5 1188644 -75.57969 6.299968
## 6 1186933 -75.55543 6.284499
## 7 1182453 -75.55525 6.243999
## 8 1181541 -75.55461 6.235756
## 9 1183999 -75.59578 6.257979
## 10 1179806 -75.57678 6.220072
La base de datos que proporciona la Alcaldía de Medellín, (Alcaldía de Medellín, 2020), inicialmente proporciona 24 variables que están conformadas así:
• X: Representa el mismo valor de la longitud.
• Y: Representa el mismo valor de la latitud.
• OBJECTID: Representa un valor de identificación.
• RADICADO: Representa un valor de identificación.
• FECHA: Indica la fecha (Año/Mes/Día). Para el año está entre 2014 y 2018, el mes está entre Enero y Diciembre, el día entre 1 y 31.
• HORA: Es la unidad de tiempo que está entre (1:00 A.M y 12:59 P.M)
• DIA: Es el número asignado al día, está entre el día 1 y 31 de cada mes.
• PERIODO: Hace referencia al número del año está entre 2014 y 2018.
• CLASE: Es el tipo de accidente, tiene las siguientes categorías:
Atropello: Es el accidente donde un peatón es inicialmente impactado por un vehículo. (Prueba de ruta, s.f.)
Caída Ocupante: Esta se presenta cuando el ocupante pierde el equilibrio, ya sea al subir o bajar del vehículo en movimiento, precipitándose hacia la vía, sin que ello sea generado por choque o volcamiento. (Prueba de ruta, s.f.).
Choque: El impacto de un vehículo en movimiento contra otro u otros vehículos, estén o no en movimiento o contra un objeto fijo. (Prueba de ruta, s.f.).
Incendio: Se produce como consecuencia de intervenciones mecánicas mal efectuadas, fallas eléctricas o mecánicas o similares, dando lugar a una conflagración o al incendio del vehículo, sin que ello sea consecuencia de un accidente previo. (Prueba de ruta, s.f.)
Volcamiento: Es el accidente en el cual las llantas de un vehículo dejan de estar en contacto con la superficie del suelo, por causas ajenas a la voluntad del conductor. Algunos de los volcamientos son producto de la maniobra que realizan los conductores antes de iniciar una frenada. (Prueba de ruta, s.f.).
Otro: Son los accidentes que no se enmarcan dentro de las clases descritas, tales como el evento en el cual, con la llanta de un vehículo es expulsada una piedra u objeto, generando daños a otros vehículos o lesiones a las personas y otras situaciones diferentes a las expuestas en la clasificación anterior. (Prueba de ruta, s.f.).
• DIRECCION: Es la nomenclatura asignada al predio, acceso principal (se identifica con las vías que conforman la manzana). (Alcaldía de Medellín), encontramos (calles, carreras, avenidas, transversales, diagonales, entre otras).
• DIRECCION_ENC: Es también un sistema de ubicación, pero está expresado codificado diferente.
• CBML: Código de ubicación del predio en la ciudad. Consta de 11 dígitos distribuidos en: Comuna (2 dígitos), Barrio (2 dígitos), Manzana (3 dígitos) y lote (4 dígitos). (Alcaldía de Medellín).
• TIPO_GEOCOD: Esta comprendida es su mayoría por una maya vial que es un conjunto de líneas que definen los ejes viales, de cada una de las vías de la ciudad. Estas líneas tienen estructurada como atributo la información de nomenclatura vial, el sentido del tránsito vehicular y su clasificación de acuerdo al tipo de tráfico que soporta. (Ideca, 2019)
• GRAVEDAD: Es la gravedad del accidente de tránsito, dejando a su vez las siguientes categorías:
• BARRIO: Unidad territorial dotada con ciertas características propias y distintivas que marcan una relación de particularidad frente al conjunto de la ciudad. (Vivienda al Día, 2020). De las 16 comunas y 5 corregimientos, a continuación, se muestran los barrios por los cuales están conformados (Alcaldía de Medellín, 2020):
• COMUNA: Unidad administrativa en la cual se subdivide el área urbana de una ciudad media o principal del país, que agrupa barrios o sectores determinados. (Wikipedia, 2020). En Medellín se cuenta con 16 comunas y 5 corregimientos, así (Alcaldía de Medellín, 2015):
• DISEÑO: Es un glosario de algunos sitios donde ocurren accidentes.
• DIA_NOMBRE: Es el nombre asignado al día, así: Lunes, Martes, … , Sábado, Domingo.
• MES: Es el número del mes en el transcurso del año, va desde 1 hasta 12.
• MES_NOMBRE: Es el nombre del mes en el transcurso del año, así: Enero, Febrero, … , Noviembre, Diciembre.
• X_MAGNAMED: Se usa el sistema de referencia Magna Bogota Zone.
• Y_MAGNAMED: Se usa el sistema de referencia Magna Bogota Zone.
El sistema de coordenadas geográficas es un sistema que referencia cualquier punto de la superficie terrestre y que utiliza para ello dos coordenadas angulares, latitud (norte o sur) y longitud (este u oeste), para determinar los ángulos laterales de la superficie terrestre con respecto al centro de la Tierra y alineadas con su eje de rotación. (AristaSur, 2010)
• LONGITUD: Se mide según los meridianos y es la distancia entre un punto del ecuador y el Meridiano de Greenwich, es medida en grados (°) que puede ir de 0° - 180° para el este (€) u oeste (W). (Significados, s.f.) • LATITUD: Proporciona la localización de un lugar, en dirección Este u Oeste desde el meridiano de referencia 0º, o meridiano de Greenwich, expresándose en medidas angulares comprendidas desde los 0º hasta 180ºE (+180º) y 180ºW (-180º). (AristaSur, 2010)
VARIABLES ELIMINADAS: Analizando la base de datos, se determinó la pertinencia de cada una de las variables mencionadas anteriormente y se llegó a la conclusión de eliminar las siguientes variables:
VARIABLES CONSIDERADAS: Después de un análisis exhaustivo en la base de datos original, estas son las variables que finalmente conformaron en el conjunto de datos con la cual se trabajo: FECHA, DIA, PERIODO, CLASE, GRAVEDAD, BARRIO, COMUNA, DISENO, DIA_NOMBRE, MES, MES_NOMBRE, LONGITUD, LATITUD.
CREACIÓN DE NUEVAS VARIABLES A CONSIDERAR:
NUMERO COMUNA: Es el número que le corresponde a la comuna, va entre 1 y 16 para todas las comunas de Medellín, para los corregimientos va entre 50 y 90.
SEMANA: Es el número que le corresponde a cada semana del año, su notación es de la siguiente manera:
DIA AÑO: Es el número del año al que le corresponde cada día, usualmente un año tiene 365 días a excepción del año bisiesto con 366 días.
DIA ESPECIAL: Es una variable categórica con 0 y 1, donde 0 representa un día normal y 1 se asocia a un día especial.
DIA FESTIVO: Es una variable categórica con 0 y 1, donde 0 representa un día cotidiano y 1 se asocia a un día festivo en Colombia.
CELEBRACION: Corresponde a los días con alguna celebración especial en Colombia, todos los días festivos son considerados días especiales, pero no necesariamente todos los días especiales corresponde a un día festivo. Se consideraron 31 celebraciones como se muestra a continuación (¿Cuando en el mundo?, s.f.):
Finalmente, se muestra el encabezado del conjunto de datos a trabajar.
## FECHA DIA PERIODO CLASE GRAVEDAD BARRIO
## 2 2014-01-01 1 2014 Atropello Herido Jesús Nazareno
## 3 2014-01-01 1 2014 Atropello Herido Manrique Oriental
## 4 2014-01-01 1 2014 Atropello Herido Las Mercedes
## 5 2014-01-01 1 2014 Caída Ocupante Herido Doce de Octubre No.2
## 6 2014-01-01 1 2014 Choque Herido Berlín
## 7 2014-01-01 1 2014 Choque Herido Barrio Caicedo
## 8 2014-01-01 1 2014 Choque Herido La Milagrosa
## 9 2014-01-01 1 2014 Choque Herido U.D. Atanasio Girardot
## 10 2014-01-01 1 2014 Caída Ocupante Herido Villa Carlota
## 12 2014-01-01 1 2014 Choque Herido Brasilia
## COMUNA DISENO DIA_NOMBRE MES MES_NOMBRE LONGITUD LATITUD
## 2 La Candelaria Tramo de via Miércoles 1 Enero -75.56818 6.260009
## 3 Manrique Tramo de via Miércoles 1 Enero -75.54994 6.264765
## 4 Belén Tramo de via Miércoles 1 Enero -75.60761 6.234327
## 5 Doce de Octubre Tramo de via Miércoles 1 Enero -75.57969 6.299968
## 6 Aranjuez Interseccion Miércoles 1 Enero -75.55543 6.284499
## 7 Buenos Aires Tramo de via Miércoles 1 Enero -75.55525 6.243999
## 8 Buenos Aires Interseccion Miércoles 1 Enero -75.55461 6.235756
## 9 Laureles Estadio Tramo de via Miércoles 1 Enero -75.59578 6.257979
## 10 El Poblado Tramo de via Miércoles 1 Enero -75.57678 6.220072
## 12 Aranjuez Tramo de via Miércoles 1 Enero -75.55856 6.273590
## NUMEROCOMUNA SEMANA DIAAÑO DIA_ESPECIAL DIA_FESTIVO CELEBRACION
## 2 10 1 1 1 1 Año Nuevo
## 3 3 1 1 1 1 Año Nuevo
## 4 16 1 1 1 1 Año Nuevo
## 5 6 1 1 1 1 Año Nuevo
## 6 4 1 1 1 1 Año Nuevo
## 7 9 1 1 1 1 Año Nuevo
## 8 9 1 1 1 1 Año Nuevo
## 9 11 1 1 1 1 Año Nuevo
## 10 14 1 1 1 1 Año Nuevo
## 12 4 1 1 1 1 Año Nuevo
Con la ayuda de un gráfico de barras, se identifica cuales son las comunas que presentan el mayor porcentaje de accidentalidad durante el periodo de estudio.
Se observa que la comuna con mayor accidentalidad es La Candelaria que representa aproximadamente el \(21\%\), las comunas Belén y Robledo cada una con \(\approx 7\%\), La América y Manrique poseen comportamientos similares cada una representa \(\approx 4\%\) de la población, Doce de Octubre y Villa Hermosa presentan comportamientos similares con \(\approx 3\%\) cada una, Popular y Santa Cruz representan un 1.5% de la población, finalmente el Corregimiento de San Sebastián de Palmitas representa un \(0.01\%\) lo que indica que presenta la menor cantidad de accidentes, por tanto no es representativo.
Se realizo un gráfico de barras con el fin de mostrar los $224 barrios que presentan la mayor accidentalidad.
En los registros del conjunto de datos existen \(307\) barrios, para la construcción de este gráfico solo se consideraron los \(22\) barrios con más accidentalidad, ya que los restantes \((285)\) no llegan a representar el \(1\%\) del total de accidentes que se presenta en la ciudad de Medellín. El barrio la candelaria presenta el mayor porcentaje de accidentalidad en todos los barrios de Medellín; Barrio Colón y San Benito presentan \(\approx 1.6\%\) de accidentalidad cada uno; Terminal de Transporte y Villa Nueva presentan comportamientos similares ya que cada uno representa el \(1.4\%\) del total de la población; Corazón de Jesús, Belén y Guayabal representan \(1.2\%\) cada uno; finalmente los barrios Villa Carlota y Chagualo son \(\approx 1\%\).
En el mes de Enero se presenta la menor cantidad de accidentes para todos los años considerados, el mes de Marzo presento una alta accidentalidad unicamente en el año \(2014\), en general el mes de Agosto es el mes con mayor accidentes pero fue aún más grave para los años \(2016\) y \(2017\), finalmente se observa que el mes de Octubre presento gran acidentalidad para el año \(2016\), los meses de Junio y Noviembre presentan comportamientos semejantes, el año con mayor cantidad de accidentes es \(2016\) y el año de menor accidentalidad fue \(2018\).
El mes que presenta mayor accidentalidad es Agosto con \(8.93\%\) cabe resaltar que este mes se derrolla la tradicional Feria de Flores de Medellín, los meses Septiembre, Mayo, Marzo, Julio y Octubre tienen un comportamiento muy similar con \(\approx 8.6\%\) cada uno, Noviembre, Febrero y Junio también se comportan de manera semejante con \(\approx 8\%\) cda uno; finalmente el mes de Enero presenta la menor cantidad de accidentes, esto puede deberse a que la mayoría de personas se encuentran fuera de la ciudad por vacaciones.
se confirma que las primeras semanas del año presentan la menor accidentalidad, los días \(10\) y \(14\) de Marzo son los más accidentados, los días \(30\) y \(31\) de Octubre se presenta gran cantodad de accidentes, entre los días \(11\) a \(18\) de Septimebre también se presenta una cantidad alta de incidentes viales esto puede deberse a las celebraciones de amor y amistad, desde el \(16\) al \(23\) de Diciembre hay fuerte accidentalidad esto se corrobora con el gráfico semanal.
La semana \(31\) que va desde el \(29\) Julio al \(05\) de Agosto posee la mayor accidentalidad esto puede deberse a Feria de Flores; sigue la semana \(51\) comprendida entre el \(17\) y \(23\) de Diciembre, la accidentalidad presentada en esta semana puede deberse a las celebraciones de este mes, finalmente se observa que la dos primeras semanas del año son las menos accidentadas. Para este análisis se decidio juntar las semanas \(52\) y \(53\) ya que esta última solo comprendia dos días.
Los días Viernes y Martes se presenta la mayor cantidad de accidentes, para el día Viernes esto puede ser ocasionado por el inicio del fin de semana, repecto al día Martes se presenta un comportamiento poco esperado, se puede presentar por múltiples razones algunas de ellas los días festivos y el aforo vehicular por día. El Domingo se presenta \(9.5\%\) de accidentes, el menor de todos se siguiere que esto sucede por ser el día de descanso de la mayoría de las personas.
El tipo más frecuente de accidente es Choque con alrededor de \(67\%\), Incendio representa el \(0.01\%\) del total de la población, por tanto no es significativo.
El tipo de accidente Choque en su gran mayoría deja como consecuencia Solo daños alrededor de un \(70\%\), el \(30\%\) restante corresponde a Heridos; la clase Atropello y Caída Ocupante en su gran mayoría dejan Heridos con un porcentaje muy bajo de Muertes; respecto a Volcamiento y Otro.
La gran parte de los accidentes en la ciudad de Medellín ocurren en Tramo de Via e Intersecciones, algo que es de esperarse ya que estas Intersecciones son de alta preligrosidad.
Para la etapa de entrenamiento se hizo uso del registro historico de accidentes, desde el año 2014, hasta el año 2017 y para la etapa de validación se hizo uso de los registros del año 2018. Esto se realizó de esta forma y no con un método aleatorio, debido a que el conjunto de datos posee una estructura temporal.
Se decide omitir la categoría incendio de la variable clase para la etapa de entrenamiento, ya que, como se describió previamente en el análisis descriptivo, el número de registros es casi nulo.
datos_tr <- datos[datos$CLASE!="Incendio", ]
datos_tr$CLASE <- as.factor(as.character(datos_tr$CLASE))
datos_vl <- subset(datos_tr, (PERIODO == '2018'))
datos_tr <- subset(datos_tr, (PERIODO != '2018'))
Inicialmente se hizo uso de un modélo lineal, con el fin de obtener las variables más significativas, para su realización se tuvieron en cuenta las variables, dia_nombre, dia_especial y diseño. Sin embargo, se observó que la significancia de la variable “diseño” es muy baja, por lo que decide eliminarse.
datos_lm1 <- datos_tr %>% group_by(FECHA, DIA_ESPECIAL, DIA_NOMBRE,
DISENO) %>% count(name = "NRO_ACC")
lm1 <- lm(NRO_ACC ~ DIA_ESPECIAL+DIA_NOMBRE+DISENO, data = datos_lm1) # Modelo lineal
promedio <- mean(datos_lm1$NRO_ACC)
TSS <- sum((datos_lm1$NRO_ACC - promedio)^2)
sprintf("TSS: %f", TSS)
## [1] "TSS: 8869272.065404"
RSS <- RSS(lm1)
sprintf("RSS: %f", RSS)
## [1] "RSS: 791500.570410"
r2 <- 1-RSS/TSS
Se realizó el cálculo de la desviación estandar de los residuales \((MSE)\) y del \(R^2\), para “cuantificar” la calidad del modelo. Sin embargo, el modelo presenta un alto \(MSE\) \((102.13)\), lo que daría lugar a una alta variabilidad en las predicciones, esta variable viene a jugar el papel de una función de riesgo, correspondiente al valor esperado de la pérdida de los errores cuadráticos. Sin embargo, la variabilidad explicada por el modelo llega a ser \(\approx(91\%)\). En este modelo un alto \(R^2\) y un alto \(MSE\), podría estar asociado a una alta variabilidad inherente de los datos, lo que se puede validar con el cálculo del \(RSS(791500.6)\) del modelo lineal y el \(TSS(8869272)\) de los datos de entrenamiento.
lm1_data <- datos_tr %>% group_by(FECHA, DIA_ESPECIAL, DIA_NOMBRE,
DISENO) %>% count(name = "NRO_ACC")
lm1_tr <- lm1_data[,-c(5)]
predicted <- round(predict(lm1, newdata=lm1_tr))
actual <- lm1_data$NRO_ACC
lm1_mse <- MSE(predicted, actual) # MSE
lm1_mae <- MAE(predicted, actual) # MAE
lm1_r2 <- R2_Score(predicted, actual) # R2
sprintf("MSE: %f, MAE: %f, R2: %f", lm1_mse, lm1_mae, lm1_r2)
## [1] "MSE: 102.097067, MAE: 6.140929, R2: 0.911294"
lm1_2018 <- datos_vl %>% group_by(FECHA, DIA_ESPECIAL, DIA_NOMBRE,
DISENO) %>% count(name = "NRO_ACC")
predicted <- round(predict(lm1, newdata=lm1_2018))
actual <- lm1_2018$NRO_ACC
lm1_mse <- MSE(predicted, actual) # MSE
lm1_mae <- MAE(predicted, actual) # MAE
lm1_r2 <- R2_Score(predicted, actual) # R2
sprintf("MSE: %f, MAE: %f, R2: %f", lm1_mse, lm1_mae, lm1_r2)
## [1] "MSE: 142.040661, MAE: 7.183646, R2: 0.750129"
La diferencia del \(MSE\) entre los datos de entrenamiento y validación es del \(39.9\%\), que al ser mayor que el \(15\%\) nos indicaría un posible sobreajuste, que de hecho es corroborado con el \(R^2\), ya que este disminuye en casi un \(20\%\) para los datos de validación.
datos_lm2 <- datos_tr %>% group_by(FECHA,DIA_FESTIVO, DIA_NOMBRE) %>%
count(name = "NRO_ACC")
lm2 <- lm(NRO_ACC ~ DIA_FESTIVO+DIA_NOMBRE, data = datos_lm2)
lm2_tr <- datos_tr %>% group_by(FECHA,DIA_FESTIVO, DIA_NOMBRE) %>%
count(name = "NRO_ACC")
predicted <- round(predict(lm2, newdata=lm2_tr))
actual <- lm2_tr$NRO_ACC
lm2_mse <- MSE(predicted, actual) # MSE
lm2_mae <- MAE(predicted, actual) # MAE
lm2_r2 <- R2_Score(predicted, actual) # R2
sprintf("MSE: %f, MAE: %f, R2: %f", lm2_mse, lm2_mae, lm2_r2)
## [1] "MSE: 291.471595, MAE: 12.951403, R2: 0.569766"
lm2_2018 <- datos_vl %>% group_by(FECHA,DIA_FESTIVO, DIA_NOMBRE) %>%
count(name = "NRO_ACC")
predicted <- round(predict(lm2, newdata=lm2_2018))
actual <- lm2_2018$NRO_ACC
lm2_mse <- MSE(predicted, actual) # MSE
lm2_mae <- MAE(predicted, actual) # MAE
lm2_r2 <- R2_Score(predicted, actual) # R2
sprintf("MSE: %f, MAE: %f, R2: %f", lm2_mse, lm2_mae, lm2_r2)
## [1] "MSE: 273.427397, MAE: 12.758904, R2: 0.581054"
Para la realización de este segundo modelo, se quito la variable diseño y se cambio la variable dia_especial por dia_festivo, sin embargo, no se obtuvieron resultados positivos, ya que el \(R^2\) disminuyó notablemente y el \(MSE\) aumentó, indicandonos una alta variabilidad en las predicciones y una baja variabilidad explicada por el modelo. Así, se decide realizar un modelo lineal generalizado.
Se realizó un modelo líneal generalizado de la familia poisson, con el fin de generar un recuento del número de accidentes, iniciando con las variables dia_festivo y dia_nombre.
En el modelo glm se usa habitualmente el logaritmo de la media para la función link, de modo que el modelo log-lineal con una variable explicativa X se puede expresar como \(\log(\mu) = \alpha + \beta*x\), de modo que \(\mu = e^{\alpha + \beta*x} = e^{\alpha}*(e^{\beta})^{x}\)
En este caso se hizo uso de la famillia poisson, debido a que la variable respuesta funciona como un recuento, en este caso de accidentes. Cabe aclarar, que existen otro tipo de familias y funciones de enlace, que son usadas dependiendo del tipo de variable respuesta.
datos_lm4 <- datos_tr %>% group_by(FECHA,DIA_FESTIVO, DIA_NOMBRE) %>%
count(name = "NRO_ACC")
lm4 <- glm(NRO_ACC ~ DIA_FESTIVO+DIA_NOMBRE, family = "poisson", data = datos_lm4) # Modelo lineal generalizado, con familia poisson
lm4_tr <- datos_tr %>% group_by(FECHA,DIA_FESTIVO, DIA_NOMBRE) %>%
count(name = "NRO_ACC")
lm4_tr_1 <- lm4_tr[,-4]
predicted <- round(predict(lm4, newdata=lm4_tr_1, type="response"))
actual <- lm4_tr$NRO_ACC
lm4_mse <- MSE(predicted, actual) # MSE
lm4_mae <- MAE(predicted, actual) # MAE
lm4_r2pseudo <- R2pseudo(lm4)
sprintf("MSE: %f, MAE: %f, Pseudo R2: %f", lm4_mse, lm4_mae, lm4_r2pseudo)
## [1] "MSE: 284.337440, MAE: 12.865845, Pseudo R2: 0.594121"
lm4_2018 <- datos_vl %>% group_by(FECHA,DIA_FESTIVO, DIA_NOMBRE) %>%
count(name = "NRO_ACC")
predicted <- round(predict(lm4, newdata=lm4_2018, type="response"))
actual <- lm4_2018$NRO_ACC
lm4_mse <- MSE(predicted, actual) # MSE
lm4_mae <- MAE(predicted, actual) # MAE
sprintf("MSE: %f, MAE: %f", lm4_mse, lm4_mae)
## [1] "MSE: 273.013699, MAE: 12.761644"
En este caso, se quizó iniciar con estas variables en base a su alta significancia obtenida en modelos previos, sin embargo, es claro que aunque llegan a explicar \(\approx(60\%)\) de la variabilidad del modelo, sigue siendo un modelo muy regular, por otro lado, la variabilidad de las predicciones es muy alta, se obtuvo un \(MSE\) de \(273.013\).
La diferencia entre el \(MSE\) de la predicción para los datos de entrenamiento y validación, fue de \(\approx(11.83\%)\), esto es bueno, en el sentido de que no hay un sobreajuste, lo cual se evidenció desde un principio en el \(pseudo-R^2\) del modelo para los datos de entrenamiento. Aún asi, es claro que el modelo sigue siendo bastante regular, por lo que se decide hacer uso de la variable clase.
datos_lm5 <- datos_tr %>% group_by(FECHA, DIA_FESTIVO, DIA_NOMBRE,
CLASE) %>% count(name = "NRO_ACC")
lm5 <- glm(NRO_ACC ~ DIA_FESTIVO+DIA_NOMBRE+CLASE, family = "poisson",
data = datos_lm5)
datos_lm5_p <- datos_lm5[,-5]
y_train <- round(predict(lm5, newdata= datos_lm5_p, type="response"))
y_actual <- datos_lm5$NRO_ACC
lm5_tmse <- MSE(y_train, y_actual)
lm5_tmae <- MAE(y_train, y_actual)
lm5_tr2 <- R2pseudo(lm5)
lm5_rel <- lm5$deviance/lm5$df.residual # Se obtiene la sobredispersion
sprintf("MSE: %f, MAE: %f, R2 Entrenamiento: %f, Sobredispersión: %f",
lm5_tmse, lm5_tmae, lm5_tr2,lm5_rel)
## [1] "MSE: 48.489903, MAE: 4.561826, R2 Entrenamiento: 0.935025, Sobredispersión: 1.788006"
datos_lm5_v1 <- datos_vl %>% group_by(FECHA, DIA_FESTIVO, DIA_NOMBRE,
CLASE) %>% count(name = "NRO_ACC")
datos_lm5_v2 <- datos_lm5_v1[,-5]
y_train <- round(predict(lm5, newdata= datos_lm5_v2, type="response"))
y_actual <- datos_lm5_v1$NRO_ACC
lm5_tmse <- MSE(y_train, y_actual)
lm5_tmae <- MAE(y_train, y_actual)
lm5_rel <- lm5$deviance/lm5$df.residual # Se obtiene la sobredispersion
sprintf("MSE: %f, MAE: %f, Sobredispersión: %f", lm5_tmse, lm5_tmae,lm5_rel)
## [1] "MSE: 46.614143, MAE: 4.388085, Sobredispersión: 1.788006"
La diferencia entre el \(MSE\) de la predicción para los datos de entrenamiento y validación, fue de \(\approx(1.87\%)\) y al estar debajo del \(15\%\), no habría sobreajuste. Respecto a la varianza explicada por el modelo, resulta ser bastante buena (\(\approx(94\%)\)) y la sobredispersión que se definió como la proporción entre la desviación nula y la desviación de los residuales, se encuentra cercana a \(1\), indicando un ajuste razonable del modelo. Se elige este modelo al cumplir con todas las condiciones requeridas.
datos_lm6 <- datos_tr %>% group_by(FECHA, DIA_FESTIVO, DIA_NOMBRE,
CLASE, COMUNA) %>% count(name = "NRO_ACC")
lm6 <- glm(NRO_ACC ~ DIA_FESTIVO+DIA_NOMBRE+CLASE+COMUNA, family = "poisson",
data = datos_lm6)
datos_lm6_p <- datos_lm6[,-6]
y_train <- round(predict(lm6, newdata= datos_lm6_p, type="response"))
y_actual <- datos_lm6$NRO_ACC
lm6_tmse <- MSE(y_train, y_actual)
lm6_tmae <- MAE(y_train, y_actual)
lm6_tr2 <- R2pseudo(lm6)
lm6_rel <- lm6$deviance/lm6$df.residual # Se obtiene la sobredispersion
sprintf("MSE: %f, MAE: %f, R2 Entrenamiento: %f, Sobredispersión: %f",
lm6_tmse, lm6_tmae, lm6_tr2,lm6_rel)
## [1] "MSE: 3.874006, MAE: 1.159981, R2 Entrenamiento: 0.715957, Sobredispersión: 0.810124"
En este caso, el \(MSE\) es de \(3.8\), lo que nos indica una baja varianza de los residuales, recordemos que esta varianza se mide como una distancia vertical entre los residuales y el modelo, por otro lado, tenemos un \(pseudo-R^2\) de \(0.71\), explicando \(\approx(71\%)\) de la varianza del número de accidentes en el área metropolitana y una sobredispersión moderada \((0.810124)\), indicando un ajuste razonable del modelo.
datos_lm6_v1 <- datos_vl %>% group_by(FECHA, DIA_FESTIVO, DIA_NOMBRE,
CLASE, COMUNA) %>% count(name = "NRO_ACC")
datos_lm6_v2 <- datos_lm6_v1[,-6]
y_train <- round(predict(lm6, newdata= datos_lm6_v2, type="response"))
y_actual <- datos_lm6_v1$NRO_ACC
lm6_tmse <- MSE(y_train, y_actual)
lm6_tmae <- MAE(y_train, y_actual)
lm6_rel <- lm6$deviance/lm6$df.residual # Se obtiene la sobredispersion
sprintf("MSE: %f, MAE: %f, Sobredispersión: %f", lm6_tmse, lm6_tmae,
lm6_rel)
## [1] "MSE: 3.896290, MAE: 1.173184, Sobredispersión: 0.810124"
La diferencia entre el \(MSE\) de la predicción para los datos de entrenamiento y validación, fue de \(\approx(0.82\%)\) que al estar debajo del \(15\%\), no indicaría un sobreajuste.
A manera de conclusión, este modelo presenta el mejor \(MSE\), pero aún así no es un modelo viable ya que no es posible obtener la variable COMUNA para realizar una predicción sobre los requerimientos especificados.
En el gráfico anterior se ilustra el número de puntos (accidentes) por cluster. El mapa se realizó haciendo uso de ArcgisPro, pero al intentar adjuntarlo en HTML, no permite subir el archivo, debido a su peso.
## long lat barrios clust
## 1 -75.56818 6.260009 Jesús Nazareno 1
## 2 -75.54994 6.264765 Manrique Oriental 1
## 3 -75.60761 6.234327 Las Mercedes 2
## 4 -75.57969 6.299968 Doce de Octubre No.2 1
## 5 -75.55543 6.284499 Berlín 1
## 6 -75.55525 6.243999 Barrio Caicedo 1
## 7 -75.55461 6.235756 La Milagrosa 3
## 8 -75.59578 6.257979 U.D. Atanasio Girardot 4
## 9 -75.57678 6.220072 Villa Carlota 2
## 10 -75.55856 6.273590 Brasilia 1
Según las medidas geoespaciales de latitud y longitud de los accidentes es posible obtener la agrupación mostrada anteriormente. Sin embargo, se acalara que este agrupamiento tiene un uso neto como base de referenciación, ya que no se hizo uso de ningún método para la elección del \(K\) óptimo.
Una vez se tuvieron los datos preprocesados y el subset de datos seleccionados, se procedió a realizar un escalamiento y centrado de la base de datos.
## HERIDO MUERTO SOLO_DAÑOS
## Aguas Frias -0.7114493 -0.66879078 -0.58696550
## Aldea Pablo VI -0.7300959 -0.44260267 -0.61484330
## Alejandría -0.5964618 -0.44260267 0.12113079
## Alejandro Echavarría 0.6217843 -0.21641455 -0.13534503
## Alfonso López 1.1221354 0.46214979 0.21870311
## Altamira 0.4446414 -0.21641455 -0.01547046
## Altavista -0.3291935 -0.66879078 -0.31097521
## Altavista Sector Central -0.6213239 0.46214979 -0.58417772
## Altos del Poblado -0.5529530 -0.66879078 -0.32212633
## Andalucía -0.4876898 0.00977356 -0.46430315
En un principio se seleccionó un número aleatorio de clusters con el fin de realizar una observación previa del agrupamiento, seleccionando un \(k = 3\).
En este caso se corroboró el valor (between_SS/total_SS), el cual fue de \(\approx(~77\%)\). Lo que realmente representa esta proporción es la relación entre la cantidad de la suma de los cuadrados totales de los datos que estan en los agrupamientos. Se quiere aumentar este valor a medida que se incrementa el número de agrupamientos, pero sin llegar al sobreajuste. Si se usa un k igual al número de barrios, habrían serios problemas de sobreajuste.
Se encontrará un valor de \(k\) con el cual el modélo no se sobreajuste y al mismo tiempo agrupe los datos según su distribución real.
Este método considera el porcentaje de varianza explicada en función del número de agrupamientos. Lo ideal es elegir un número de agrupamientos de tal forma, que al agregar uno más, no se obtenga un mejor modelado de los datos.
En este caso para k = \(4\), la proporción between_ss/total_ss presenta un cambio más suave, en comparación con otros k, como \(1\) o \(2\)., k = \(5\) también parece ser un candidato potencial.
El modelo k-means es “casi” un modelo de mezcla Gaussiana (Gaussiana mixture model) y se puede construir una probabilidad para el modelo de mezcla gaussiana y, por tanto determinar valores de criterio de información.
## Bayesian Information Criterion (BIC):
## EII VII EEI VEI EVI VVI EEE
## 1 -2778.535 -2778.5348 -2790.096 -2790.0963 -2790.096 -2790.096 -1917.887
## 2 -2034.984 -1637.2653 -2044.261 -1630.6211 -2031.326 -1603.132 -1941.092
## 3 -1874.504 -1077.5700 -1877.763 -1044.2341 -1848.048 -1020.650 -1695.192
## 4 -1701.506 -624.2890 -1900.690 -555.1393 -1675.044 NA -1670.211
## 5 -1724.639 -416.7509 -1638.557 -401.4251 -1669.413 NA -1629.255
## 6 -1660.608 -429.2090 -1661.680 -378.9528 -1640.890 NA -1652.379
## 7 -1683.734 -297.6200 -1684.810 -293.2765 -1645.430 NA -1675.502
## 8 -1656.385 -315.7834 -1611.516 -248.1773 -1674.975 NA -1573.369
## 9 -1611.033 -241.3236 -1604.133 -221.3332 -1677.013 NA -1596.489
## 10 -1634.153 -321.8118 -1627.254 -297.4857 -1714.222 NA -1619.614
## 11 -1638.809 -339.7972 -1638.651 -235.3223 -1697.522 NA -1600.215
## 12 -1651.200 -356.6188 -1657.735 -246.8790 -1648.850 NA -1503.723
## 13 -1610.809 -368.2300 -1652.178 -274.1442 -1678.902 NA -1526.846
## 14 -1631.756 -368.5831 -1675.125 -286.9349 -1696.832 NA -1507.216
## 15 -1654.930 -314.5325 -1698.286 -309.2119 -1729.029 NA -1540.117
## EVE VEE VVE EEV VEV EVV VVV
## 1 -1917.887 -1917.8871 -1917.8871 -1917.887 -1917.8871 -1917.887 -1917.8871
## 2 -1669.526 -1203.3207 -1228.9500 -1648.839 -1103.5679 -1638.388 -1116.0753
## 3 -1616.758 -824.9792 -934.7076 -1539.757 -775.0671 -1590.253 -723.1515
## 4 -1594.288 NA NA -1454.995 -527.2537 -1443.563 -644.5577
## 5 -1507.591 NA NA -1464.755 -274.8117 -1473.835 -673.3259
## 6 -1542.227 NA -869.4167 -1365.809 -112.9419 -1423.250 -688.9764
## 7 -1501.601 NA NA -1380.076 -269.7791 -1462.430 NA
## 8 -1584.254 NA NA -1435.210 -482.0204 -1405.946 NA
## 9 -1629.732 NA NA -1497.408 -177.4555 -1488.555 NA
## 10 -1624.825 NA NA -1449.370 -309.0454 NA NA
## 11 -1650.595 NA NA -1428.126 -498.2773 -1523.725 NA
## 12 -1460.493 NA NA -1420.813 -523.8567 -1437.196 NA
## 13 -1491.367 NA NA -1484.498 -538.1587 -1460.276 NA
## 14 -1547.356 NA NA -1534.069 -420.4230 -1587.997 NA
## 15 -1529.920 NA NA -1544.013 -585.6269 -1650.946 NA
##
## Top 3 models based on the BIC criterion:
## VEV,6 VEV,9 VEI,9
## -112.9419 -177.4555 -221.3332
En este caso, los \(3\) mejores modelos estan asociados a unos valores de \(k = (6, 9)\).
Existen otras técnicas para determinar el número óptimo de clusters, el paquete NbClust provee 30 indices para la determinación del número de clusters.
## *** : The Hubert index is a graphical method of determining the number of clusters.
## In the plot of Hubert index, we seek a significant knee that corresponds to a
## significant increase of the value of the measure i.e the significant peak in Hubert
## index second differences plot.
##
## *** : The D index is a graphical method of determining the number of clusters.
## In the plot of D index, we seek a significant knee (the significant peak in Dindex
## second differences plot) that corresponds to a significant increase of the value of
## the measure.
##
## *******************************************************************
## * Among all indices:
## * 13 proposed 4 as the best number of clusters
## * 3 proposed 5 as the best number of clusters
## * 2 proposed 6 as the best number of clusters
## * 4 proposed 7 as the best number of clusters
## * 2 proposed 8 as the best number of clusters
##
## ***** Conclusion *****
##
## * According to the majority rule, the best number of clusters is 4
##
##
## *******************************************************************
En este caso es claro que el valor de \(k\) óptimo es \(4\).
Se sigue evidenciando que el valor óptimo de \(k\) es \(4\).
Este criterio es similar a la busqueda de la relación entre la varianza entre-cluster/varianza intra-cluster, se hace uso de la librería vegan.
Según los diferentes métodos \(k = 4\), parecía ser muy óptimo para la generación de la clusterización.
## HERIDO MUERTO SOLO_DAÑOS kmm.cluster
## Aguas Frias 58 0 20 3
## Aldea Pablo VI 52 1 10 3
## Alejandría 95 1 274 3
## Alejandro Echavarría 487 2 182 2
## Alfonso López 648 5 309 2
## Altamira 430 2 225 2
## Altavista 181 0 119 3
## Altavista Sector Central 87 5 21 3
## Altos del Poblado 109 0 115 3
## Andalucía 130 3 64 3
El mayor porcentaje de accidentalidad en todas las cetegorías de gravedad lo presenta el Cluster \(3\), seguido del cluster \(4\), el tercero con mayor accidentalidad es el grupo \(1\) y finalmente los barrios que pertenecen al grupo \(2\) presentan el menor porcentaje de accidentalidad.
Los barrios que pertenecen al grupo de accidentalidad baja, se caracterizan por presentar un total de \(34055\) accidentes, en el periodo de tiempo considerado para la realización de este agrupamiento que fue entre el 2014 y 2017, además hay un predominio de accidentes con una gravedad moderada (heridos), seguida de un número también considerable de gravedad por solo daños \((112767)\) y muy pocos muertos \((176)\).
Los barrios que pertenecen a este agrupamiento, se caracterizan por presentar un total de \(23087\) accidentes, en el periodo de tiempo considerado para la realización de este agrupamiento que fue entre el 2014 y 2017, además hay un predominio de accidentes con una gravedad leve (solo daños), seguida de un número también considerable de heridos \((10424)\) y muy pocos muertos \((143)\).
Los barrios que pertenecen al grupo de accidentalidad media-alta, se caracterizan por presentar un total de \(72066\) accidentes, en el periodo de tiempo considerado para la realización de este agrupamiento que fue entre el 2014 y 2017, además hay un predominio de accidentes con una gravedad moderada (heridos) | \(41929\) , seguido de un número también considerable de gravedad por solo daños \((29747)\) y muy pocos muertos \((390)\).
Los barrios que pertenecen al grupo de accidentalidad alta, se caracterizan por presentar un total de \(39429\) accidentes, en el periodo de tiempo considerado para la realización de este agrupamiento que fue entre el 2014 y 2017, además hay un predominio de accidentes con una gravedad leve (solo daños) | \(19670\), seguido de un número también considerable de gravedad por heridos \((19510)\) y muy pocos muertos \((249)\).
¿Cuando en el mundo? (s.f.). Calendario del 2014 Colombia. Obtenido de ¿Cuando en el mundo? Fechas y horas
Alcaldía de Medellín. (2015). PERSONAS ENCUESTADAS Y CLASIFICADAS EN EL SISBÉN POR GÉNERO Y ESTADO CIVIL DEL JEFE DEL HOGAR SEGÚN COMUNA O CORREGIMIENTO BASE DE DATOS CERTIFICADA POR EL D.N.P. Obtenido de Alcaldía de Medellín
Alcaldía de Medellín. (2020). Incidentes georreferenciados. Obtenido de Alcaldía de Medellín OpenData
Alcaldía de Medellín. (s.f.). Glosario Certificado Catastral.Obtenido de Medellín un hogar para la vida
ArcGis. (2020). Software de ordenador
AristaSur. (2010). Sistema de Coordenadas Geográficas: Longitud y Latitud. Obtenido de AristaSur
ARL SURA. (2020). La accidentalidad vial: un problema mundial. Obtenido de ARL SURA - Riesgos Laborales - ARL
Concejo de Medellín. (2020). LA ALTA ACCIDENTALIDAD EN MEDELLÍN SE CONVIRTIÓ EN UN PROBLEMA DE SALUD PÚBLICA .Obtenido de Concejo de Medellín
Google Earth Pro. (2020). Software de ordenador)
Ideca. (2019). Malla Vial Integral. Bogotá D.C. Obtenido de Ideca
INVIAS . (2018). Glosario de Manual de diseño geométrico de carreteras. Obtenido de INVIAS (INSTITUTO NACIONAL DE VIAS)
Mintransporte. (2020). Glosario. Obtenido de Mintransporte: https://www.mintransporte.gov.co/glosario/genPag=5
Pedro A. Torres-Saavedra, P. (2018). Modelos Estadísticos Avanzados. En P. A. Torres-Saavedra, Modelos Estadísticos Avanzados (ESMA6995). Prueba de ruta. (s.f.). Tipos de accidentes de tránsito. Obtenido de Prueba de ruta
R Studio. (2020). Software de ordenador
Significados. (s.f.). Qué es Latitud. Obtenido de Significado de Latitud
Sistemas y Comunicaciones FODC. (s.f.). Accidentalidad vial: la segunda causa que más muerte genera en nuestro país. Obtenido de Oleoducto de Colombia
Vivienda al Día. (2020). Barrio. Obtenido de Vivienda al Día
Wikipedia. (2020). Comunas de Colombia.Obtenido de Wikipedia La enciclopedia libre