Introducción
La accidentalidad vial representa un problema de salud pública y seguridad que afecta a millones de personas en todo el mundo. En el caso de España, la alta densidad de tráfico, las condiciones climáticas variables y la diversidad geográfica del territorio hacen necesario un enfoque analítico que permita entender mejor los factores que inciden en la ocurrencia de accidentes. En este contexto, la Estadística Espacial se presenta como una herramienta clave para identificar patrones geográficos de siniestralidad y orientar acciones preventivas más eficaces.
Este proyecto tiene como objetivo analizar la distribución espacial de los accidentes de tránsito en España, integrando variables climáticas y contextuales para evaluar su relación con la intensidad y frecuencia de los siniestros. A través de técnicas de análisis exploratorio, autocorrelación espacial y modelamiento espacial (OLS, SAR y SEM), se busca detectar concentraciones significativas de accidentes y evaluar el impacto de factores externos sobre dicha distribución. El análisis no solo permite detectar zonas críticas, sino que también aporta evidencia útil para la formulación de políticas públicas orientadas a la reducción de la accidentalidad, mejorando la toma de decisiones desde un enfoque territorial y basado en datos.
Punto 3: Análisis exploratorio espacial
## Reading layer `DISTRITOS' from data source
## `C:\Users\User\Downloads\MEJIA\Distritos M\DISTRITOS.shp' using driver `ESRI Shapefile'
## Simple feature collection with 21 features and 11 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 424753.5 ymin: 4462566 xmax: 456033.3 ymax: 4499366
## Projected CRS: ETRS89 / UTM zone 30N
## standardGeneric for "plot" defined from package "base"
##
## function (x, y, ...)
## standardGeneric("plot")
## <environment: 0x0000025aab553df8>
## Methods may be defined for arguments: x, y
## Use showMethods(terra::plot) for currently available ones where additionally to terra, the <pkg> could also be one of "raster", "colorspace", "sp".
En este mapa se muestra el contorno de las divisiones territoriales utilizadas en el análisis espacial de la accidentalidad en España. Estas unidades espaciales, correspondientes a distritos, representan la estructura geográfica sobre la cual se realizarán los análisis estadísticos.
## character(0)
## Distritos sin datos de accidentes:
## [1] 0
## ℹ tmap mode set to "view".
##
##
## ── tmap v3 code detected ───────────────────────────────────────────────────────
##
## [v3->v4] `tm_polygons()`: instead of `style = "quantile"`, use fill.scale =
## `tm_scale_intervals()`.
## ℹ Migrate the argument(s) 'style', 'palette' (rename to 'values') to
## 'tm_scale_intervals(<HERE>)'
## [v3->v4] `tm_polygons()`: migrate the argument(s) related to the legend of the
## visual variable `fill` namely 'title' to 'fill.legend = tm_legend(<HERE>)'
## [v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
El mapa de calor revela una distribución espacialmente desigual de la accidentalidad vial en los distritos de Madrid, con evidentes concentraciones de siniestralidad en zonas específicas. En particular, algunos distritos del centro registran los niveles más altos de accidentes, posiblemente asociados a una mayor densidad vehicular, infraestructura vial compleja y una intensa actividad urbana. En contraste, los distritos del sur presentan una menor frecuencia de siniestros, lo cual podría reflejar una menor exposición al tráfico o características urbanas distintas. Esta visualización permite identificar áreas prioritarias de intervención y resalta la importancia de implementar estrategias focalizadas de prevención y control del tránsito en los sectores con mayor incidencia de accidentes.
## Warning: NAs introducidos por coerción
## Warning: NAs introducidos por coerción
## Warning: NAs introducidos por coerción
## standardGeneric for "plot" defined from package "base"
##
## function (x, y, ...)
## standardGeneric("plot")
## <environment: 0x0000025aab553df8>
## Methods may be defined for arguments: x, y
## Use showMethods(terra::plot) for currently available ones where additionally to terra, the <pkg> could also be one of "raster", "colorspace", "sp".
La función K indica que la distribución de los accidentes viales en Madrid presenta un patrón de agrupamiento espacial. La curva observada la línea negra se sitúa consistentemente por encima de la curva teórica de la línea roja, lo cual indica que los accidentes no se distribuyen al azar, sino que tienden a concentrarse en determinadas zonas dentro de ciertas distancias.
El análisis de densidad por Kernel permite visualizar las zonas con mayor concentración de accidentes viales en Madrid. Los colores amarillo y fucsia indican áreas de alta densidad de siniestros, mientras que los tonos azul oscuro reflejan baja concentración. El patrón observado muestra agrupamientos definidos en el centro y suroeste de la ciudad.
## function (mapping = NULL, data = NULL, position = "stack", ...,
## just = 0.5, width = NULL, na.rm = FALSE, show.legend = NA,
## inherit.aes = TRUE)
## {
## layer(data = data, mapping = mapping, stat = "identity",
## geom = GeomCol, position = position, show.legend = show.legend,
## inherit.aes = inherit.aes, params = list2(just = just,
## width = width, na.rm = na.rm, ...))
## }
## <bytecode: 0x0000025b0a7630d8>
## <environment: namespace:ggplot2>
La gráfica muestra la evolución mensual del número de accidentes por distrito durante el primer trimestre del año. Se observa que distritos como Fuencarral-El Pardo, Puente de Vallecas y Centro presentan una frecuencia de accidentes significativamente más alta que otras zonas, de forma constante en los tres meses analizados. En contraste, distritos como Barajas, Moratalaz o Moncloa Aravaca registran una menor cantidad de siniestros lo que indica que el riesgo vial en ciertos distritos no es estacional, sino estructural.
El mapa interactivo muestra la distribución de accidentes viales por distrito en Madrid durante los meses de enero, febrero y marzo, utilizando círculos proporcionales en tamaño y color según la cantidad de siniestros. Se observa una mayor concentración de accidentes en los distritos centrales, como Centro y Salamanca, donde los círculos son más grandes y de color más cálido, lo que indica una frecuencia elevada y persistente de accidentes. En contraste, los distritos periféricos presentan menor intensidad. Esta visualización facilita la identificación de zonas críticas y permite analizar variaciones temporales, apoyando la toma de decisiones en materia de seguridad vial.
## [1] "year" "month" "day" "hour" "temp"
## [6] "temp_source" "rhum" "rhum_source" "prcp" "prcp_source"
## [11] "wdir" "wdir_source" "wspd" "wspd_source" "pres"
## [16] "pres_source" "cldc" "cldc_source" "coco" "coco_source"
## Warning in left_join(DATA_clean, clima, by = c("Fecha", "Hora_match")): Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 51 of `x` matches multiple rows in `y`.
## ℹ Row 529 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Fecha_hora = ymd_hms(paste(Fecha, Hora), tz =
## "Europe/Madrid")`.
## Caused by warning:
## ! 1 failed to parse.
La gráfica muestra cómo varía la frecuencia de los distintos tipos de accidentes viales según el estado del tiempo. La mayoría de los siniestros ocurren en condiciones despejadas, especialmente los de tipo alcance, colisión lateral y atropello a persona, lo que indica que incluso en buen clima persiste un alto riesgo vial. Bajo condiciones de lluvia débil e intensa, aumentan los accidentes como colisiones múltiples y frontales, probablemente debido a la menor visibilidad y el pavimento resbaladizo. Aunque los climas extremos como granizo o nieve son menos frecuentes, también generan accidentes considerables, lo que demuestra su peligrosidad.
## function (data, mapping = NULL, columns = 1:ncol(data), title = NULL,
## upper = list(continuous = "cor", combo = "box_no_facet",
## discrete = "count", na = "na"), lower = list(continuous = "points",
## combo = "facethist", discrete = "facetbar", na = "na"),
## diag = list(continuous = "densityDiag", discrete = "barDiag",
## na = "naDiag"), params = NULL, ..., xlab = NULL, ylab = NULL,
## axisLabels = c("show", "internal", "none"), columnLabels = colnames(data[columns]),
## labeller = "label_value", switch = NULL, showStrips = NULL,
## legend = NULL, cardinality_threshold = 15, progress = NULL,
## proportions = NULL, legends = stop("deprecated"))
## {
## warn_deprecated(!missing(legends), "legends")
## warn_if_args_exist(list(...))
## stop_if_params_exist(params)
## isSharedData <- inherits(data, "SharedData")
## data_ <- fix_data(data)
## data <- fix_data_slim(data_, isSharedData)
## if (!missing(mapping) && !is.list(mapping) && missing(columns)) {
## columns <- mapping
## mapping <- NULL
## }
## stop_if_bad_mapping(mapping)
## columns <- fix_column_values(data, columns, columnLabels,
## "columns", "columnLabels")
## stop_if_high_cardinality(data, columns, cardinality_threshold)
## upper <- check_and_set_ggpairs_defaults("upper", upper, continuous = "cor",
## combo = "box_no_facet", discrete = "count", na = "na")
## lower <- check_and_set_ggpairs_defaults("lower", lower, continuous = "points",
## combo = "facethist", discrete = "facetbar", na = "na")
## diag <- check_and_set_ggpairs_defaults("diag", diag, continuous = "densityDiag",
## discrete = "barDiag", na = "naDiag", isDiag = TRUE)
## axisLabels <- fix_axis_label_choice(axisLabels, c("show",
## "internal", "none"))
## proportions <- ggmatrix_proportions(proportions, data, columns)
## dataTypes <- plot_types(data, columns, columns, allowDiag = TRUE)
## if (identical(axisLabels, "internal")) {
## dataTypes$plotType[dataTypes$posX == dataTypes$posY] <- "label"
## }
## ggpairsPlots <- lapply(seq_len(nrow(dataTypes)), function(i) {
## plotType <- dataTypes[i, "plotType"]
## posX <- dataTypes[i, "posX"]
## posY <- dataTypes[i, "posY"]
## xColName <- dataTypes[i, "xVar"]
## yColName <- dataTypes[i, "yVar"]
## if (posX > posY) {
## types <- upper
## }
## else if (posX < posY) {
## types <- lower
## }
## else {
## types <- diag
## }
## sectionAes <- add_and_overwrite_aes(add_and_overwrite_aes(aes(x = !!as.name(xColName),
## y = !!as.name(yColName)), mapping), types$mapping)
## args <- list(types = types, sectionAes = sectionAes)
## if (plotType == "label") {
## args$label <- columnLabels[posX]
## }
## plot_fn <- ggmatrix_plot_list(plotType)
## p <- do.call(plot_fn, args)
## return(p)
## })
## plotMatrix <- ggmatrix(plots = ggpairsPlots, byrow = TRUE,
## nrow = length(columns), ncol = length(columns), xAxisLabels = (if (axisLabels ==
## "internal")
## NULL
## else columnLabels), yAxisLabels = (if (axisLabels ==
## "internal")
## NULL
## else columnLabels), labeller = labeller, switch = switch,
## showStrips = showStrips, showXAxisPlotLabels = identical(axisLabels,
## "show"), showYAxisPlotLabels = identical(axisLabels,
## "show"), title = title, xlab = xlab, ylab = ylab,
## data = data_, gg = NULL, progress = progress, legend = legend,
## xProportions = proportions, yProportions = proportions)
## plotMatrix
## }
## <bytecode: 0x0000025b18397e60>
## <environment: namespace:GGally>
La matriz de correlación muestra la relación entre el número de accidentes y las condiciones climáticas. En general, se observa una correlación muy baja entre el número de accidentes y la temperatura 0.034 y la precipitación 0.033, aunque ambas son estadísticamente significativas, lo que indica que ligeramente aumentan los accidentes en días más cálidos y con más lluvia, pero su efecto es muy leve. Por otro lado, la humedad relativa presenta una correlación negativa leve -0.021 con los accidentes, lo que sugiere que en días más húmedos podría haber una ligera disminución en los siniestros, aunque esta relación no es significativa.
La matriz de correlación muestra que existe una relación muy débil entre el número de accidentes y las variables climáticas analizadas. La temperatura y la precipitación presentan una leve correlación positiva con los accidentes, mientras que la humedad prácticamente no tiene relación. Esto indica que, aunque el clima puede tener algún efecto, su influencia sobre la accidentalidad es limitada, y otros factores como el tráfico, la infraestructura vial o el comportamiento de los conductores pueden tener un peso mucho mayor en la ocurrencia de siniestros.
En esta gráfica podemos visualizar los distritos de España donde se presentaron más casos de accidentes viales. Se destacan Chamartín y Salamanca, ambos con 629 accidentes, siendo los de mayor incidencia. Les siguen Centro y Barajas, con 541 casos cada uno, lo que indica que estos distritos concentran una gran parte de los siniestros viales registrados. Por el contrario, distritos como Vicálvaro 121 accidentes y Carabanchel 196 accidentes muestran cifras mucho más bajas. Esta variación revela que la accidentalidad está influenciada por factores como el volumen de tránsito, las condiciones del entorno urbano o incluso variables climáticas.
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## function (data = NULL, mapping = aes(), ..., environment = parent.frame())
## {
## UseMethod("ggplot")
## }
## <bytecode: 0x0000025af0d25ae0>
## <environment: namespace:ggplot2>
En esta gráfica se muestra que 327 personas estuvieron implicadas en accidentes donde se confirmó el consumo de alcohol.
En esta gráfica se muestra que 14 personas estuvieron involucradas en accidentes en los que se confirmó el consumo de drogas, lo que indica que en estos casos esta sustancia fue un factor directo en la ocurrencia del siniestro.
En esta gráfica se observa que la mayoría de los accidentes registrados no tienen información asociada a la lesividad 3152 casos con valor nulo, lo que representa una limitación importante en el análisis. Sin embargo, dentro de los casos con datos disponibles, se destaca que en 2158 accidentes no se brindó asistencia sanitaria, y en 970 casos solo se prestó atención en el lugar del accidente, lo cual sugiere que la mayoría de los siniestros fueron de baja gravedad. Por otro lado, situaciones más críticas, como ingresos hospitalarios prolongados 128 casos o fallecimientos en las primeras 24 horas (3 casos), fueron poco frecuentes. Esta distribución refleja que, aunque hay una alta incidencia de accidentes, la mayoría no requirió atención médica especializada.
Punto 4: Análisis de autocorrelación espacial
## [1] 839
## # A tibble: 839 × 21
## Num_expediente Fecha Hora Localizacion Numero Cod_distrito Distrito
## <chr> <date> <chr> <chr> <dbl> <dbl> <chr>
## 1 2025S011364 2025-01-31 16:10:16 CALL. CAMPEZ… 12 20 SAN BLA…
## 2 2025S022833 2025-02-26 07:46:16 CALL. ERASMO… 2 8 FUENCAR…
## 3 2025S006467 2025-01-20 08:05:16 CALL. KANT, 2 2 8 FUENCAR…
## 4 2025S028018 2025-03-11 17:20:16 HOSPI. CANTO… 0 8 FUENCAR…
## 5 2025S030715 2025-03-17 14:20:16 HOSPI. CANTO… 0 8 FUENCAR…
## 6 2025S018808 2025-02-17 16:35:16 AVDA. GUARDI… 1 8 FUENCAR…
## 7 2025S036622 2025-03-31 14:30:16 CALL. PORTIC… 2 8 FUENCAR…
## 8 2025S036221 2025-03-30 05:25:16 RONDA. COMUN… 3 8 FUENCAR…
## 9 2025S010617 2025-01-29 13:30:16 CALL. PORTIC… 2 8 FUENCAR…
## 10 2025S036364 2025-03-30 16:15:16 AUTOV. M-607… NA 8 FUENCAR…
## # ℹ 829 more rows
## # ℹ 14 more variables: Tipo_accidente <chr>, Estado_meteorológico <chr>,
## # Tipo_vehiculo <chr>, Tipo_persona <chr>, Rango_edad <chr>, Sexo <chr>,
## # Cod_lesividad <chr>, Lesividad <chr>, Coordenada_x_utm <dbl>,
## # Coordenada_y_utm <dbl>, Positiva_alcohol <chr>, Positiva_droga <chr>,
## # Mes <ord>, CODIGO_DIST <dbl>
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 98.0 194.0 246.0 253.4 316.0 391.0
## ℹ tmap mode set to "view".
##
##
## ── tmap v3 code detected ───────────────────────────────────────────────────────
##
## [v3->v4] `tm_tm_fill()`: migrate the argument(s) related to the scale of the
## visual variable `fill` namely 'palette' (rename to 'values') to fill.scale =
## tm_scale(<HERE>).
## [v3->v4] `tm_fill()`: migrate the argument(s) related to the legend of the
## visual variable `fill` namely 'title' to 'fill.legend = tm_legend(<HERE>)'
## [v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
## [cols4all] color palettes: use palettes from the R package cols4all. Run
## `cols4all::c4a_gui()` to explore them. The old palette name "Set1" is named
## "brewer.set1"
El mapa LISA de la accidentalidad en Madrid muestra patrones espaciales diferenciados. Puente de Vallecas se clasifica como Alto-Bajo, indicando una alta concentración de accidentes en el distrito, rodeado de zonas con baja siniestralidad, lo que indica factores locales de riesgo. En contraste, Chamberí aparece como Bajo-Alto, con baja accidentalidad pero rodeado de áreas más afectadas, posiblemente por mejores condiciones viales. Finalmente, San Blas Canillejas se ubica en la categoría Bajo-Bajo, reflejando baja siniestralidad.
## ====== TEST DE MORAN ======
##
## Moran I test under randomisation
##
## data: madrid_sp@data$conteo
## weights: pesos
##
## Moran I statistic standard deviate = 0.6465, p-value = 0.259
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.03047851 -0.05000000 0.01549625
El índice de Moran obtenido fue 0.0305 con un p-valor de 0.259, lo que indica que no existe autocorrelación espacial significativa en la distribución de los accidentes. Es decir, los accidentes no están agrupados ni dispersos espacialmente, sino que se distribuyen de forma aleatoria entre los distritos.
##
## ====== GEARY'S C ======
##
## Geary C test under randomisation
##
## data: madrid_sp@data$conteo
## weights: pesos
##
## Geary C statistic standard deviate = 0.99983, p-value = 0.1587
## alternative hypothesis: Expectation greater than statistic
## sample estimates:
## Geary C statistic Expectation Variance
## 0.87665500 1.00000000 0.01521909
El valor de Geary’s C fue 0.8767 con un p-valor de 0.1587, lo que indica que no hay autocorrelación espacial significativa en los datos. Al estar el valor cerca de 1, sugiere que los accidentes se distribuyen de forma aleatoria entre los distritos.
##
## ====== MORAN MONTE CARLO ======
##
## Monte-Carlo simulation of Moran I
##
## data: madrid_sp@data$conteo
## weights: pesos
## number of simulations + 1: 1000
##
## statistic = 0.030479, observed rank = 738, p-value = 0.262
## alternative hypothesis: greater
El valor obtenido fue 0.0305 con un p-valor de 0.262, lo que indica que no hay autocorrelación espacial significativa. La simulación confirma que los accidentes están distribuidos aleatoriamente entre los distritos.
##
## ====== MANTEL TEST ======
##
## Mantel statistic based on Pearson's product-moment correlation
##
## Call:
## mantel(xdis = dist_geo, ydis = dist_val, permutations = 999)
##
## Mantel statistic r: 0.1635
## Significance: 0.095
##
## Upper quantiles of permutations (null model):
## 90% 95% 97.5% 99%
## 0.161 0.202 0.239 0.272
## Permutation: free
## Number of permutations: 999
El test de Mantel arrojó un coeficiente de r = 0.1635 con un p-valor de 0.095, lo que indica una relación espacial débil y no significativa entre la distancia geográfica y la distribución de los accidentes. Aunque hay una ligera tendencia, no es estadísticamente concluyente.
Punto 5: Modelamiento espacial
## 'data.frame': 21 obs. of 1 variable:
## $ conteo: int 305 246 246 363 382 241 234 316 281 254 ...
## ===== MODELO CLÁSICO =====
##
## Call:
## lm(formula = conteo ~ ., data = madrid_sp@data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -155.429 -59.429 -7.429 62.571 137.571
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 253.43 18.62 13.61 1.43e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 85.34 on 20 degrees of freedom
El modelo clásico muestra que el valor medio estimado de accidentes por distrito es de 253.43, con una alta significancia estadística p < 0.001. Sin embargo, los residuos presentan una variabilidad considerable (error estándar = 85.34), lo que revela que el modelo no logra explicar adecuadamente la variación en el número de accidentes.
##
## ===== MODELO SAR =====
##
## Call:lagsarlm(formula = conteo ~ ., data = madrid_sp@data, listw = pesos,
## zero.policy = TRUE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -154.5245 -60.3985 -9.9241 60.7806 139.1931
##
## Type: lag
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 233.118 84.604 2.7554 0.005862
##
## Rho: 0.07744, LR test value: 0.049887, p-value: 0.82326
## Asymptotic standard error: 0.32703
## z-value: 0.2368, p-value: 0.81281
## Wald statistic: 0.056073, p-value: 0.81281
##
## Log likelihood: -122.6412 for lag model
## ML residual variance (sigma squared): 6912, (sigma: 83.138)
## Number of observations: 21
## Number of parameters estimated: 3
## AIC: 251.28, (AIC for lm: 249.33)
## LM test for residual autocorrelation
## test value: 0.04191, p-value: 0.83779
El modelo SAR estima un promedio de 233.11 accidentes por distrito, pero el resultado muestra que la relación espacial entre distritos no es significativa (Rho = 0.077, p = 0.823). Es decir, los accidentes en un distrito no están influenciados por los de sus vecinos.
##
## ===== MODELO SEM =====
##
## Call:errorsarlm(formula = conteo ~ ., data = madrid_sp@data, listw = pesos,
## zero.policy = TRUE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -154.5245 -60.3985 -9.9241 60.7806 139.1931
##
## Type: error
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 252.686 19.665 12.849 < 2.2e-16
##
## Lambda: 0.07744, LR test value: 0.049887, p-value: 0.82326
## Asymptotic standard error: 0.32703
## z-value: 0.2368, p-value: 0.81281
## Wald statistic: 0.056073, p-value: 0.81281
##
## Log likelihood: -122.6412 for error model
## ML residual variance (sigma squared): 6912, (sigma: 83.138)
## Number of observations: 21
## Number of parameters estimated: 3
## AIC: 251.28, (AIC for lm: 249.33)
El modelo SEM muestra un promedio de 252.68 accidentes por distrito, pero el efecto espacial no es significativo (Lambda = 0.077, p = 0.823). Esto quiere decir que los errores del modelo no están relacionados entre distritos vecinos.
##
## ===== COMPARACIÓN AIC =====
## Modelo AIC
## 1 LM 249.3323
## 2 SAR 251.2824
## 3 SEM 251.2824
En este análisis se compararon tres modelos: el clásico LM, el modelo SAR y el modelo SEM. Los resultados mostraron que el modelo clásico tuvo el mejor ajuste a los datos, con el valor de AIC más bajo 249.33, mientras que los modelos espaciales SAR y SEM presentaron AIC más altos 251.28. Además, los efectos espaciales no fueron significativos, lo que indica que la ubicación geográfica de los distritos no influye de forma importante en la cantidad de accidentes. Por tanto, incluir componentes espaciales no mejora el modelo, y en este caso, el enfoque clásico es suficiente para explicar la distribución de la accidentalidad.
Conclusiones
Este proyecto ha permitido analizar la distribución espacial de los accidentes de tránsito en Madrid mediante el uso de técnicas de estadística espacial, integrando información sobre la localización de los siniestros y, en menor medida, variables contextuales como el clima y la lesividad.
Los resultados obtenidos revelan que la accidentalidad en Madrid no se distribuye uniformemente. Se observa una clara concentración de accidentes en ciertos distritos, principalmente en el centro histórico de la ciudad, como Centro, Chamartín, Salamanca y Puente de Vallecas. Estas áreas, caracterizadas por una alta densidad de tráfico, infraestructura compleja y gran actividad urbana, presentan consistentemente los mayores números de siniestros durante el período analizado (enero a marzo de 2025). En contraste, distritos periféricos como Vicálvaro o Carabanchel registran significativamente menos accidentes.
El análisis exploratorio, mediante la función K y el análisis de densidad Kernel, confirmó la existencia de un patrón de agrupamiento espacial de los accidentes, es decir, estos tienden a concentrarse en zonas específicas más que distribuirse aleatoriamente. Sin embargo, al evaluar la autocorrelación espacial global usando el Índice de Moran, Geary’s C, pruebas de Monte Carlo y el test de Mantel, se encontró que esta autocorrelación no es estadísticamente significativa. Esto indica que, aunque hay zonas con más accidentes, el nivel de siniestralidad en un distrito no está influenciado directamente por los niveles en los distritos vecinos.
Este hallazgo fue respaldado por el modelamiento espacial. Al comparar modelos lineales clásicos (OLS) con modelos espaciales autorregresivos (SAR) y de errores espaciales (SEM), se observó que los parámetros espaciales (Rho en SAR, Lambda en SEM) no son significativos. Además, según el criterio del Akaike Information Criterion (AIC), el modelo lineal clásico (OLS) proporciona el mejor ajuste a los datos. Por lo tanto, en este caso específico, la incorporación de efectos espaciales no mejora la capacidad explicativa del modelo, y la variabilidad en el número de accidentes entre distritos parece deberse más a factores intrínsecos de cada área como tráfico, infraestructura, comportamiento que a interacciones espaciales directas con áreas vecinas.
En cuanto a los factores contextuales, el análisis mostró que la relación entre las variables climáticas (temperatura, precipitación) y la frecuencia de accidentes es muy débil, aunque estadísticamente significativa en algunos casos. La mayoría de los accidentes ocurren en condiciones climáticas normales. Asimismo, el análisis de la lesividad reveló que una proporción considerable de los registros carece de información sobre la gravedad de los siniestros, limitando una evaluación más completa del impacto de los accidentes. Sin embargo, los casos con datos disponibles indican que la mayoría de los accidentes son de baja gravedad.
En conclusión, este estudio identificó claramente patrones espaciales de concentración de la accidentalidad en Madrid, destacando la necesidad de atención focalizada en ciertos distritos. Sin embargo, no se encontró evidencia sólida de dependencia espacial significativa en la distribución agregada de los accidentes por distrito. La mejor herramienta para modelar esta distribución, dentro de las comparadas, resultó ser un modelo lineal simple. Para futuras investigaciones, sería valioso profundizar en el análisis incorporando datos más granulares (nivel de calle), un período temporal más amplio, variables contextuales más detallado (tráfico, infraestructura) y una mayor calidad en la información sobre lesividad, con el fin de construir modelos más robustos y obtener conclusiones más precisas sobre los determinantes de la accidentalidad vial.
Bibliografía