Estudio provocado por la carta de la DGT de 2013 informando a propietarios de coches con > 10 años antiguedad
¿Reciente estudio? ¿De quién? ¿Dónde está?
Hay varios, que oscilan entre lo ¿burdo?
Y otro que publica este resultado ¿parcial?
Y de ahí que:
Preguntamos por datos accidentalidad en España y DGT fue muy amable por twitter señalar la siguiente dirección web para microdatos, aunque ¡ojo! en el último momento en que he consultado esta web sólo dispone de datos hasta 2013.
Es interesante señalar que disponemos también de informes predefinidos, básicamente tablas que cruzan variables importantes de clasificación. (Y después de contestar a un captcha…)
accid <- read.table("TABLA_ACCVICT_2013.csv",
header = T,
sep = ";",
colClasses = c(rep("character", 2),
"integer",
"character",
rep("character", 4),
"character", # para tener los cod "0xxxx"
rep("numeric", 9),
rep("factor", 18)),
quote = "")
dim(accid)
## [1] 89519 36
head(accid)
## ID_ACCIDENTE ANIO MES HORA_ACCIDENTE COD_DIASEMANA COD_PROVINCIA
## 1 2013480000644 2013 8 14:00 3 48
## 2 2013480000481 2013 6 18:00 6 48
## 3 2013430023557 2013 11 17:00 2 43
## 4 2013250020735 2013 1 09:00 3 25
## 5 2013080016057 2013 11 22:00 7 8
## 6 2013430023450 2013 10 17:00 3 43
## COMUNIDAD_AUTONOMA ISLA MUNICIPIO TOTALVICTIMAS TOT_VICTIMAS30D MUERTOS
## 1 17 3 3 0
## 2 17 1 1 0
## 3 9 2 2 0
## 4 9 2 2 0
## 5 9 2 2 0
## 6 9 1 1 1
## TOTAL_MU30D HERIDOSGRAVES TOTAL_HG30D HERIDOSLEVES TOTAL_HL30D
## 1 0.054104 3 2.945896 0 0
## 2 0.000000 0 0.000000 1 1
## 3 0.000000 0 0.000000 2 2
## 4 0.000000 0 0.000000 2 2
## 5 0.000000 0 0.000000 2 2
## 6 1.000000 0 0.000000 0 0
## VEHICULOSIMPLICADOS COD_ZONA ZONA_AGRUPADA CARRETERA COD_RED COD_CALZADA
## 1 2 1 1 N-634 3 9
## 2 3 1 1 ASM-3 5 9
## 3 2 1 1 TP-2125 4 5
## 4 3 4 1 C-13 1 5
## 5 2 1 1 C-234 4 5
## 6 1 4 1 A-7 1 2
## TRAZADO_NO_INTERSEC COD_TIPOINTERSECCION ACOND_CALZADA COD_PRIORIDAD
## 1 2 0 8
## 2 4 1 2
## 3 1 0 3
## 4 1 0 0
## 5 1 0 0
## 6 1 0 0
## COD_SUPERFICIECALZADA COD_LUMINOSIDAD COD_FACTORESATMOSFERICOS
## 1 3 1 5
## 2 3 1 4
## 3 1 1 1
## 4 3 1 4
## 5 3 3 5
## 6 1 1 1
## VISIBILIDAD_RESTRINGIDA OTRA_CIRCUNSTANCIA IND_ACERAS COD_TIPOACCIDENTE
## 1 4 13 N 11
## 2 7 14 N 14
## 3 0 14 N 12
## 4 0 14 N 15
## 5 0 14 N 12
## 6 8 4 N 57
## DENSIDAD_CIRCULACION COD_MEDIDASESPECIALES
## 1 1 4
## 2 2 4
## 3 0 0
## 4 0 4
## 5 0 0
## 6 1 4
summary(accid)
## ID_ACCIDENTE ANIO MES HORA_ACCIDENTE
## Length:89519 Length:89519 Min. : 1.000 Length:89519
## Class :character Class :character 1st Qu.: 4.000 Class :character
## Mode :character Mode :character Median : 7.000 Mode :character
## Mean : 6.646
## 3rd Qu.:10.000
## Max. :12.000
##
## COD_DIASEMANA COD_PROVINCIA COMUNIDAD_AUTONOMA
## Length:89519 Length:89519 Length:89519
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## ISLA MUNICIPIO TOTALVICTIMAS TOT_VICTIMAS30D
## Length:89519 Length:89519 Min. : 1.000 Min. : 1.000
## Class :character Class :character 1st Qu.: 1.000 1st Qu.: 1.000
## Mode :character Mode :character Median : 1.000 Median : 1.000
## Mean : 1.412 Mean : 1.412
## 3rd Qu.: 2.000 3rd Qu.: 2.000
## Max. :52.000 Max. :52.000
##
## MUERTOS TOTAL_MU30D HERIDOSGRAVES TOTAL_HG30D
## Min. :0.00000 Min. :0.00000 Min. : 0.0000 Min. :0.0000
## 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.: 0.0000 1st Qu.:0.0000
## Median :0.00000 Median :0.00000 Median : 0.0000 Median :0.0000
## Mean :0.01663 Mean :0.01877 Mean : 0.1147 Mean :0.1127
## 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.: 0.0000 3rd Qu.:0.0000
## Max. :9.00000 Max. :9.00000 Max. :10.0000 Max. :9.8197
##
## HERIDOSLEVES TOTAL_HL30D VEHICULOSIMPLICADOS COD_ZONA
## Min. : 0.000 Min. : 0.000 Min. : 0.000 1:37148
## 1st Qu.: 1.000 1st Qu.: 1.000 1st Qu.: 1.000 2:51455
## Median : 1.000 Median : 1.000 Median : 2.000 3: 767
## Mean : 1.281 Mean : 1.281 Mean : 1.732 4: 149
## 3rd Qu.: 1.000 3rd Qu.: 1.000 3rd Qu.: 2.000
## Max. :47.000 Max. :47.000 Max. :45.000
##
## ZONA_AGRUPADA CARRETERA COD_RED COD_CALZADA
## 1:37297 :51746 1:10490 9 :47938
## 2:52222 A-7 : 769 2:10400 5 :27495
## A-2 : 683 3: 7737 2 : 9371
## N-340 : 674 4:59768 1 : 2463
## AP-7 : 614 5: 1124 6 : 1539
## A-4 : 443 8 : 353
## (Other):34590 (Other): 360
## TRAZADO_NO_INTERSEC COD_TIPOINTERSECCION ACOND_CALZADA COD_PRIORIDAD
## :33978 :55900 0:68514 8 :38600
## 1:42823 1: 9670 1:14749 0 :24426
## 2: 7925 2:13435 2: 480 4 : 5779
## 3: 1152 3: 1286 3: 1074 2 : 5164
## 4: 1344 4: 807 4: 509 3 : 5143
## 5: 2297 5: 6853 5: 269 5 : 4586
## 6: 1568 6: 3924 (Other): 5821
## COD_SUPERFICIECALZADA COD_LUMINOSIDAD COD_FACTORESATMOSFERICOS
## 1 :74297 1:64110 1 :76573
## 3 :12391 2: 3887 4 : 8187
## 9 : 1427 3:13638 9 : 1800
## 2 : 455 4: 3007 5 : 1724
## 7 : 336 5: 4877 8 : 516
## 4 : 226 3 : 211
## (Other): 387 (Other): 508
## VISIBILIDAD_RESTRINGIDA OTRA_CIRCUNSTANCIA IND_ACERAS COD_TIPOACCIDENTE
## 8 :50169 14 :74719 :10013 12 :18094
## 0 :31972 0 :10130 N:62626 14 :16790
## 2 : 2374 13 : 2556 S:16880 33 :10835
## 7 : 2332 4 : 691 13 : 6908
## 4 : 1220 8 : 457 71 : 6399
## 1 : 587 3 : 279 15 : 4827
## (Other): 865 (Other): 687 (Other):25666
## DENSIDAD_CIRCULACION COD_MEDIDASESPECIALES
## 0:32178 0:24857
## 1:52475 1: 24
## 2: 3983 2: 11
## 3: 883 3: 1061
## 4:63566
##
##
barplot(table(accid$MUERTOS))
library(xlsx)
## Loading required package: rJava
## Loading required package: xlsxjars
prov <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "PROVINCIA",
encoding = "UTF-8",
startRow = 3)
comauto <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "COMUNIDAD_AUTONOMA",
encoding = "UTF-8",
startRow = 3)
zona <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "ZONA",
encoding = "UTF-8",
startRow = 3)
zonagrup <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "ZONA_AGRUPADA",
encoding = "UTF-8",
startRow = 3)
carret_titular <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "RED_CARRETERA",
encoding = "UTF-8",
startRow = 3)
tipovia <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "TIPO_VIA",
encoding = "UTF-8",
startRow = 3)
superficie <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "SUPERFICIE_CALZADA",
encoding = "UTF-8",
startRow = 3)
luminosidad <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "LUMINOSIDAD",
encoding = "UTF-8",
startRow = 3)
tiempoatmos <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "FACTORES_ATMOSFERICOS",
encoding = "UTF-8",
startRow = 3)
visibilidad <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "VISIBILIDAD_RESTRINGIDA",
encoding = "UTF-8",
startRow = 3)
otracircunstancia <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "OTRA_CIRCUNSTANCIA",
encoding = "UTF-8",
startRow = 3)
tipoaccidente <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "TIPO_ACCIDENTE",
encoding = "UTF-8",
startRow = 3)
densidad <- read.xlsx(file = "Tabla_accidentes_diccionario_datos_desde_2011.xlsx",
sheetName = "DENSIDAD_CIRCULACION",
encoding = "UTF-8",
startRow = 3)
Las metemos a mano
prioridad <- data.frame(valor = seq(0, 8),
etiqueta = c("SIN DATO",
"AGENTE",
"SEMÁFORO",
"STOP",
"CEDA EL PASO",
"SOLO MARCAS VIALES",
"PASO PARA PEATONES",
"OTRA SEÑAL",
"NINGUNA"))
acond_calzada <- data.frame(valor = seq(0, 6),
etiqueta = c("SIN DATO",
"NADA ESPECIAL",
"SÓLO ISLETAS O PASO PARA PEATONES",
"PASO PARA PEATONES O ISLETAS EN CENTRO DE VÍA PRINCIPAL",
"CARRIL CENTRAL DE ESPERA",
"RAQUETA DE GIRO IZQUIERDA",
"OTRO TIPO"))
tipo_interseccion <- data.frame(valor = seq(1, 6),
etiqueta = c("EN T Ó Y",
"EN X Ó +",
"ENLACE DE ENTRADA",
"ENLACE DE SALIDA",
"GIRATORIA",
"OTROS"))
trazado <- data.frame(valor = seq(1, 5),
etiqueta = c("RECTA",
"CURVA SUAVE",
"CURVA FUERTE SIN SEÑALIZAR",
"CURVA FUERTE CON SEÑAL Y SIN VELOCIDAD SEÑALIZADA",
"CURVA FUERTE CON SEÑAL Y VELOCIDAD SEÑALIZADA"))
zonagrup$zonagrup <- as.numeric(zonagrup$Valor == 1)
zonagrup$zonagrup[zonagrup$zonagrup == 0] <- "urbana"
zonagrup$zonagrup[zonagrup$zonagrup == 1] <- "interurb"
zonagrup$zonagrup <- as.factor(zonagrup$zonagrup)
accidentes <- merge(accid,
zonagrup[, c(1, 3)],
by.x = "ZONA_AGRUPADA",
by.y = "Valor",
all.x = T,
all.y = F)
prioridad$paro_requerido <- "no"
prioridad$paro_requerido[prioridad$valor > 0] <- "sí"
prioridad$paro_requerido <- as.factor(prioridad$paro_requerido)
accidentes <- merge(accidentes,
prioridad[, c(1, 3)],
by.x = "COD_PRIORIDAD",
by.y = "valor",
all.x = T,
all.y = F)
visibilidad$visibilidad <- as.numeric(visibilidad$Valor > 0)
visibilidad$visibilidad[visibilidad$visibilidad == 0] <- "sin problema"
visibilidad$visibilidad[visibilidad$visibilidad == 1] <- "problemas"
visibilidad$visibilidad <- as.factor(visibilidad$visibilidad)
accidentes <- merge(accidentes,
visibilidad[, c(1, 3)],
by.x = "VISIBILIDAD_RESTRINGIDA",
by.y = "Valor",
all.x = T,
all.y = F)
luminosidad$luminosidad <- as.numeric(luminosidad$Valor > 3)
luminosidad$luminosidad[luminosidad$luminosidad == 0] <- "buena/día"
luminosidad$luminosidad[luminosidad$luminosidad == 1] <- "mala/noche"
luminosidad$luminosidad <- as.factor(luminosidad$luminosidad)
accidentes <- merge(accidentes,
luminosidad[, c(1,3)],
by.x = "COD_LUMINOSIDAD",
by.y = "Valor",
all.x = T,
all.y = F)
names(tiempoatmos)[2] <- "cond_atmosfericas"
tiempoatmos$cond_atmosfericas <- as.character(tiempoatmos$cond_atmosfericas)
tiempoatmos$cond_atmosfericas[tiempoatmos$cond_atmosfericas %in%
c("BUEN TIEMPO", "OTRO")] <- "bueno"
tiempoatmos$cond_atmosfericas[tiempoatmos$cond_atmosfericas %in%
c("NIEBLA LIGERA")] <- "niebla"
tiempoatmos$cond_atmosfericas[tiempoatmos$cond_atmosfericas %in%
c("LLOVIZNANDO", "VIENTO FUERTE")] <- "lluvia/viento"
tiempoatmos$cond_atmosfericas[tiempoatmos$cond_atmosfericas %in%
c("LLUVIA FUERTE", "NIEBLA INTENSA",
"GRANIZANDO", "NEVANDO")] <- "extremas"
tiempoatmos$cond_atmosfericas <- as.factor(tiempoatmos$cond_atmosfericas)
accidentes <- merge(accidentes,
tiempoatmos,
by.x = "COD_FACTORESATMOSFERICOS",
by.y = "Valor",
all.x = T,
all.y = F)
densidad$densidad <- as.numeric(densidad$Valor == 1)
densidad$densidad[densidad$densidad == 0] <- "otra"
densidad$densidad[densidad$densidad == 1] <- "fluida"
densidad$densidad <- as.factor(densidad$densidad)
accidentes <- merge(accidentes,
densidad,
by.x = "DENSIDAD_CIRCULACION",
by.y = "Valor",
all.x = T,
all.y = F)
names(tipoaccidente)[2] <- "tipoaccidente"
accidentes <- merge(accidentes,
tipoaccidente,
by.x = "COD_TIPOACCIDENTE",
by.y = "Valor",
all.x = T,
all.y = F)
library(stringr)
## Warning: package 'stringr' was built under R version 3.2.3
accidentes$tipogrupo <- word(accidentes$tipoaccidente)
accidentes$tipogrupo <- as.factor(accidentes$tipogrupo)
table(accidentes$tipogrupo)
##
## Atropello Colisión Otro Salida Vuelco
## 11603 51795 6399 16388 3334
summary(accidentes)
## COD_TIPOACCIDENTE DENSIDAD_CIRCULACION COD_FACTORESATMOSFERICOS
## 12 :18094 0:32178 1 :76573
## 14 :16790 1:52475 4 : 8187
## 33 :10835 2: 3983 9 : 1800
## 13 : 6908 3: 883 5 : 1724
## 71 : 6399 8 : 516
## 15 : 4827 3 : 211
## (Other):25666 (Other): 508
## COD_LUMINOSIDAD VISIBILIDAD_RESTRINGIDA COD_PRIORIDAD ZONA_AGRUPADA
## 1:64110 8 :50169 8 :38600 1:37297
## 2: 3887 0 :31972 0 :24426 2:52222
## 3:13638 2 : 2374 4 : 5779
## 4: 3007 7 : 2332 2 : 5164
## 5: 4877 4 : 1220 3 : 5143
## 1 : 587 5 : 4586
## (Other): 865 (Other): 5821
## ID_ACCIDENTE ANIO MES HORA_ACCIDENTE
## Length:89519 Length:89519 Min. : 1.000 Length:89519
## Class :character Class :character 1st Qu.: 4.000 Class :character
## Mode :character Mode :character Median : 7.000 Mode :character
## Mean : 6.646
## 3rd Qu.:10.000
## Max. :12.000
##
## COD_DIASEMANA COD_PROVINCIA COMUNIDAD_AUTONOMA
## Length:89519 Length:89519 Length:89519
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## ISLA MUNICIPIO TOTALVICTIMAS TOT_VICTIMAS30D
## Length:89519 Length:89519 Min. : 1.000 Min. : 1.000
## Class :character Class :character 1st Qu.: 1.000 1st Qu.: 1.000
## Mode :character Mode :character Median : 1.000 Median : 1.000
## Mean : 1.412 Mean : 1.412
## 3rd Qu.: 2.000 3rd Qu.: 2.000
## Max. :52.000 Max. :52.000
##
## MUERTOS TOTAL_MU30D HERIDOSGRAVES TOTAL_HG30D
## Min. :0.00000 Min. :0.00000 Min. : 0.0000 Min. :0.0000
## 1st Qu.:0.00000 1st Qu.:0.00000 1st Qu.: 0.0000 1st Qu.:0.0000
## Median :0.00000 Median :0.00000 Median : 0.0000 Median :0.0000
## Mean :0.01663 Mean :0.01877 Mean : 0.1147 Mean :0.1127
## 3rd Qu.:0.00000 3rd Qu.:0.00000 3rd Qu.: 0.0000 3rd Qu.:0.0000
## Max. :9.00000 Max. :9.00000 Max. :10.0000 Max. :9.8197
##
## HERIDOSLEVES TOTAL_HL30D VEHICULOSIMPLICADOS COD_ZONA
## Min. : 0.000 Min. : 0.000 Min. : 0.000 1:37148
## 1st Qu.: 1.000 1st Qu.: 1.000 1st Qu.: 1.000 2:51455
## Median : 1.000 Median : 1.000 Median : 2.000 3: 767
## Mean : 1.281 Mean : 1.281 Mean : 1.732 4: 149
## 3rd Qu.: 1.000 3rd Qu.: 1.000 3rd Qu.: 2.000
## Max. :47.000 Max. :47.000 Max. :45.000
##
## CARRETERA COD_RED COD_CALZADA TRAZADO_NO_INTERSEC
## :51746 1:10490 9 :47938 :33978
## A-7 : 769 2:10400 5 :27495 1:42823
## A-2 : 683 3: 7737 2 : 9371 2: 7925
## N-340 : 674 4:59768 1 : 2463 3: 1152
## AP-7 : 614 5: 1124 6 : 1539 4: 1344
## A-4 : 443 8 : 353 5: 2297
## (Other):34590 (Other): 360
## COD_TIPOINTERSECCION ACOND_CALZADA COD_SUPERFICIECALZADA
## :55900 0:68514 1 :74297
## 1: 9670 1:14749 3 :12391
## 2:13435 2: 480 9 : 1427
## 3: 1286 3: 1074 2 : 455
## 4: 807 4: 509 7 : 336
## 5: 6853 5: 269 4 : 226
## 6: 1568 6: 3924 (Other): 387
## OTRA_CIRCUNSTANCIA IND_ACERAS COD_MEDIDASESPECIALES zonagrup
## 14 :74719 :10013 0:24857 interurb:37297
## 0 :10130 N:62626 1: 24 urbana :52222
## 13 : 2556 S:16880 2: 11
## 4 : 691 3: 1061
## 8 : 457 4:63566
## 3 : 279
## (Other): 687
## paro_requerido visibilidad luminosidad
## no:24426 problemas :57547 buena/día :81635
## sí:65093 sin problema:31972 mala/noche: 7884
##
##
##
##
##
## cond_atmosfericas Etiqueta densidad
## bueno :78373 CONGESTIONADA: 883 fluida:52475
## extremas : 2232 DENSA : 3983 otra :37044
## lluvia/viento: 8703 FLUIDA :52475
## niebla : 211 SIN DATO :32178
##
##
##
## tipoaccidente
## Colisión de vehículos en marcha (Frontolateral) :18094
## Colisión de vehículos en marcha (Alcance) :16790
## Atropello a peatón aislado o en grupo :10835
## Colisión de vehículos en marcha (Lateral) : 6908
## Otro tipo de accidente : 6399
## Colisión de vehículos en marcha (Múltiple o en caravana): 4827
## (Other) :25666
## tipogrupo
## Atropello:11603
## Colisión :51795
## Otro : 6399
## Salida :16388
## Vuelco : 3334
##
##
Ojo todos los tipos accidentes, todos los vehículos (luego nos centramos solo en turismos)
# Necesitamos código provincia como factor desde "01" hasta "52" (respetando los 0 iniciales)
accidentes$codeprov <- substr(accidentes$MUNICIPIO, 1, 2)
accidentes$codeprov[accidentes$codeprov == ""] <- NA
accidentes$codeprov[accidentes$codeprov == "00"] <- NA
accidentes$codeprov <- droplevels(as.factor(accidentes$codeprov))
t <- table(accidentes$codeprov[accidentes$MUERTOS > 0])
tabla <- as.data.frame(t)
save(tabla, file = "tabla_accid_mortales_por_prov.rda")
Para todos los accidentes, todo tipo de vehículos, hay un factor esencial de riesgo, que son las condiciones de iluminación. En aquellos accidentes que no tienen lugar en intersecciones o regulación de tráfico (p.ej. stop) y que suceden en vías interurbanas, si es de noche con iluminación insuficiente o sin ninguna, el riesgo de tener víctimas mortales se duplica, y es el más alto de todas las situaciones, pasando de 16.4% (día o iluminación suficiente) a un 30.8% (iluminación insuficiente o ninguna). En vías urbanas, en cambio, el riesgo es de un 6% (en situaciones de visibilidad restringida).
Y todavía más, en vías interurbanas, de noche y sin iluminación, la condición atmosférica de niebla intensa hace que casi se quintuplique el riesgo de víctimas mortales frente a las otras condiciones atmosféricas (5% a 23.1%).
En zonas urbanas la influencia de iluminación es también determinante, en condiciones insuficientes o sin iluminación el riesgo pasa de 2 a un 4%.
vehic$ID_ACCIDENTE <- as.character(vehic$ID_ACCIDENTE)
vehic$ID_VEHICULO <- as.factor(vehic$ID_VEHICULO)
vehic$ANIO_MATRICULA_VEHICULO[vehic$ANIO_MATRICULA_VEHICULO > 2015] <- NA
vehic$ANIO_MATRICULA_VEHICULO <- as.factor(vehic$ANIO_MATRICULA_VEHICULO)
vehic$MES_MATRICULA_VEHICULO[vehic$MES_MATRICULA_VEHICULO == 99] <- NA
vehic$MES_MATRICULA_VEHICULO <- as.factor(vehic$MES_MATRICULA_VEHICULO)
vehic$TIPO_VEHICULO <- as.factor(vehic$TIPO_VEHICULO)
vehic$ESTADO_VEHICULO <- as.factor(vehic$ESTADO_VEHICULO)
vehic$NUMERO_OCUPANTES_VEH[vehic$NUMERO_OCUPANTES_VEH == 999] <- NA
summary(vehic)
## ID_ACCIDENTE ID_VEHICULO ANIO_MATRICULA_VEHICULO
## Length:155004 1 :89339 2007 : 8760
## Class :character 2 :54951 2006 : 8609
## Mode :character 3 : 7754 2005 : 7857
## 4 : 1845 2004 : 6969
## 5 : 569 2008 : 6500
## 6 : 206 (Other):61990
## (Other): 340 NA's :54319
## MES_MATRICULA_VEHICULO TIPO_VEHICULO ESTADO_VEHICULO
## 7 : 8425 22 :101505 0 :131978
## 6 : 7779 11 : 20701 11 : 5016
## 5 : 7107 43 : 8093 10 : 991
## 3 : 7083 2 : 7574 1 : 201
## 10 : 6503 1 : 6208 2 : 50
## (Other):41227 41 : 1764 (Other): 84
## NA's :76880 (Other): 9159 NA's : 16684
## NUMERO_OCUPANTES_VEH MERCANCIAS_PELIGROSAS VEHICULO_INCENDIADO
## Min. : 0.000 :68650 : 18413
## 1st Qu.: 1.000 1: 1 N:136507
## Median : 1.000 2: 1 S: 84
## Mean : 1.386 3: 25
## 3rd Qu.: 2.000 4: 36
## Max. :61.000 N:86291
## NA's :18945
## ANIO
## Min. :2013
## 1st Qu.:2013
## Median :2013
## Mean :2013
## 3rd Qu.:2013
## Max. :2013
##
35% de los vehículos no tienen antiguedad
¡Tenemos 3 vehículos de 1900! Y 2 anteriores a la II Guerra Mundial (!). Y 54319 NA’s (!!!!!), nada menos que un 35%.
table(vehic$ANIO_MATRICULA_VEHICULO, exclude = NULL)
##
## 1900 1910 1932 1943 1949 1950 1952 1955 1956 1957 1958 1959
## 3 1 1 1 1 1 1 1 2 1 1 1
## 1961 1962 1963 1964 1965 1966 1968 1969 1970 1971 1972 1973
## 2 1 4 3 2 6 5 5 3 5 6 13
## 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985
## 7 6 9 11 29 27 22 26 33 33 32 57
## 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997
## 97 179 235 366 504 602 863 823 1122 1212 1812 2440
## 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
## 3421 4798 5183 5525 5263 5846 6969 7857 8609 8760 6500 4802
## 2010 2011 2012 2013 <NA>
## 5033 4805 4193 2504 54319
round(table(vehic$ANIO_MATRICULA_VEHICULO, exclude = NULL)/nrow(vehic)*100, digits = 3)
##
## 1900 1910 1932 1943 1949 1950 1952 1955 1956 1957
## 0.002 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001 0.001
## 1958 1959 1961 1962 1963 1964 1965 1966 1968 1969
## 0.001 0.001 0.001 0.001 0.003 0.002 0.001 0.004 0.003 0.003
## 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979
## 0.002 0.003 0.004 0.008 0.005 0.004 0.006 0.007 0.019 0.017
## 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989
## 0.014 0.017 0.021 0.021 0.021 0.037 0.063 0.115 0.152 0.236
## 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999
## 0.325 0.388 0.557 0.531 0.724 0.782 1.169 1.574 2.207 3.095
## 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
## 3.344 3.564 3.395 3.772 4.496 5.069 5.554 5.651 4.193 3.098
## 2010 2011 2012 2013 <NA>
## 3.247 3.100 2.705 1.615 35.044
código 22 son turismos, representan el 65.5% de los datos. Los filtramos porque son el tipo de vehículos en los que nos vamos a concentrar
Mezclamos la información de accidentes con la de vehículos. Tenemos ID_ACCIDENTE e ID_VEHICULO que debemos cruzar con misma ID de accidente pero “VEHICULOSIMPLICADOS” en tabla accidentes…
datos <- merge(accidentes,
turismos,
by.x = c("ID_ACCIDENTE", "VEHICULOSIMPLICADOS"),
by.y = c("ID_ACCIDENTE", "ID_VEHICULO"),
all.x = F,
all.y = T)
dim(accid); dim(turismos); dim(datos)
## [1] 89519 36
## [1] 101505 12
## [1] 101505 56
(Hay 240 accidentes sin vehículo que no se mezclan porque generan todo NA’s)
summary(datos)
## ID_ACCIDENTE VEHICULOSIMPLICADOS COD_TIPOACCIDENTE
## Length:101505 Length:101505 14 :11719
## Class :character Class :character 12 :10504
## Mode :character Mode :character 33 : 7890
## 15 : 3776
## 13 : 3648
## (Other):18267
## NA's :45701
## DENSIDAD_CIRCULACION COD_FACTORESATMOSFERICOS COD_LUMINOSIDAD
## 0 :18506 1 :46457 1 :38741
## 1 :33740 4 : 5888 2 : 2516
## 2 : 2892 5 : 1343 3 : 8597
## 3 : 666 9 : 1233 4 : 2212
## NA's:45701 8 : 319 5 : 3738
## (Other): 564 NA's:45701
## NA's :45701
## VISIBILIDAD_RESTRINGIDA COD_PRIORIDAD ZONA_AGRUPADA ANIO.x
## 8 :32602 8 :24618 1 :25468 Length:101505
## 0 :18349 0 :14244 2 :30336 Class :character
## 2 : 1540 4 : 3632 NA's:45701 Mode :character
## 7 : 1432 3 : 3212
## 4 : 950 2 : 3104
## (Other): 931 (Other): 6994
## NA's :45701 NA's :45701
## MES HORA_ACCIDENTE COD_DIASEMANA COD_PROVINCIA
## Min. : 1.00 Length:101505 Length:101505 Length:101505
## 1st Qu.: 4.00 Class :character Class :character Class :character
## Median : 7.00 Mode :character Mode :character Mode :character
## Mean : 6.63
## 3rd Qu.:10.00
## Max. :12.00
## NA's :45701
## COMUNIDAD_AUTONOMA ISLA MUNICIPIO TOTALVICTIMAS
## Length:101505 Length:101505 Length:101505 Min. : 1.00
## Class :character Class :character Class :character 1st Qu.: 1.00
## Mode :character Mode :character Mode :character Median : 1.00
## Mean : 1.51
## 3rd Qu.: 2.00
## Max. :15.00
## NA's :45701
## TOT_VICTIMAS30D MUERTOS TOTAL_MU30D HERIDOSGRAVES
## Min. : 1.00 Min. :0.00 Min. :0.00 Min. : 0.0
## 1st Qu.: 1.00 1st Qu.:0.00 1st Qu.:0.00 1st Qu.: 0.0
## Median : 1.00 Median :0.00 Median :0.00 Median : 0.0
## Mean : 1.51 Mean :0.01 Mean :0.02 Mean : 0.1
## 3rd Qu.: 2.00 3rd Qu.:0.00 3rd Qu.:0.00 3rd Qu.: 0.0
## Max. :15.00 Max. :4.00 Max. :4.00 Max. :10.0
## NA's :45701 NA's :45701 NA's :45701 NA's :45701
## TOTAL_HG30D HERIDOSLEVES TOTAL_HL30D COD_ZONA
## Min. :0.00 Min. : 0.00 Min. : 0.00 1 :25378
## 1st Qu.:0.00 1st Qu.: 1.00 1st Qu.: 1.00 2 :29866
## Median :0.00 Median : 1.00 Median : 1.00 3 : 470
## Mean :0.10 Mean : 1.39 Mean : 1.39 4 : 90
## 3rd Qu.:0.00 3rd Qu.: 2.00 3rd Qu.: 2.00 NA's:45701
## Max. :9.82 Max. :15.00 Max. :15.00
## NA's :45701 NA's :45701 NA's :45701
## CARRETERA COD_RED COD_CALZADA TRAZADO_NO_INTERSEC
## :30040 1 : 7474 9 :27709 :20265
## A-7 : 525 2 : 7070 5 :18087 1 :27165
## A-2 : 454 3 : 5123 2 : 6824 2 : 5276
## N-340 : 412 4 :35404 1 : 1847 3 : 683
## AP-7 : 399 5 : 733 6 : 847 4 : 892
## (Other):23974 NA's:45701 (Other): 490 5 : 1523
## NA's :45701 NA's :45701 NA's:45701
## COD_TIPOINTERSECCION ACOND_CALZADA COD_SUPERFICIECALZADA
## :35755 0 :42570 1 :45486
## 2 : 7863 1 : 9331 3 : 8926
## 1 : 5802 6 : 2378 9 : 641
## 5 : 3942 3 : 708 2 : 320
## 6 : 1006 4 : 331 4 : 163
## (Other): 1436 (Other): 486 (Other): 268
## NA's :45701 NA's :45701 NA's :45701
## OTRA_CIRCUNSTANCIA IND_ACERAS COD_MEDIDASESPECIALES zonagrup
## 14 :47554 : 5592 0 :14195 interurb:25468
## 0 : 5666 N :39641 1 : 18 urbana :30336
## 13 : 1438 S :10571 2 : 7 NA's :45701
## 4 : 330 NA's:45701 3 : 658
## 8 : 283 4 :40926
## (Other): 533 NA's:45701
## NA's :45701
## paro_requerido visibilidad luminosidad
## no :14244 problemas :37455 buena/día :49854
## sí :41560 sin problema:18349 mala/noche: 5950
## NA's:45701 NA's :45701 NA's :45701
##
##
##
##
## cond_atmosfericas Etiqueta densidad
## bueno :47690 CONGESTIONADA: 666 fluida:33740
## extremas : 1752 DENSA : 2892 otra :22064
## lluvia/viento: 6207 FLUIDA :33740 NA's :45701
## niebla : 155 SIN DATO :18506
## NA's :45701 NA's :45701
##
##
## tipoaccidente
## Colisión de vehículos en marcha (Alcance) :11719
## Colisión de vehículos en marcha (Frontolateral) :10504
## Atropello a peatón aislado o en grupo : 7890
## Colisión de vehículos en marcha (Múltiple o en caravana): 3776
## Colisión de vehículos en marcha (Lateral) : 3648
## (Other) :18267
## NA's :45701
## tipogrupo codeprov ANIO_MATRICULA_VEHICULO
## Atropello: 8449 28 : 8491 2006 : 5593
## Colisión :33115 08 : 6897 2007 : 5541
## Otro : 2004 46 : 2320 2005 : 5409
## Salida :11752 41 : 2313 2004 : 5218
## Vuelco : 484 07 : 2167 2003 : 4629
## NA's :45701 (Other):21210 (Other):45011
## NA's :58107 NA's :30104
## MES_MATRICULA_VEHICULO TIPO_VEHICULO ESTADO_VEHICULO
## 7 : 6040 22 :101505 0 :87686
## 6 : 5647 1 : 0 11 : 2855
## 3 : 5334 2 : 0 10 : 537
## 5 : 5126 10 : 0 1 : 125
## 12 : 4814 11 : 0 2 : 22
## (Other):29711 21 : 0 (Other): 21
## NA's :44833 (Other): 0 NA's :10259
## NUMERO_OCUPANTES_VEH MERCANCIAS_PELIGROSAS VEHICULO_INCENDIADO
## Min. : 0.000 :41609 :11368
## 1st Qu.: 1.000 1: 0 N:90081
## Median : 1.000 2: 1 S: 56
## Mean : 1.459 3: 0
## 3rd Qu.: 2.000 4: 5
## Max. :41.000 N:59890
## NA's :11537
## ANIO.y edad gredad
## Min. :2013 Min. :1900 (1900,1998]:11394
## 1st Qu.:2013 1st Qu.:2000 (1998,2003]:21117
## Median :2013 Median :2004 (2003,2008]:25811
## Mean :2013 Mean :2004 (2008,2013]:13078
## 3rd Qu.:2013 3rd Qu.:2007 NA's :30105
## Max. :2013 Max. :2013
## NA's :30104
Hay nada menos que 45701 turismos en la tabla que no figuran en la tabla de accidentes.
Y nos falta la edad, el año de matrícula, de 30104 vehículos.
12880 de ellos de la comunidad autónoma “Cataluña”
table(datos$COMUNIDAD_AUTONOMA, datos$gredad, exclude = NULL)
##
## (1900,1998] (1998,2003] (2003,2008] (2008,2013] <NA>
## 1 1088 2491 3122 1375 841
## 10 617 1218 1511 739 368
## 11 177 280 268 102 56
## 12 604 837 867 342 96
## 13 971 2192 3011 1765 776
## 14 119 170 167 63 22
## 15 54 72 72 40 3
## 16 85 133 138 62 10
## 17 266 635 711 320 954
## 18 78 122 171 74 17
## 2 211 352 379 172 47
## 3 340 418 493 236 104
## 4 215 640 710 470 191
## 5 327 422 501 213 84
## 6 111 164 187 86 28
## 7 656 874 897 446 132
## 8 337 524 600 234 46
## 9 154 236 286 129 12880
## <NA> 4984 9337 11720 6210 13450
t <- table(datos$COMUNIDAD_AUTONOMA[which(datos$MUERTOS > 0)], exclude = NULL)
print(t)
##
## 1 10 11 12 13 14 15 16 17 18 2 3 4 5 6
## 130 55 21 63 54 27 17 7 25 1 25 19 19 21 13
## 7 8 9 <NA>
## 74 60 111 0
t <- table(datos$COMUNIDAD_AUTONOMA[datos$MUERTOS > 0]);
print(t)
##
## 1 10 11 12 13 14 15 16 17 18 2 3 4 5 6 7 8 9
## 130 55 21 63 54 27 17 7 25 1 25 19 19 21 13 74 60 111
print(sum(t))
## [1] 742
print(sum(t)/sum(table(accid$MUERTOS[accid$MUERTOS > 0])))
## [1] 0.5504451
Los accidentes con víctimas mortales parece que sí disponen de la información de comunidad autónoma.
Según estos datos, turismos están involucrados en un 55% de accidentes con víctimas mortales
Nos falta dato de antiguedad de 50 vehículos en accidentes mortales
# table(datos$gredad, datos$MUERTOS)
table(datos$gredad[datos$MUERTOS > 0])
##
## (1900,1998] (1998,2003] (2003,2008] (2008,2013]
## 139 200 245 108
#sum(table(datos$gredad[datos$MUERTOS > 0])) # Verificamos que contabilizamos mayoría de muertes
round(table(datos$gredad, datos$MUERTOS) / length(unique(datos$ID_ACCIDENTE)), digits = 4) * 10000
##
## 0 1 2 3 4
## (1900,1998] 890 18 2 0 0
## (1998,2003] 1644 26 3 0 0
## (2003,2008] 1965 30 4 1 0
## (2008,2013] 959 14 1 0 0
número de muertos supuesto accidente por grupo edad:
¡¡Yo NO consigo esa “proporción” ni esa relación que concluye informe Línea Directa!!
¡¡SÍ observo esa relación 2 a 1 en los vehículos de entre 5 y 10 años y 10 y 15 años!!
Mosaic plots están muy bien en librería vcd
library(vcd)
## Loading required package: grid
#?mosaic
DEBEMOS SABER QUE FALTAN CASI TODOS LOS DE CATALUÑA (9), SON NA’s
Esa hipótesis, que vehículos más viejos tienen mayor “riesgo” sólo se sostiene en comunidades autónomas concretas, las menos pobladas. En suma: menos accidentes pero más graves para coches viejos (>20 años) en
Sin embargo sucede precisamente todo lo contrario en las comunidades autónomas más pobladas:
(Etiquetados como Cataluña sólo tenemos 1741 casos, versus p.ej., 8715 Madrid -> Datos de Cataluña vienen en su mayoría sin código CA)
El mismo informe de línea directa da una pista esencial
Mail: pedro.concejerocerezo@gmail.com
Twitter: [@ConcejeroPedro ](https://twitter.com/ConcejeroPedro)
Día de la semana (lunes a domingo) por meses, todos los accidentes. sigue patrón de puentes, vacaciones, y retorno de las mismas.
mosaic(~ MES +
COD_DIASEMANA,
data = accidentes,
shade = T)
En cuanto a accidentes mortales, el patrón es… casi no hay patrón, es casi puro azar, salvo para el 15 de agosto (fue jueves) y comienzo puente de 1 mayo (31 abril, fue martes).
Pero sí parece haber asociación de los accidentes nocturnos y el invierno,
mosaic(~ luminosidad +
MES +
COD_DIASEMANA
,
data = accidentes[accidentes$MUERTOS > 0,],
shade = T)
library(party)
## Warning: package 'party' was built under R version 3.2.4
## Loading required package: mvtnorm
## Warning: package 'mvtnorm' was built under R version 3.2.3
## Loading required package: modeltools
## Warning: package 'modeltools' was built under R version 3.2.3
## Loading required package: stats4
##
## Attaching package: 'modeltools'
## The following object is masked from 'package:rJava':
##
## clone
## Loading required package: strucchange
## Warning: package 'strucchange' was built under R version 3.2.4
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 3.2.4
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
## Warning: package 'sandwich' was built under R version 3.2.4
##
## Attaching package: 'strucchange'
## The following object is masked from 'package:stringr':
##
## boundary
accid$target <- as.numeric(accid$MUERTOS > 0)
accid$target <- as.factor(accid$target)
La visibilidad es el principal factor que influye en que un accidente resulte con víctimas mortales, en el conjunto global de accidentes (todo tipo de vehículos, todo tipo de accidentes). De tal modo que en situaciones de noche y sin iluminación de la vía, condiciones de visibilidad restringida CONFIGURACIÓN DEL TERRENO FACTORES ATMOSFÉRICOS DESLUMBRAMIENTO POLVO O HUMO
producen que se duplique la proporción de accidentes (0.05 vs. 0.10) con víctimas mortales.
Asimismo en curvas, situaciones de baja visibilidad como son el terreno o los deslumbramientos hacen que esta proporción pase de 0.035 a 0.07. Estas proporciones corresponden a situaciones de iluminación de día o noche con iluminación y por eso son mucho menores que las anteriores de noche sin iluminación.
tree.2 <- ctree(target ~ ZONA_AGRUPADA +
# CARRETERA +
# COD_RED +
# COD_CALZADA +
TRAZADO_NO_INTERSEC + COD_TIPOINTERSECCION +
# ACOND_CALZADA +
COD_PRIORIDAD +
# COD_SUPERFICIECALZADA +
COD_LUMINOSIDAD +
COD_FACTORESATMOSFERICOS +
VISIBILIDAD_RESTRINGIDA +
# OTRA_CIRCUNSTANCIA +
# COD_TIPOACCIDENTE +
DENSIDAD_CIRCULACION
,
data = accid,
controls = ctree_control(maxdepth = 5)
)
print(tree.2)
##
## Conditional inference tree with 13 terminal nodes
##
## Response: target
## Inputs: ZONA_AGRUPADA, TRAZADO_NO_INTERSEC, COD_TIPOINTERSECCION, COD_PRIORIDAD, COD_LUMINOSIDAD, COD_FACTORESATMOSFERICOS, VISIBILIDAD_RESTRINGIDA, DENSIDAD_CIRCULACION
## Number of observations: 89519
##
## 1) VISIBILIDAD_RESTRINGIDA == {0}; criterion = 1, statistic = 857.315
## 2) TRAZADO_NO_INTERSEC == {1, 2}; criterion = 0.998, statistic = 19.129
## 3) COD_LUMINOSIDAD == {1, 2, 4, 5}; criterion = 0.952, statistic = 23.513
## 4)* weights = 15494
## 3) COD_LUMINOSIDAD == {3}
## 5)* weights = 3182
## 2) TRAZADO_NO_INTERSEC == {, 4}
## 6)* weights = 13296
## 1) VISIBILIDAD_RESTRINGIDA == {1, 2, 3, 4, 5, 6, 7, 8}
## 7) COD_PRIORIDAD == {0}; criterion = 1, statistic = 883.399
## 8) ZONA_AGRUPADA == {1}; criterion = 1, statistic = 48.902
## 9) COD_LUMINOSIDAD == {1, 2, 3}; criterion = 0.985, statistic = 16.984
## 10)* weights = 530
## 9) COD_LUMINOSIDAD == {4, 5}
## 11)* weights = 146
## 8) ZONA_AGRUPADA == {2}
## 12)* weights = 568
## 7) COD_PRIORIDAD == {1, 2, 3, 4, 5, 6, 7, 8}
## 13) ZONA_AGRUPADA == {1}; criterion = 1, statistic = 261.973
## 14) COD_LUMINOSIDAD == {5}; criterion = 1, statistic = 85.46
## 15) COD_FACTORESATMOSFERICOS == {2, 6}; criterion = 1, statistic = 39.827
## 16)* weights = 39
## 15) COD_FACTORESATMOSFERICOS == {1, 3, 4, 5, 7, 8, 9}
## 17)* weights = 3623
## 14) COD_LUMINOSIDAD == {1, 2, 3, 4}
## 18) TRAZADO_NO_INTERSEC == {, 5}; criterion = 1, statistic = 73.38
## 19)* weights = 9394
## 18) TRAZADO_NO_INTERSEC == {1, 2, 3, 4}
## 20)* weights = 16386
## 13) ZONA_AGRUPADA == {2}
## 21) COD_LUMINOSIDAD == {4, 5}; criterion = 1, statistic = 91.76
## 22)* weights = 572
## 21) COD_LUMINOSIDAD == {1, 2, 3}
## 23) TRAZADO_NO_INTERSEC == {, 1, 5}; criterion = 1, statistic = 50.188
## 24)* weights = 24619
## 23) TRAZADO_NO_INTERSEC == {2, 3, 4}
## 25)* weights = 1670
plot(tree.2, type = "simple")
Para todos los accidentes, todo tipo de vehículos, hay un factor esencial de riesgo, que son las condiciones de iluminación. En aquellos accidentes que no tienen lugar en intersecciones o regulación de tráfico (p.ej. stop) y que suceden en vías interurbanas, si es de noche con iluminación insuficiente o sin ninguna, el riesgo de tener víctimas mortales se duplica, y es el más alto de todas las situaciones, pasando de 16.4% (día o iluminación suficiente) a un 30.8% (iluminación insuficiente o ninguna). En vías urbanas, en cambio, el riesgo es de un 6% (en situaciones de visibilidad restringida).
Y todavía más, en vías interurbanas, de noche y sin iluminación, la condición atmosférica de niebla intensa hace que casi se quintuplique el riesgo de víctimas mortales frente a las otras condiciones atmosféricas (5% a 23.1%).
En zonas urbanas la influencia de iluminación es también determinante, en condiciones insuficientes o sin iluminación el riesgo pasa de 2 a un 4%.
accidentes$target <- as.numeric(accidentes$MUERTOS > 0)
tree.3 <- ctree(target ~ zonagrup +
paro_requerido +
luminosidad +
cond_atmosfericas +
visibilidad +
densidad +
tipogrupo
,
data = accidentes,
controls = ctree_control(maxdepth = 5)
)
plot(tree.3, type = "simple")
png(filename = "decision_tree.png",
width = 1024, height = 768)
plot(tree.3, type = "simple")
dev.off()
## png
## 2