Actividad Evaluativa Primer Corte

Author

Miguel Ángel Pérez Vargas

Published

August 20, 2024

library(readr)
AccidentesDB <- read_csv("Accidentalidad_en_Barranquilla_20240819.csv")

La base de datos utilizada es suministrada por la Alcaldía Distrital de Barranquilla, Distrito Especial, Industrial y Portuario. Esta contiene información relacionada a los accidentes de tránsito ocurridos en el distrito de Barranquilla, con datos recopilados a partir de los informes policiales de accidentes de tránsito (IPAT). Su última actualización fue el 17 de julio de 2024 y contiene 11 variables que describen diferentes aspectos de la accidentalidad en la ciudad.

Utilizando la función “dim( )”, se obtiene el número total de filas y columnas de la base datos:

dim(AccidentesDB)
[1] 25610    11

La base de datos está compuesta por un total de 25610 filas y 11 columnas.

Con fines ilustrativos, se muestra una vista preliminar de los primeros 20 registros de la database:

library(knitr)
print(kable(head(AccidentesDB, 20)))


|FECHA_ACCIDENTE |HORA_ACCIDENTE |GRAVEDAD_ACCIDENTE |CLASE_ACCIDENTE |SITIO_EXACTO_ACCIDENTE | CANT_HERIDOS_EN _SITIO_ACCIDENTE| CANT_MUERTOS_EN _SITIO_ACCIDENTE| CANTIDAD_ACCIDENTES| AÑO_ACCIDENTE|MES_ACCIDENTE |DIA_ACCIDENTE |
|:---------------|:--------------|:------------------|:---------------|:----------------------|--------------------------------:|--------------------------------:|-------------------:|-------------:|:-------------|:-------------|
|2018-01-01      |01:30:00:am    |Con heridos        |Atropello       |CL 87 9H 24            |                                1|                               NA|                   1|          2018|January       |Mon           |
|2018-01-01      |02:00:00:pm    |Solo daños         |Choque          |CL 110 CR 46           |                               NA|                               NA|                   1|          2018|January       |Mon           |
|2018-01-01      |04:00:00:am    |Solo daños         |Choque          |AV CIRCUNVALAR CR 9G   |                               NA|                               NA|                   1|          2018|January       |Mon           |
|2018-01-01      |04:30:00:am    |Solo daños         |Choque          |CLLE 72 CRA 29         |                               NA|                               NA|                   1|          2018|January       |Mon           |
|2018-01-01      |05:20:00:pm    |Solo daños         |Choque          |VIA 40 CALLE 75        |                               NA|                               NA|                   1|          2018|January       |Mon           |
|2018-01-01      |06:00:00:pm    |Con heridos        |Choque          |CR 8 CL 41             |                                3|                               NA|                   1|          2018|January       |Mon           |
|2018-01-01      |12:50:00:am    |Con heridos        |Atropello       |CLLE 119B CRA 11B      |                                1|                               NA|                   1|          2018|January       |Mon           |
|2018-01-02      |02:30:00:pm    |Solo daños         |Choque          |CARRERA 25 37-42       |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |03:00:00:pm    |Solo daños         |Choque          |CR 51B 1D 35           |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |03:45:00:pm    |Solo daños         |Choque          |VIA 40  CLLE 85        |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |04:10:00:pm    |Solo daños         |Choque          |CL 19 CR 2C            |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |05:30:00:pm    |Solo daños         |Choque          |VIA 40 CL 77B          |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |05:45:00:pm    |Solo daños         |Choque          |CL 89 CON 75B          |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |07:00:00:pm    |Solo daños         |Choque          |CL 47 CR 38            |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |07:30:00:pm    |Solo daños         |Choque          |CLLE 96 CRA 64         |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |08:40:00:pm    |Con heridos        |Choque          |CIRCUNVALAR CR 9G      |                                2|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |09:00:00:am    |Solo daños         |Choque          |CLLE 39 CRA 27         |                               NA|                               NA|                   1|          2018|January       |Tue           |
|2018-01-02      |11:00:00:pm    |Con heridos        |Choque          |CL 30 CR 30            |                                1|                               NA|                   1|          2018|January       |Tue           |
|2018-01-03      |02:20:00:pm    |Solo daños         |Choque          |CL 110 CR 6Q           |                               NA|                               NA|                   1|          2018|January       |Wed           |
|2018-01-03      |03:15:00:pm    |Solo daños         |Choque          |CL 19 CR 5C            |                               NA|                               NA|                   1|          2018|January       |Wed           |

Gracias a las librerías “knitr” y “tibble”, se crea una tabla que contiene las variables utilizadas :

library(knitr)
library(tibble)
variables<-as.data.frame(enframe(names(AccidentesDB), name = NULL, value = "Variables"))
kable(variables)
Variables
FECHA_ACCIDENTE
HORA_ACCIDENTE
GRAVEDAD_ACCIDENTE
CLASE_ACCIDENTE
SITIO_EXACTO_ACCIDENTE
CANT_HERIDOS_EN _SITIO_ACCIDENTE
CANT_MUERTOS_EN _SITIO_ACCIDENTE
CANTIDAD_ACCIDENTES
AÑO_ACCIDENTE
MES_ACCIDENTE
DIA_ACCIDENTE

A continuación, se explicará en qué consisten y a qué tipo pertenecen cada una de ellas:

1.) FECHA_ACCIDENTE: Registra la fecha en la que ocurrió el accidente. Esta variable es de tipo categórico, pues se usa para clasificar datos en categorías temporales, como años, meses o días, y no se analiza directamente como un número, que sería propio de una variable numérica.

2.) HORA_ACCIDENTE: Registra la hora exacta en la que sucedió el accidente. Esta variable es de tipo categórico porque al igual que la fecha, esta no se analiza directamente como un número continuo, sino que se usa para clasificar eventos en distintos momentos del día.

3.) GRAVEDAD_ACCIDENTE: Registra la gravedad del accidente. Dependiendo de si este dejó solo daños, heridos o muertos. Esta variable es de tipo categórico, ya que describe la gravedad del accidente, utilizando las categorías mencionadas.

4.) CLASE_ACCIDENTE: Registra la clase de accidente que se produjo. Teniendo en cuenta si este fue un choque, un atropello, un volcamiento, un incendio, entre otros. Esta variable es de tipo categórico, pues clasifica a los accidentes en las múltiples categorías mencionadas.

5.) SITIO_EXACTO_ACCIDENTE: Registra la dirección o lugar exacto en el que sucedió el accidente. Esta variable es de tipo categórico, pues describe la ubicación específica en la que ocurrió el accidente.

6.) CANT_HERIDOS_EN_SITIO_ACCIDENTE: Registra la cantidad de heridos que dejó el accidente., mostrando “NA” en el caso de que no haya heridos. Esta es una variable numérica discreta, ya que cuenta el número de heridos en cada accidente utilizando valores enteros.

7.) CANT_MUERTOS_EN_SITIO_ACCIDENTE: Registra la cantidad de muertos que dejó el accidente, mostrando “NA” en el caso de que no se produjera ninguna muerte. Esta es una variable numérica discreta, porque cuenta el número de muertos en cada accidente utilizando valores enteros.

8.) CANTIDAD_ACCIDENTES: Registra la cantidad de accidentes que ocurrieron en ese lugar y hora. Esta es una variable numérica discreta, pues cuenta el número de accidentes ocurridos en la ciudad de Barranquilla utilizando valores enteros.

9.) AÑO_ACCIDENTE: Registra el año en el que ocurrió el accidente. Esta variable es de tipo categórico, ya que aunque sea un número, esta se puede usar como categoría al representar un año específico.

10.) MES_ACCIDENTE: Registra el mes en el que ocurrió el accidente. Esta variable es de tipo categórico, debido a que se utiliza para representar un mes específico, aunque lo haga a través de un número.

11.) DIA_ACCIDENTE: Registra el día en el que ocurrió el accidente. Esta variable es de tipo categórico, porque aunque lo haga a través de un número, se utiliza para representar un día específico.

Ahora, a través de la librería “dplyr”, se consiguen identificar todos los registros con valores “NA”. En este caso se filtran todos los datos que contienen valores “Not Available” y se genera una tabla utilizando “kable” con las primeras 20 filas de la base de datos.

library(dplyr)
library(knitr)
filter1 <- AccidentesDB %>% filter_all(any_vars(is.na(.)))
knitr::kable(head(filter1, 20), caption = "Datos con valores Not Available")
Datos con valores Not Available
FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN _SITIO_ACCIDENTE CANT_MUERTOS_EN _SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE MES_ACCIDENTE DIA_ACCIDENTE
2018-01-01 01:30:00:am Con heridos Atropello CL 87 9H 24 1 NA 1 2018 January Mon
2018-01-01 02:00:00:pm Solo daños Choque CL 110 CR 46 NA NA 1 2018 January Mon
2018-01-01 04:00:00:am Solo daños Choque AV CIRCUNVALAR CR 9G NA NA 1 2018 January Mon
2018-01-01 04:30:00:am Solo daños Choque CLLE 72 CRA 29 NA NA 1 2018 January Mon
2018-01-01 05:20:00:pm Solo daños Choque VIA 40 CALLE 75 NA NA 1 2018 January Mon
2018-01-01 06:00:00:pm Con heridos Choque CR 8 CL 41 3 NA 1 2018 January Mon
2018-01-01 12:50:00:am Con heridos Atropello CLLE 119B CRA 11B 1 NA 1 2018 January Mon
2018-01-02 02:30:00:pm Solo daños Choque CARRERA 25 37-42 NA NA 1 2018 January Tue
2018-01-02 03:00:00:pm Solo daños Choque CR 51B 1D 35 NA NA 1 2018 January Tue
2018-01-02 03:45:00:pm Solo daños Choque VIA 40 CLLE 85 NA NA 1 2018 January Tue
2018-01-02 04:10:00:pm Solo daños Choque CL 19 CR 2C NA NA 1 2018 January Tue
2018-01-02 05:30:00:pm Solo daños Choque VIA 40 CL 77B NA NA 1 2018 January Tue
2018-01-02 05:45:00:pm Solo daños Choque CL 89 CON 75B NA NA 1 2018 January Tue
2018-01-02 07:00:00:pm Solo daños Choque CL 47 CR 38 NA NA 1 2018 January Tue
2018-01-02 07:30:00:pm Solo daños Choque CLLE 96 CRA 64 NA NA 1 2018 January Tue
2018-01-02 08:40:00:pm Con heridos Choque CIRCUNVALAR CR 9G 2 NA 1 2018 January Tue
2018-01-02 09:00:00:am Solo daños Choque CLLE 39 CRA 27 NA NA 1 2018 January Tue
2018-01-02 11:00:00:pm Con heridos Choque CL 30 CR 30 1 NA 1 2018 January Tue
2018-01-03 02:20:00:pm Solo daños Choque CL 110 CR 6Q NA NA 1 2018 January Wed
2018-01-03 03:15:00:pm Solo daños Choque CL 19 CR 5C NA NA 1 2018 January Wed

Se utilizará la misma técnica para filtrar datos importantes que permitan entender mejor la estructura de la database.

Con el fin de conocer los accidentes de mayor gravedad, entendiéndose por mayor gravedad, como aquellos que dejaron muertos; se aplica un segundo filtro.

library(dplyr)
library(knitr)
filter2 <- AccidentesDB %>% filter(GRAVEDAD_ACCIDENTE == "Con muertos")
knitr::kable(head(filter2, 10), caption = "Primeras 10 filas de accidentes que dejaron muertos")
Primeras 10 filas de accidentes que dejaron muertos
FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN _SITIO_ACCIDENTE CANT_MUERTOS_EN _SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE MES_ACCIDENTE DIA_ACCIDENTE
2018-01-06 12:15:00:pm Con muertos Atropello CALLE 30 CRA 46 1 1 1 2018 January Sat
2018-01-21 10:30:00:pm Con muertos Choque CL 37 ENTRE CR 13 Y 14 ENTRADA MANUELA BELTRAN 1 1 1 2018 January Sun
2018-01-22 01:30:00:pm Con muertos Atropello CR 37 CL 81 NA 1 1 2018 January Mon
2018-01-25 05:20:00:pm Con muertos Choque VIA 40 CR 51 NA 1 1 2018 January Thu
2018-02-04 09:40:00:pm Con muertos Choque CL 45 CR 2E NA 1 1 2018 February Sun
2018-02-10 04:00:00:pm Con muertos Volcamiento CR 47 CL 75 2 1 1 2018 February Sat
2018-02-23 01:10:00:am Con muertos Choque CARRERA 38 CALLE 44 1 1 1 2018 February Fri
2018-03-04 05:10:00:am Con muertos Choque KILOMETRO 113 VIA CORDIALIDAD NA 1 1 2018 March Sun
2018-03-07 05:55:00:am Con muertos Atropello CALLE 31 CARRERA 40 NA 1 1 2018 March Wed
2018-03-22 02:30:00:pm Con muertos Atropello AV CIRCUNVALAR CR 40A1 NA 2 1 2018 March Thu

Para conocer los accidentes que ocurrieron debido a un choque, se aplica un tercer filtro.

library(dplyr)
library(knitr)
filter3 <- AccidentesDB %>% filter(CLASE_ACCIDENTE == "Choque")
knitr::kable(head(filter3, 10), caption = "Primeras 10 filas de accidentes que fueron ocasionados por un choque")
Primeras 10 filas de accidentes que fueron ocasionados por un choque
FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN _SITIO_ACCIDENTE CANT_MUERTOS_EN _SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE MES_ACCIDENTE DIA_ACCIDENTE
2018-01-01 02:00:00:pm Solo daños Choque CL 110 CR 46 NA NA 1 2018 January Mon
2018-01-01 04:00:00:am Solo daños Choque AV CIRCUNVALAR CR 9G NA NA 1 2018 January Mon
2018-01-01 04:30:00:am Solo daños Choque CLLE 72 CRA 29 NA NA 1 2018 January Mon
2018-01-01 05:20:00:pm Solo daños Choque VIA 40 CALLE 75 NA NA 1 2018 January Mon
2018-01-01 06:00:00:pm Con heridos Choque CR 8 CL 41 3 NA 1 2018 January Mon
2018-01-02 02:30:00:pm Solo daños Choque CARRERA 25 37-42 NA NA 1 2018 January Tue
2018-01-02 03:00:00:pm Solo daños Choque CR 51B 1D 35 NA NA 1 2018 January Tue
2018-01-02 03:45:00:pm Solo daños Choque VIA 40 CLLE 85 NA NA 1 2018 January Tue
2018-01-02 04:10:00:pm Solo daños Choque CL 19 CR 2C NA NA 1 2018 January Tue
2018-01-02 05:30:00:pm Solo daños Choque VIA 40 CL 77B NA NA 1 2018 January Tue

Aunque 2020 fue un año de menor tráfico y flujo vehicular, también ocurrieron accidentes, por lo que para ver algunos de ellos, se aplica un cuarto filtro.

library(dplyr)
library(knitr)
filter4 <- AccidentesDB %>% filter(AÑO_ACCIDENTE == 2020)
knitr::kable(head(filter4, 10), caption = "Primeras 10 filas de accidentes que ocurrieron en el año 2020")
Primeras 10 filas de accidentes que ocurrieron en el año 2020
FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN _SITIO_ACCIDENTE CANT_MUERTOS_EN _SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE MES_ACCIDENTE DIA_ACCIDENTE
2020-01-01 05:00:00:pm Solo daños Choque AV CIRCUNVALAR CL 96 NA NA 1 2020 January Wed
2020-01-01 05:30:00:am Solo daños Choque CR 10 CL 10 NA NA 1 2020 January Wed
2020-01-01 05:40:00:pm Solo daños Choque CL 114 CR 42 NA NA 1 2020 January Wed
2020-01-01 08:00:00:pm Con heridos Choque CL 86 CR 9L 1 NA 1 2020 January Wed
2020-01-01 08:10:00:pm Solo daños Choque CL 72 CR 44 25 NA NA 1 2020 January Wed
2020-01-01 09:00:00:pm Solo daños Choque CL 19 CR 2 NA NA 1 2020 January Wed
2020-01-01 09:00:00:pm Solo daños Choque CR 6 89 87 NA NA 1 2020 January Wed
2020-01-01 09:30:00:pm Solo daños Choque CL 72 CR 41 NA NA 1 2020 January Wed
2020-01-01 12:20:00:pm Con heridos Choque CL 30 25 35 1 NA 1 2020 January Wed
2020-01-01 12:30:00:am Con heridos Atropello CL 60B CR 9 1 NA 1 2020 January Wed

También, es posible saber cuántos accidentes ocurrieron a una hora determinada, para ello, se aplica un quinto filtro.

library(dplyr)
library(knitr)
filter5 <- AccidentesDB %>% filter(HORA_ACCIDENTE == "12:30:00:am")
knitr::kable(head(filter5, 10), caption = "Primeras 10 filas de accidentes que ocurrieron a las 12:30 am")
Primeras 10 filas de accidentes que ocurrieron a las 12:30 am
FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN _SITIO_ACCIDENTE CANT_MUERTOS_EN _SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE MES_ACCIDENTE DIA_ACCIDENTE
2018-02-09 12:30:00:am Solo daños Choque CL 84 CR 51B NA NA 1 2018 February Fri
2018-02-10 12:30:00:am Solo daños Choque CR 44 CL 69 NA NA 1 2018 February Sat
2018-03-30 12:30:00:am Solo daños Choque CALLE 68 29-84 NA NA 1 2018 March Fri
2018-04-20 12:30:00:am Solo daños Choque CALLE 99 CRA 53 NA NA 1 2018 April Fri
2018-04-22 12:30:00:am Con heridos Volcamiento CARRERA 42G2 CALLE 99B 2 NA 1 2018 April Sun
2018-06-17 12:30:00:am Solo daños Choque CALLE 100 CARRERA 37 NA NA 1 2018 June Sun
2018-09-22 12:30:00:am Con heridos Choque CR 23 CL 68 1 NA 1 2018 September Sat
2018-10-26 12:30:00:am Con muertos Atropello AV CIRCUNVALAR CON CR 38 NA 1 1 2018 October Fri
2018-11-16 12:30:00:am Con heridos Volcamiento CL 110 CR 55 1 NA 1 2018 November Fri
2018-12-01 12:30:00:am Solo daños Choque CARRERA 47 CALLE 85 NA NA 1 2018 December Sat

Tras haber analizado la base de datos, es posible extraer algunos valores atípicos que se caracterizan por desviarse significativamente del resto de registros. Uno de ellos llamado “Caida Ocupante” se presenta en la variable “CLASE_ACCIDENTE”. Esta categoría es bastante peculiar, y por ende, es diferente a la mayoría de registros pertenecientes a esta variable, como los choques, atropellos y volcamientos. Además, en esta misma categoría, se presenta un segundo dato atípico llamado “Otro” que también difiere notablemente del resto de registros.

Sin embargo, también existen datos atípicos que pertenecen a otras categorías. Por ejemplo, en la variable “CANTIDAD_ACCIDENTES”, un sexto filtro revela que ha habido 5 ocasiones en las que se registraron más de un accidente en el mismo lugar, fecha y hora. Como se evidencia en la siguiente tabla:

library(dplyr)
library(knitr)
filter6 <- AccidentesDB %>% filter(CANTIDAD_ACCIDENTES == "2")
knitr::kable(head(filter6, 10), caption = "Dato atípico - Más de 1 accidente a la vez")
Dato atípico - Más de 1 accidente a la vez
FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN _SITIO_ACCIDENTE CANT_MUERTOS_EN _SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE MES_ACCIDENTE DIA_ACCIDENTE
2018-06-09 09:35:00:am Solo daños Choque CARRERA 38 CALLE 52 NA NA 2 2018 June Sat
2019-12-28 12:28:00:pm Solo daños Choque CR 38 CL 81 NA NA 2 2019 December Sat
2020-02-06 09:00:00:am Solo daños Choque AV CIRCUNVALAR CR 27 NA NA 2 2020 February Thu
2020-05-02 07:40:00:pm Solo daños Choque CR 46 87 27 NA NA 2 2020 May Sat
2020-11-05 05:25:00:pm Solo daños Choque AV 110 CR 35 NA NA 2 2020 November Thu

Este análisis diferencial, permitió obtener los siguientes resultados:

1.) La base de datos utilizada, contiene 25610 registros y 11 variables relacionadas con accidentes de tránsito en la ciudad de Barranquilla.

2.) Tras clasificar las variables según su tipo, se dividen en:

Categóricas: FECHA_ACCIDENTE, HORA_ACCIDENTE, GRAVEDAD_ACCIDENTE, CLASE_ACCIDENTE, SITIO_EXACTO_ACCIDENTE, AÑO_ACCIDENTE, MES_ACCIDENTE, DIA_ACCIDENTE.

Numéricas Discretas: CANT_HERIDOS_EN_SITIO_ACCIDENTE, CANT_MUERTOS_EN_SITIO_ACCIDENTE, CANT_ACCIDENTES.

3.) En esta base de datos existen múltiples valores atípicos, que se presentan en más de una variable y categoria. A su vez se utiliza “NA” para los datos que no están disponibles, ya sea por errores de registro, o porque no aplicaban para el respectivo accidente.