library(tidyverse)
library(sf)
library(sfdep)12 Indicadores locales de autocorrelación espacial
NoteResultados de aprendizaje
- R5. Usar paquetes para el análisis espacial en R.
El I de Moran global nos dice si hay patrón, pero no dónde. Los indicadores locales (LISA, Local Indicators of Spatial Association) descomponen el estadístico global para identificar clusters y valores atípicos en cada ubicación.
12.1 El I de Moran local y los cuatro tipos de cluster
Para cada unidad, el Moran local indica si pertenece a un agrupamiento. Se clasifica en cuatro categorías:
| Categoría | Significado |
|---|---|
| Alto-Alto (AA) | Valor alto rodeado de valores altos → hotspot. |
| Bajo-Bajo (BB) | Valor bajo rodeado de valores bajos → coldspot. |
| Alto-Bajo (AB) | Valor alto rodeado de bajos → atípico espacial. |
| Bajo-Alto (BA) | Valor bajo rodeado de altos → atípico espacial. |
12.2 Cálculo con sfdep
comunas <- st_read("data/comunas_indicadores.gpkg", quiet = TRUE) %>%
mutate(
nb = st_contiguity(geom),
wt = st_weights(nb)
)
# I de Moran local: devuelve un data frame con una fila por unidad
lisa <- local_moran(comunas$pct_adultos_mayores, comunas$nb, comunas$wt)
# Unimos los resultados de vuelta a la capa
comunas_lisa <- comunas %>% bind_cols(lisa)El objeto resultante incluye, entre otras columnas:
ii— el valor del Moran local de cada unidad,p_ii— su p-valor,mean/pysal— la etiqueta de cluster (AA, BB, AB, BA).
12.3 Mapear los clusters significativos
Filtramos por significancia (p_ii < 0.05) y coloreamos por tipo de cluster:
comunas_lisa <- comunas_lisa %>%
mutate(cluster = if_else(p_ii < 0.05, as.character(mean), "No significativo"))
ggplot(comunas_lisa) +
geom_sf(aes(fill = cluster), color = "white", lwd = 0.2) +
scale_fill_manual(values = c(
"High-High" = "#d7191c",
"Low-Low" = "#2c7bb6",
"High-Low" = "#fdae61",
"Low-High" = "#abd9e9",
"No significativo" = "grey90"
)) +
labs(title = "Clusters LISA — % adultos mayores", fill = "Cluster") +
theme_void()
12.4 Getis-Ord Gi* (hotspots)
Otra familia de indicadores locales es el Gi* de Getis-Ord, que identifica concentraciones de valores altos (hotspots) y bajos (coldspots) según el valor z:
comunas_gi <- comunas %>%
mutate(gi = local_g_perm(pct_adultos_mayores, nb, wt))
# Valores z positivos y significativos = hotspotEjercicios
ImportantEjercicio 12.1 — Mapa de clusters
Continuando con el indicador del Chapter 11:
- Calcula el I de Moran local con
local_moran(). - Une los resultados a la capa y crea un mapa de los clusters significativos.
- Identifica al menos un hotspot (AA) y un coldspot (BB) reales y propón una explicación geográfica.
- (Opcional) Compara con el resultado de Getis-Ord Gi*.