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.

library(tidyverse)
library(sf)
library(sfdep)

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 = hotspot

Ejercicios

ImportantEjercicio 12.1 — Mapa de clusters

Continuando con el indicador del Chapter 11:

  1. Calcula el I de Moran local con local_moran().
  2. Une los resultados a la capa y crea un mapa de los clusters significativos.
  3. Identifica al menos un hotspot (AA) y un coldspot (BB) reales y propón una explicación geográfica.
  4. (Opcional) Compara con el resultado de Getis-Ord Gi*.