Se ha obtenido un conjunto de datos sobre accidentes de tráfico en España procedentes de la Dirección General de Tráfico (DGT).
El conjunto de datos original contiene información relativa a accidentes con víctimas (heridos y víctimas mortales), incluyendo variables como la fecha del accidente, el número de víctimas o el tipo de vía.
Sin embargo, el dataset presenta limitaciones importantes para su explotación en análisis espacial, ya que carece de coordenadas geográficas precisas y contiene datos dificiles de entender.
ℹ Google's Terms of Service: <https://mapsplatform.google.com>
Stadia Maps' Terms of Service: <https://stadiamaps.com/terms-of-service>
OpenStreetMap's Tile Usage Policy: <https://operations.osmfoundation.org/policies/tiles>
ℹ Please cite ggmap if you use it! Use `citation("ggmap")` for details.
Adjuntando el paquete: 'ggmap'
The following object is masked from 'package:tidygeocoder':
geocode
# Se cargan los datos descargados de la DGTdf<-"https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/dgt-en-cifras/publicaciones/Ficheros_microdatos_de_accidentalidad_con_victimas/TABLA_ACCIDENTES_24.XLSX"acc<-import(df)
Descripción
Tras una exploración inicial del conjunto de datos, se detectan varios problemas:
Ausencia de coordenadas geográficas (latitud y longitud), lo que impide su representación directa en mapas.
Formatos de fecha heterogéneos y no estandarizados.
Gran presencia de valores nulos o incompletos en diferentes variables.
Falta de variables temporales derivadas que permitan un análisis más detallado (día de la semana, franja horaria, etc.).
Estas limitaciones reducen significativamente el valor analítico del dataset original y pueden complicar su estudio.
Tratamiento
Con el objetivo de mejorar la calidad y utilidad del conjunto de datos, se han llevado a cabo diversas transformaciones, agrupadas en cuatro bloques principales:
Filtrado y Limpieza de Datos
Primero, filtramos los datos para obtener únicamente los accidentes de coche con víctimas mortales transcurridos 30 días desde el accidente. Escogiendo estos 30 días, añadimos las personas que no han muerto en el momento del accidente, pero sí días después a causa de este.
Se eliminan las filas con datos faltantes en la provincia, año, mes o día de la semana para evitar errores en su análisis. Además se crea una variable fecha bien estandarizada.
acc_mortales<-acc_mortales%>%drop_na(provincia_nombre, ANYO, MES, DIA_SEMANA)acc_mortales<-acc_mortales%>%mutate( fecha =make_date(ANYO, MES), año =ANYO)
Tras esto, se crean dos nuevas variables, la primera para diferenciar si los accidentes tuvieron lugar entre semana o en fin de semana y la segunda para saber en qué etapa del día se produjeron los accidentes, por la mañana, por la tarde o por la noche:
acc_mortales<-acc_mortales%>%mutate( tipo_dia =ifelse(dia_semana%in%c("Sábado", "Domingo"),"Fin de semana", "Laboral"), franja_horaria =case_when(HORA>=0&HORA<6~"Noche",HORA>=6&HORA<13~"Mañana",HORA>=13&HORA<20~"Tarde",HORA>=20&HORA<24~"Noche",))
Tras esto se crea una dirección para poder estudiarlo, eliminando todos los NA que se encuentren. Además se eliminan las variables innecesarias.
SIN EMBARGO, PARA REALIZAR GEOCODING, NECESITAMOS EL NOMBRE DE LOS MUNICIPIOS.
Para esto obtenemos un dataframe de la INE donde aparecen el código de esos municipios y sus nombres, saltandonos la primera línea ya que contiene información en blanco.
Con esto, corregimos los datos para que aparezcan en el mismo formato que la DGT.
municipios<-municipios%>%mutate( COD_MUNICIPIO =as.numeric(CMUN), COD_PROV =as.numeric(CPRO), COD_MUN_COMPLETO =paste0(COD_PROV,sprintf("%03d", COD_MUNICIPIO)))municipios<-municipios%>%mutate(COD_MUNICIPIO =str_pad(COD_MUN_COMPLETO, width =5, side ="left", pad ="0"))
Se unen estos datos a nuestro dataframe para unir el código del municipio a su nombre. Además eliminamos NA para evitar errores y limpiamos datos innecesarios/duplicados.
Finalmente se crea la dirección completa.
acc_geo_bien_2<-acc_geo_bien%>%left_join(municipios, by ="COD_MUNICIPIO")# Eliminar NAacc_geo_bien_2<-acc_geo_bien_2%>%filter(!is.na(NOMBRE))## Y LIMPIAMOS DATOS INNECESARIOSacc_geo_bien2<-acc_geo_bien_2%>%select(-c(19,20,21,22,24,25))#### SE CREA DIRECCION COMPLETAacc_geo_bien2<-acc_geo_bien2%>%mutate( direccion =paste(NOMBRE, provincia_nombre, "Spain"), direccion =as.character(direccion))
Tras esto, se geocodifica para poder obtener buenos resultados:
acc_final<-acc_geo_bien2%>%tidygeocoder::geocode( address =direccion, method ="osm", lat =lat, long =lon)
Tras geocodificar, podemos ver los resultados en forma de gráficas.
Primero una gráfica con todos los accidentes situados geográficamente en España y datos importantes sobre ellos como el dia de la semana, número de muestros, etc.:
Con esto, obtenemos unos datos mejorados sobre los accidentes de tráfico con accidentes mortales en España en el año 2024. El dataset final incluye:
Coordenadas geográficas (latitud y longitud)
Variables temporales bien estandarizadas
Datos limpios y consistentes
Este nuevo conjunto de datos permite, como hemos visto, su visualización en mapas, análisis de patrones espaciales de accidentes mortales y estudio de su evolución temporal.
El/los fichero(s) generados con este procedimiento/técnica/metodología se puede(n) descargar de aquí.
Proyecto de Innovación Educativa Emergente (PIEE-3898312)