rut<-"C:/Users/ISAAC ROMERO MENDOZA/OneDrive/Documentos/Accidentalidad_en_Barranquilla_20240818.csv"
datos<-read.csv(rut)
En esta actividad, se realizará un análisis descriptivo básico de la base de datos que contiene un registro sobre la tasa de accidentalidad en Barranquilla, proporcionada por el informe policial de accidentes de tránsito (IPAT), que contiene registros de accidentes de tránsito en el distrito de Barranquilla. A través de tablas de resumen y gráficos, se explorarán las principales características y tendencias de los datos, proporcionando una visión general de la accidentalidad en la región. Cabe aclarar que los datos recopilados estan desde el año 2018 hasta junio del presente año 2024.
Para la base de datos se tuvieron en cuenta las siguientes variables
names(datos)
## [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"
“FECHA_ACCIDENTE” y “HORA_ACCIDENTE” son las variables que indican en que fecha y hora se dio el accidente respectivamente.
“GRAVEDAD_ACCIDENTE” indica que tan grave fue el accidente basandose en si solo hubieron daños materiales, en si hubieron heridos o si hubieron decesos.
“CLASE_ACCIDENTE” indica si el accidente se trato de un atropello o de un choque
“SITIO_EXACTO_ACCIDENTE” indica la direccion en la que sucedio el accidente.
“CANT_HERIDOS_EN._SITIO_ACCIDENTE” y “CANT_MUERTOS_EN._SITIO_ACCIDENTE” indican la cantidad de heridos en el caso de que haya habido heridos y en el caso de que haya habido muertos en el accidente.
“CANTIDAD_ACCIDENTES” indica el numero de estos que se llevaron a cabo en un solo suceso
“AÑO_ACCIDENTE”, “MES_ACCIDENTE” y “DIA_ACCIDENTE” indican el año, mes y dia en el que se dio el accidente.
Para su correcto entendimiento y manejo es importante tener en cuenta las caracteristicas de la base de datos, empezando por su dimensión:
dim(datos)
## [1] 25610 11
Esta base de datos es de 25610 filas que indican cada accidente y 11 columnas en las cuales se mencionan las variables anteriormente mencionadas asociadas a cada accidente.
La cabeza muestra las primeras filas dentro de la base de datos, aquellos accidentes que datan desde Enero de 2018, mientras que la cola muestra los accidentes más recientes siendo en Junio de 2024:
head(datos)
## FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE
## 1 2018-01-01T00:00:00.000 01:30:00:am Con heridos Atropello
## 2 2018-01-01T00:00:00.000 02:00:00:pm Solo daños Choque
## 3 2018-01-01T00:00:00.000 04:00:00:am Solo daños Choque
## 4 2018-01-01T00:00:00.000 04:30:00:am Solo daños Choque
## 5 2018-01-01T00:00:00.000 05:20:00:pm Solo daños Choque
## 6 2018-01-01T00:00:00.000 06:00:00:pm Con heridos Choque
## SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN._SITIO_ACCIDENTE
## 1 CL 87 9H 24 1
## 2 CL 110 CR 46 NA
## 3 AV CIRCUNVALAR CR 9G NA
## 4 CLLE 72 CRA 29 NA
## 5 VIA 40 CALLE 75 NA
## 6 CR 8 CL 41 3
## CANT_MUERTOS_EN._SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE
## 1 NA 1 2018
## 2 NA 1 2018
## 3 NA 1 2018
## 4 NA 1 2018
## 5 NA 1 2018
## 6 NA 1 2018
## MES_ACCIDENTE DIA_ACCIDENTE
## 1 January Mon
## 2 January Mon
## 3 January Mon
## 4 January Mon
## 5 January Mon
## 6 January Mon
tail(datos)
## FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE
## 25605 2024-06-29T00:00:00.000 10:00:00:pm Con heridos Choque
## 25606 2024-06-29T00:00:00.000 10:15:00:am Con heridos Choque
## 25607 2024-06-30T00:00:00.000 02:00:00:am Con heridos Choque
## 25608 2024-06-30T00:00:00.000 02:00:00:pm Con heridos Choque
## 25609 2024-06-30T00:00:00.000 05:00:00:pm Con muertos Choque
## 25610 2024-06-30T00:00:00.000 06:30:00:pm Con heridos Atropello
## SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN._SITIO_ACCIDENTE
## 25605 CARRERA 5C CALLE 90 2
## 25606 CARRERA 42G CALLE 90 1
## 25607 CALLE 116 CARRERA 38 1
## 25608 CALLE 56 FRENTE AL # 8E - 48 2
## 25609 CARRERA 43 CON CALLE 41 NA
## 25610 CARRERA 8 CALLE 49 2
## CANT_MUERTOS_EN._SITIO_ACCIDENTE CANTIDAD_ACCIDENTES AÑO_ACCIDENTE
## 25605 NA 1 2024
## 25606 NA 1 2024
## 25607 NA 1 2024
## 25608 NA 1 2024
## 25609 1 1 2024
## 25610 NA 1 2024
## MES_ACCIDENTE DIA_ACCIDENTE
## 25605 June Sat
## 25606 June Sat
## 25607 June Sun
## 25608 June Sun
## 25609 June Sun
## 25610 June Sun
Gracias a la funcion summary( ) que otorga un resumen estadistico se pueden resaltar varios otros datos y caracteristicas de la base de datos, como media, mediana, moda, máximo ,.etc.
summary(datos)
## FECHA_ACCIDENTE HORA_ACCIDENTE GRAVEDAD_ACCIDENTE CLASE_ACCIDENTE
## Length:25610 Length:25610 Length:25610 Length:25610
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## SITIO_EXACTO_ACCIDENTE CANT_HERIDOS_EN._SITIO_ACCIDENTE
## Length:25610 Min. : 1.000
## Class :character 1st Qu.: 1.000
## 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
##
##
##
##
Ahora veremos los tipos de variables, las variables caracterizadas con ‘chr’ indican las variables de tipo categorico, y aquellas nombradas con ‘int’ indican las variables de tipo númerico.
str(datos)
## 'data.frame': 25610 obs. of 11 variables:
## $ FECHA_ACCIDENTE : chr "2018-01-01T00:00:00.000" "2018-01-01T00:00:00.000" "2018-01-01T00:00:00.000" "2018-01-01T00:00:00.000" ...
## $ HORA_ACCIDENTE : chr "01:30:00:am" "02:00:00:pm" "04:00:00:am" "04:30:00:am" ...
## $ GRAVEDAD_ACCIDENTE : chr "Con heridos" "Solo daños" "Solo daños" "Solo daños" ...
## $ CLASE_ACCIDENTE : chr "Atropello" "Choque" "Choque" "Choque" ...
## $ SITIO_EXACTO_ACCIDENTE : chr "CL 87 9H 24" "CL 110 CR 46" "AV CIRCUNVALAR CR 9G" "CLLE 72 CRA 29" ...
## $ CANT_HERIDOS_EN._SITIO_ACCIDENTE: int 1 NA NA NA NA 3 1 NA NA NA ...
## $ CANT_MUERTOS_EN._SITIO_ACCIDENTE: int NA NA NA NA NA NA NA NA NA NA ...
## $ CANTIDAD_ACCIDENTES : int 1 1 1 1 1 1 1 1 1 1 ...
## $ AÑO_ACCIDENTE : int 2018 2018 2018 2018 2018 2018 2018 2018 2018 2018 ...
## $ MES_ACCIDENTE : chr "January" "January" "January" "January" ...
## $ DIA_ACCIDENTE : chr "Mon" "Mon" "Mon" "Mon" ...
Analizar cada una de las variables según su tipo.
Algunas variables pueden ser clasificadas de diversas maneras dependiendo del propósito que se les asigne. Sin embargo, en este caso, se han clasificado teniendo en cuenta que la base de datos se utilizará para mantener un registro de la accidentalidad. Esta clasificación se realizó con el fin de facilitar el análisis y seguimiento de los incidentes de tránsito, asegurando que cada variable se alinee con los objetivos del registro.
VARIABLES CATEGORICAS: fecha, hora de accidente, gravedad del accidente, clase de accidente, sitio exacto, mes del accidente y día del accidente
VARIABLES NUMÉRICAS: cantidad de heridos en el sitio del acciente, cantidad de muertos en el sitio del accidente, cantidad de accidentes y año del accidente.
Todas estas variables fueron explicadas en el primer punto del analisis.
Para el correcto funcionamiento de la funcion filter ( ) se carga la libreria y se reemplazan los valores N/A por 0 para que asi no afecte la funcionalidad. Hecho eso podemos aplicar distintos filtros para encontrar datos mas especificos, como por ejemplo:
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
datos_co <- datos
datos_co$CANT_HERIDOS_EN._SITIO_ACCIDENTE[is.na(datos_co$CANT_HERIDOS_EN._SITIO_ACCIDENTE)] <- 0
datos_co$CANT_MUERTOS_EN._SITIO_ACCIDENTE[is.na(datos_co$CANT_MUERTOS_EN._SITIO_ACCIDENTE)] <- 0
Cantidad de accidentes donde haya habido mas de 3 heridos
heridoS <- filter(datos_co, CANT_HERIDOS_EN._SITIO_ACCIDENTE > 3)
str(heridoS)
## 'data.frame': 303 obs. of 11 variables:
## $ FECHA_ACCIDENTE : chr "2018-01-07T00:00:00.000" "2018-01-11T00:00:00.000" "2018-01-15T00:00:00.000" "2018-01-18T00:00:00.000" ...
## $ HORA_ACCIDENTE : chr "08:30:00:pm" "09:40:00:am" "03:00:00:am" "11:30:00:am" ...
## $ GRAVEDAD_ACCIDENTE : chr "Con heridos" "Con heridos" "Con heridos" "Con heridos" ...
## $ CLASE_ACCIDENTE : chr "Choque" "Choque" "Choque" "Choque" ...
## $ SITIO_EXACTO_ACCIDENTE : chr "CRA 58 CALLE 90" "CR 44 CL 51" "CR 46 CL 64" "CR 6 CL 90" ...
## $ CANT_HERIDOS_EN._SITIO_ACCIDENTE: num 5 7 8 4 4 4 4 4 5 4 ...
## $ CANT_MUERTOS_EN._SITIO_ACCIDENTE: num 0 0 0 0 0 0 0 0 0 0 ...
## $ CANTIDAD_ACCIDENTES : int 1 1 1 1 1 1 1 1 1 1 ...
## $ AÑO_ACCIDENTE : int 2018 2018 2018 2018 2018 2018 2018 2018 2018 2018 ...
## $ MES_ACCIDENTE : chr "January" "January" "January" "January" ...
## $ DIA_ACCIDENTE : chr "Sun" "Thu" "Mon" "Thu" ...
Accidentes durante el año 2022
añoS <- filter(datos_co, AÑO_ACCIDENTE>2021 & AÑO_ACCIDENTE <2023 )
str(añoS)
## 'data.frame': 3683 obs. of 11 variables:
## $ FECHA_ACCIDENTE : chr "2022-01-01T00:00:00.000" "2022-01-01T00:00:00.000" "2022-01-01T00:00:00.000" "2022-01-02T00:00:00.000" ...
## $ HORA_ACCIDENTE : chr "06:30:00:pm" "09:50:00:am" "09:50:00:pm" "03:40:00:am" ...
## $ GRAVEDAD_ACCIDENTE : chr "Solo daños" "Solo daños" "Solo daños" "Solo daños" ...
## $ CLASE_ACCIDENTE : chr "Choque" "Choque" "Choque" "Choque" ...
## $ SITIO_EXACTO_ACCIDENTE : chr "CALLE 45 # 10E-97" "CRA 42 # 79-43" "CALLE 83 CRA 79" "CRA 6B # 35A - 40" ...
## $ CANT_HERIDOS_EN._SITIO_ACCIDENTE: num 0 0 0 0 1 1 1 1 1 1 ...
## $ CANT_MUERTOS_EN._SITIO_ACCIDENTE: num 0 0 0 0 0 0 0 0 0 0 ...
## $ CANTIDAD_ACCIDENTES : int 1 1 1 1 1 1 1 1 1 1 ...
## $ AÑO_ACCIDENTE : int 2022 2022 2022 2022 2022 2022 2022 2022 2022 2022 ...
## $ MES_ACCIDENTE : chr "January" "January" "January" "January" ...
## $ DIA_ACCIDENTE : chr "Sat" "Sat" "Sat" "Sun" ...
Accidentes donde haya muerto más de una persona
muertoS <- filter(datos_co, CANT_MUERTOS_EN._SITIO_ACCIDENTE>1)
str(muertoS)
## 'data.frame': 9 obs. of 11 variables:
## $ FECHA_ACCIDENTE : chr "2018-03-22T00:00:00.000" "2018-08-09T00:00:00.000" "2019-03-16T00:00:00.000" "2019-12-26T00:00:00.000" ...
## $ HORA_ACCIDENTE : chr "02:30:00:pm" "08:15:00:pm" "11:35:00:pm" "02:00:00:am" ...
## $ GRAVEDAD_ACCIDENTE : chr "Con muertos" "Con muertos" "Con muertos" "Con muertos" ...
## $ CLASE_ACCIDENTE : chr "Atropello" "Choque" "Choque" "Choque" ...
## $ SITIO_EXACTO_ACCIDENTE : chr "AV CIRCUNVALAR CR 40A1" "CR 2C CL 96" "CR 15 SUR CL 75 SENTIDO NORTE SUR" "CL 45 CR 32" ...
## $ CANT_HERIDOS_EN._SITIO_ACCIDENTE: num 0 1 2 0 0 2 12 0 1
## $ CANT_MUERTOS_EN._SITIO_ACCIDENTE: num 2 2 2 2 2 2 2 2 2
## $ CANTIDAD_ACCIDENTES : int 1 1 1 1 1 1 1 1 1
## $ AÑO_ACCIDENTE : int 2018 2018 2019 2019 2021 2022 2022 2024 2024
## $ MES_ACCIDENTE : chr "March" "August" "March" "December" ...
## $ DIA_ACCIDENTE : chr "Thu" "Thu" "Sat" "Thu" ...
Accidentes en donde solo haya habido daños materiales
ilesoS <- filter(datos_co, CANT_HERIDOS_EN._SITIO_ACCIDENTE<1 & CANT_MUERTOS_EN._SITIO_ACCIDENTE<1)
str(ilesoS)
## 'data.frame': 15457 obs. of 11 variables:
## $ FECHA_ACCIDENTE : chr "2018-01-01T00:00:00.000" "2018-01-01T00:00:00.000" "2018-01-01T00:00:00.000" "2018-01-01T00:00:00.000" ...
## $ HORA_ACCIDENTE : chr "02:00:00:pm" "04:00:00:am" "04:30:00:am" "05:20:00:pm" ...
## $ GRAVEDAD_ACCIDENTE : chr "Solo daños" "Solo daños" "Solo daños" "Solo daños" ...
## $ CLASE_ACCIDENTE : chr "Choque" "Choque" "Choque" "Choque" ...
## $ SITIO_EXACTO_ACCIDENTE : chr "CL 110 CR 46" "AV CIRCUNVALAR CR 9G" "CLLE 72 CRA 29" "VIA 40 CALLE 75" ...
## $ CANT_HERIDOS_EN._SITIO_ACCIDENTE: num 0 0 0 0 0 0 0 0 0 0 ...
## $ CANT_MUERTOS_EN._SITIO_ACCIDENTE: num 0 0 0 0 0 0 0 0 0 0 ...
## $ CANTIDAD_ACCIDENTES : int 1 1 1 1 1 1 1 1 1 1 ...
## $ AÑO_ACCIDENTE : int 2018 2018 2018 2018 2018 2018 2018 2018 2018 2018 ...
## $ MES_ACCIDENTE : chr "January" "January" "January" "January" ...
## $ DIA_ACCIDENTE : chr "Mon" "Mon" "Mon" "Mon" ...
Accidentes sin muertes en el año 2023
recordS <- filter(datos_co, AÑO_ACCIDENTE==2023 & CANT_MUERTOS_EN._SITIO_ACCIDENTE<1)
str(recordS)
## 'data.frame': 1613 obs. of 11 variables:
## $ FECHA_ACCIDENTE : chr "2023-01-01T00:00:00.000" "2023-01-01T00:00:00.000" "2023-01-02T00:00:00.000" "2023-01-02T00:00:00.000" ...
## $ HORA_ACCIDENTE : chr "07:50:00:am" "11:10:00:am" "02:15:00:am" "07:00:00:pm" ...
## $ GRAVEDAD_ACCIDENTE : chr "Con heridos" "Con heridos" "Con heridos" "Con heridos" ...
## $ CLASE_ACCIDENTE : chr "Choque" "Choque" "Choque" "Atropello" ...
## $ SITIO_EXACTO_ACCIDENTE : chr "CALLE 17 # 7B - 60" "CALLE 76 CARRERA 8" "CALLE 21 CARRERA 23" "CALLE 110 CON CRA 34" ...
## $ CANT_HERIDOS_EN._SITIO_ACCIDENTE: num 1 1 4 2 2 1 1 2 1 2 ...
## $ CANT_MUERTOS_EN._SITIO_ACCIDENTE: num 0 0 0 0 0 0 0 0 0 0 ...
## $ CANTIDAD_ACCIDENTES : int 1 1 1 1 1 1 1 1 1 1 ...
## $ AÑO_ACCIDENTE : int 2023 2023 2023 2023 2023 2023 2023 2023 2023 2023 ...
## $ MES_ACCIDENTE : chr "January" "January" "January" "January" ...
## $ DIA_ACCIDENTE : chr "Sun" "Sun" "Mon" "Mon" ...
Con ayuda de la funcion table() podemos visualizar y analizar la frecuencia y comportamiento de las variables para mejorar el entendimiento de la base de datos, esta se aplica a cada una de las variables:
Gravedad del accidente
table(datos$GRAVEDAD_ACCIDENTE)
##
## Con heridos Con muertos Solo daños
## 9901 252 15457
Clase de accidente
table(datos$CLASE_ACCIDENTE)
##
## Atropello Caida Ocupante Choque Incendio Otro
## 1344 194 23819 13 123
## Volcamiento
## 117
Cantidad de heridos en el sitio del accidente
table(datos$CANT_HERIDOS_EN._SITIO_ACCIDENTE)
##
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
## 6911 2301 469 155 57 29 14 9 6 7 6 7 2 2 1 1
## 18 19 20 21 22 23 42
## 1 1 1 1 1 1 1
Cantidad de muertos en el sitio del accidente
table(datos$CANT_MUERTOS_EN._SITIO_ACCIDENTE)
##
## 1 2
## 243 9
Cantidad de accidentes
table(datos$CANTIDAD_ACCIDENTES)
##
## 1 2
## 25605 5
Año del accidente
table(datos$AÑO_ACCIDENTE)
##
## 2018 2019 2020 2021 2022 2023 2024
## 5898 5645 3281 4700 3683 1662 741
Mes del accidente
table(datos$MES_ACCIDENTE)
##
## April August December February January July June March
## 2010 1918 2189 2477 2349 1932 2103 2446
## May November October September
## 2121 1995 2090 1980
Dia del accidente
table(datos$DIA_ACCIDENTE)
##
## Fri Mon Sat Sun Thu Tue Wed
## 3920 3774 3735 2577 3756 4009 3839
La función table() es aplicable solo a ciertas variables debido a que las demás presentan una amplia variedad de valores con baja frecuencia de ocurrencia. Esto complica la visualización de los datos, haciendo necesario el uso de gráficos complejos, la agrupación en intervalos, o simplemente almacenando la información. Un ejemplo de esto es la variable que identifica el lugar exacto del accidente: cada suceso ocurre en una ubicación distinta, lo que dificulta su análisis sin recurrir a métodos adicionales.
Identifique los valores NA (Not Available) en la base de datos.
La base de datos tiene algunos datos que no aparecen al usar la
función head(), por ejemplo en la variable que mide la cantidad de
muertos en el sitio, esta no mide los datos vacios como una frecuencia,
en este caso no hay frecuencia para los accidentes donde no hay muertos
y se reflejan como NA (Not Available).
Ahora buscaremos los indices de cada columna donde haya datos tipo NA.
Lo haremos tomando la cadena vacia y guardando en un vector los indices
donde hay un NA (esto para cada variable).
PASO 1
Para identificar los datos NA, descartaré cuales variables no tienen datos vacios, en este caso la frecuencia recolectada table será usada para saber si la suma de todas concuerda con la dimensión de la base de datos que es de 25610.
dimension_datos=25610
resumen_fecha=table(datos$FECHA_ACCIDENTE)
total_fecha=sum(resumen_fecha)
total_fecha
## [1] 25610
resumen_hora=table(datos$HORA_ACCIDENTE)
total_hora=sum(resumen_hora)
total_hora
## [1] 25610
resumen_gravedad=table(datos$GRAVEDAD_ACCIDENTE)
total_gravedad=sum(resumen_gravedad)
total_gravedad
## [1] 25610
resumen_clase=table(datos$CLASE_ACCIDENTE)
total_clase=sum(resumen_clase)
total_clase
## [1] 25610
resumen_sitio=table(datos$SITIO_EXACTO_ACCIDENTE)
total_sitio=sum(resumen_sitio)
total_sitio
## [1] 25610
resumen_heridos=table(datos$CANT_HERIDOS_EN._SITIO_ACCIDENTE)
total_heridos=sum(resumen_heridos)
total_heridos
## [1] 9984
Acá se puede apreciar que la suma de las frecuencias en table(datos$CANT_HERIDOS_EN._SITIO_ACCIDENTE) no corresponde a la dimensión de la base de datos, por tanto, hay datos NA vacios que no son contados como tal.
resumen_muertos=table(datos$CANT_MUERTOS_EN._SITIO_ACCIDENTE)
total_muertos=sum(resumen_muertos)
total_muertos
## [1] 252
Acá ocurre lo mismo que en la prueba anterior, casillas vacias.
resumen_cantidad=table(datos$CANTIDAD_ACCIDENTES)
total_cantidad=sum(resumen_cantidad)
total_cantidad
## [1] 25610
resumen_ano=table(datos$AÑO_ACCIDENTE)
total_ano=sum(resumen_ano)
total_ano
## [1] 25610
resumen_mes=table(datos$MES_ACCIDENTE)
total_mes=sum(resumen_mes)
total_mes
## [1] 25610
resumen_dia=table(datos$DIA_ACCIDENTE)
total_dia=sum(resumen_dia)
total_dia
## [1] 25610
Ahora sabemos que las variables que guardan la cantidad de heridos y la cantidad de muertos, son las que tienen datos vacios o no validos, los cuales se clasifican como NA.
PASO 2
Ahora hay que buscar los valores no validos en estas variables y guardar sus indices en vectores para saber la posición de cada espacio en blanco.
indices_NA_heridos=which(is.na(datos$CANT_HERIDOS_EN._SITIO_ACCIDENTE))
length(indices_NA_heridos)
## [1] 15626
Vemos que en el vector “indices_NA_heridos” se encuentran los indices donde hay datos vacios y rectificamos la dimensión de este que es 15626, la sumamos con la suma de frecuencias en el paso 1 de esta variable y nos da 25610 que corresponde a la dimensión de la base de datos.Por tanto, 15626 son los datos NA que se encuentran en esta variable.
indices_NA_muertos=which(is.na(datos$CANT_MUERTOS_EN._SITIO_ACCIDENTE))
length(indices_NA_muertos)
## [1] 25358
Haciendo lo mismo con la variable de cantidad de heridos, vemos que 25358 son los datos NA que aparecen en esta variable.
Además, según lo analizado en el punto 5 y 6, se puede inferir que en las variables FECHA_ACCIDENTE, HORA_ACCIDENTE y SITIO_EXACTO_ACCIDENTE, es donde puede haber valores mal registrados porque en el punto 5 usamos la funcion table() y se puede apreciar que los datos están clasificados de manera correcta porque al sumar esas frecuencias en el punto 6 vemos que concuerdan con la dimensión de la base de dato, por lo tanto, los valores guardados allí no tienen errores de escritura, aunque algunos son valores NA pero ya fueron estudiados y su error es que en lugar de 0 se registraba vacío. De esta manera, las variables mencionadas anteriormente no pueden ser descartadas de tener valores mal registrados porque no pueden ser analizadas con la funcion table() y en la variable se tendría que validar uno a uno cada dato, por tanto, hay cierta incertidumbre con estas variables; por ejemplo, si una dirección está mal registrada o si la hora al ser leída fue con el horario militar.
Los valores atipicos solo pueden ser visualizados en variables numericas, por eso se usaran las variables de heridos, muertos y accidentes para asi construir un diagrama de cajas y bigotes, el cual por su diseño nos puede mostrar donde se encuentran los valores atipicos de las variables:
par(mfrow=c(1,3))
boxplot(datos$CANT_HERIDOS_EN._SITIO_ACCIDENTE,main="BALANCE HERIDOS")
boxplot(datos$CANT_MUERTOS_EN._SITIO_ACCIDENTE,main="BALANCE MUERTOS")
boxplot(datos$CANTIDAD_ACCIDENTES,main="ACCIDENTES")
Se puede observar que la variable Heridos, tiene gran cantidad de valores atipicos, ya que la mayoria de datos se concentran en una zona entre 0 y 3, pero varias veces se dispara a valores por encima de 10.
Con la variable Muertos se puede apreciar una menor cantidad de valores atipicos, aunque su valor atipico mas notorio es bastante alto.
La variable de accidentes se mantiene consistente la mayoria del tiempo.