Punto 1: Importar la base de datos
data <- read_csv("Accidentes_Barranquilla.csv")
## Rows: 25610 Columns: 11
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (6): HORA_ACCIDENTE, GRAVEDAD_ACCIDENTE, CLASE_ACCIDENTE, SITIO_EXACTO_...
## dbl (4): CANT_HERIDOS_EN _SITIO_ACCIDENTE, CANT_MUERTOS_EN _SITIO_ACCIDENTE...
## dttm (1): FECHA_ACCIDENTE
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Punto 2: Análisis de las caracterÃsticas de la base de datos
summary(data) # Resumen general de la base de datos
## FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE
## Min. :2018-01-01 00:00:00.00 Length:25610 Length:25610
## 1st Qu.:2019-02-02 00:00:00.00 Class :character Class :character
## Median :2020-04-23 12:00:00.00 Mode :character Mode :character
## Mean :2020-07-31 19:57:36.05
## 3rd Qu.:2021-12-13 00:00:00.00
## Max. :2024-06-30 00:00:00.00
##
## CLASE_ACCIDENTE SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN _SITIO_ACCIDENTE
## Length:25610 Length:25610 Min. : 1.000
## Class :character Class :character 1st Qu.: 1.000
## Mode :character Mode :character Median : 1.000
## Mean : 1.472
## 3rd Qu.: 2.000
## Max. :42.000
## NA's :15626
## CANT_MUERTOS_EN _SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE
## Min. :1.000 Min. :1 Min. :2018
## 1st Qu.:1.000 1st Qu.:1 1st Qu.:2019
## Median :1.000 Median :1 Median :2020
## Mean :1.036 Mean :1 Mean :2020
## 3rd Qu.:1.000 3rd Qu.:1 3rd Qu.:2021
## Max. :2.000 Max. :2 Max. :2024
## NA's :25358
## MES_ACCIDENTE DIA_ACCIDENTE
## Length:25610 Length:25610
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
str(data) # Estructura de la base de datos (tipos de datos)
## spc_tbl_ [25,610 × 11] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ FECHA_ACCIDENTE : POSIXct[1:25610], format: "2018-01-01" "2018-01-01" ...
## $ HORA_ACCIDENTE : chr [1:25610] "01:30:00:am" "02:00:00:pm" "04:00:00:am" "04:30:00:am" ...
## $ GRAVEDAD_ACCIDENTE : chr [1:25610] "Con heridos" "Solo daños" "Solo daños" "Solo daños" ...
## $ CLASE_ACCIDENTE : chr [1:25610] "Atropello" "Choque" "Choque" "Choque" ...
## $ SITIO_EXACTO_ACCIDENTE : chr [1:25610] "CL 87 9H 24" "CL 110 CR 46" "AV CIRCUNVALAR CR 9G" "CLLE 72 CRA 29" ...
## $ CANT_HERIDOS_EN _SITIO_ACCIDENTE: num [1:25610] 1 NA NA NA NA 3 1 NA NA NA ...
## $ CANT_MUERTOS_EN _SITIO_ACCIDENTE: num [1:25610] NA NA NA NA NA NA NA NA NA NA ...
## $ CANTIDAD_ACCIDENTES : num [1:25610] 1 1 1 1 1 1 1 1 1 1 ...
## $ AÑO_ACCIDENTE : num [1:25610] 2018 2018 2018 2018 2018 ...
## $ MES_ACCIDENTE : chr [1:25610] "January" "January" "January" "January" ...
## $ DIA_ACCIDENTE : chr [1:25610] "Mon" "Mon" "Mon" "Mon" ...
## - attr(*, "spec")=
## .. cols(
## .. FECHA_ACCIDENTE = col_datetime(format = ""),
## .. HORA_ACCIDENTE = col_character(),
## .. GRAVEDAD_ACCIDENTE = col_character(),
## .. CLASE_ACCIDENTE = col_character(),
## .. SITIO_EXACTO_ACCIDENTE = col_character(),
## .. `CANT_HERIDOS_EN _SITIO_ACCIDENTE` = col_double(),
## .. `CANT_MUERTOS_EN _SITIO_ACCIDENTE` = col_double(),
## .. CANTIDAD_ACCIDENTES = col_double(),
## .. AÑO_ACCIDENTE = col_double(),
## .. MES_ACCIDENTE = col_character(),
## .. DIA_ACCIDENTE = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
dim(data) # Dimensiones de la base (número de filas y columnas)
## [1] 25610 11
names(data) # Nombres de las variables
## [1] "FECHA_ACCIDENTE" "HORA_ACCIDENTE"
## [3] "GRAVEDAD_ACCIDENTE" "CLASE_ACCIDENTE"
## [5] "SITIO_EXACTO_ACCIDENTE" "CANT_HERIDOS_EN _SITIO_ACCIDENTE"
## [7] "CANT_MUERTOS_EN _SITIO_ACCIDENTE" "CANTIDAD_ACCIDENTES"
## [9] "AÑO_ACCIDENTE" "MES_ACCIDENTE"
## [11] "DIA_ACCIDENTE"
Punto 3: Análisis de variables según su tipo: numéricas y
categóricas
numeric_vars <- data %>% select_if(is.numeric)
categorical_vars <- data %>% select_if(is.character)
summary(numeric_vars) # Resumen de variables numéricas
## CANT_HERIDOS_EN _SITIO_ACCIDENTE CANT_MUERTOS_EN _SITIO_ACCIDENTE
## Min. : 1.000 Min. :1.000
## 1st Qu.: 1.000 1st Qu.:1.000
## Median : 1.000 Median :1.000
## Mean : 1.472 Mean :1.036
## 3rd Qu.: 2.000 3rd Qu.:1.000
## Max. :42.000 Max. :2.000
## NA's :15626 NA's :25358
## CANTIDAD_ACCIDENTES AÑO_ACCIDENTE
## Min. :1 Min. :2018
## 1st Qu.:1 1st Qu.:2019
## Median :1 Median :2020
## Mean :1 Mean :2020
## 3rd Qu.:1 3rd Qu.:2021
## Max. :2 Max. :2024
##
summary(categorical_vars) # Resumen de variables categóricas
## HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE
## Length:25610 Length:25610 Length:25610
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
## SITIO_EXACTO_ACCIDENTE MES_ACCIDENTE DIA_ACCIDENTE
## Length:25610 Length:25610 Length:25610
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
Punto 4: Aplicar filtros
accidentes_graves <- filter(data, GRAVEDAD_ACCIDENTE == "Grave")
accidentes_julio <- filter(data, MES_ACCIDENTE == 7)
accidentes_con_heridos <- filter(data, `CANT_HERIDOS_EN _SITIO_ACCIDENTE` > 0)
accidentes_con_muertos <- filter(data, `CANT_MUERTOS_EN _SITIO_ACCIDENTE` > 0)
accidentes_2023 <- filter(data, AÑO_ACCIDENTE == 2023)
Punto 5: Exploración de la función table
table(data$GRAVEDAD_ACCIDENTE) # Frecuencia de gravedad de accidentes
##
## Con heridos Con muertos Solo daños
## 9901 252 15457
table(data$CLASE_ACCIDENTE) # Frecuencia de clases de accidentes
##
## Atropello Caida Ocupante Choque Incendio Otro
## 1344 194 23819 13 123
## Volcamiento
## 117
Punto 6: Identificación de valores NA
na_counts <- colSums(is.na(data)) # Número de valores NA por columna
na_counts
## FECHA_ACCIDENTE HORA_ACCIDENTE
## 0 0
## GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE
## 0 0
## SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN _SITIO_ACCIDENTE
## 0 15626
## CANT_MUERTOS_EN _SITIO_ACCIDENTE CANTIDAD_ACCIDENTES
## 25358 0
## AÑO_ACCIDENTE MES_ACCIDENTE
## 0 0
## DIA_ACCIDENTE
## 0
Punto 7: Análisis de valores atÃpicos usando boxplots
boxplot(data$`CANT_HERIDOS_EN _SITIO_ACCIDENTE`, main = "Boxplot de heridos en accidente")

boxplot(data$`CANT_MUERTOS_EN _SITIO_ACCIDENTE`, main = "Boxplot de muertos en accidente")

Punto 9.1: Visualización de valores atÃpicos con boxplots
boxplot(data$`CANT_HERIDOS_EN _SITIO_ACCIDENTE`, main = "Heridos - Identificación de atÃpicos")

Punto 9.2: Gráficos de barras y histogramas
# Gráficos de barras
ggplot(data, aes(GRAVEDAD_ACCIDENTE)) + geom_bar() + ggtitle("Frecuencia de Gravedad de Accidentes")

ggplot(data, aes(CLASE_ACCIDENTE)) + geom_bar() + ggtitle("Frecuencia de Clases de Accidentes")

# Histogramas
ggplot(data, aes(`CANT_HERIDOS_EN _SITIO_ACCIDENTE`)) + geom_histogram(bins=20) + ggtitle("Histograma de Cantidad de Heridos en el Sitio del Accidente")
## Warning: Removed 15626 rows containing non-finite outside the scale range
## (`stat_bin()`).

ggplot(data, aes(`CANT_MUERTOS_EN _SITIO_ACCIDENTE`)) + geom_histogram(bins=20) + ggtitle("Histograma de Cantidad de Muertos en el Sitio del Accidente")
## Warning: Removed 25358 rows containing non-finite outside the scale range
## (`stat_bin()`).
