Urban Geography and Development
Step-by-step Guide to Implementing Spatial Regression with R
Table of Contents
La regresión espacial es una poderosa técnica estadística utilizada para analizar datos espaciales correlativos, permitiendo a los investigadores comprender cómo los factores geográficos influyen en diversos fenómenos, desde patrones ambientales hasta desarrollo urbano, resultados de salud pública y tendencias económicas. Esta guía integral proporciona un enfoque detallado y gradual para implementar la regresión espacial utilizando R, un lenguaje de programación estadística de código abierto popular que se ha convertido en la herramienta estándar para el análisis de datos espaciales en investigación académica y práctica profesional.
Comprender la regresión espacial y su importancia
Los problemas de regresión en la geografía implican inherentemente ubicaciones geográficas, y las consecuencias de utilizar datos situacionales potencialmente incluyen dependencia espacial (autocorrelación espacial) y heterogeneidad o tendencias espaciales (no-estacionaridad). A diferencia de los modelos de regresión tradicionales que asumen la independencia entre las observaciones, la regresión espacial explica explícitamente que las observaciones cercanas a las otras en el espacio tienden a ser más similares que las distintas.
Como la primera ley de la geografía de Tobler dice: "Todo está relacionado con todo lo demás, pero las cosas cercanas están más relacionadas que las cosas distantes". Este principio fundamental basa todo análisis espacial y destaca por qué las técnicas de regresión estándar pueden producir resultados engañosos cuando se aplican a los datos espaciales. Las observaciones cercanas pueden ser pseudo-replicaciones en lugar de casos independientes, violando una suposición básica de la regresión de los mínimos cuadrados comunes (OLS).
Muchas preguntas de investigación de ciencias sociales dependen espacialmente, como los resultados de las votaciones, los precios de la vivienda, los mercados laborales, el comportamiento de protesta o las decisiones de migración. Cuando la autocorrelación espacial está presente en los residuos de regresión, indica la especificación de modelos y medios que no pueden confiarse los valores de p y las estimaciones de coeficientes.
Paquetes R esenciales para la regresión espacial
Antes de comenzar su análisis de regresión espacial, necesita instalar y cargar varios paquetes R clave. El ecosistema de análisis espacial en R ha evolucionado significativamente, con paquetes modernos que proporcionan una funcionalidad integral para las operaciones de datos espaciales y el modelado.
Paquetes básicos para el análisis espacial
Los paquetes importantes para las operaciones espaciales fundamentales incluyen sf para el manejo de datos espaciales, mapview y tmap para la visualización, y spdep para pesos y relaciones espaciales. El paquete sf se ha convertido en el estándar moderno para el manejo de datos espaciales vectoriales en R, reemplazando el paquete más antiguo p] con un enfoque más intuitivo y eficiente.
Para modelar la regresión espacial específicamente, necesitará el paquete spatialreg], que proporciona funciones para equilibrar los modelos de errores espaciales y de errores espaciales. El paquete spdep es esencial para diagnosticar la dependencia espacial y crear matrices de pesos espaciales. Instalar estos paquetes utilizando el siguiente código:
install.packages(c("sf", "spdep", "spatialreg", "tmap", "mapview"))
Una vez instalado, carga los paquetes al comienzo de su sesión R:
library(sf) library(spdep) library(spatialreg) library(tmap) library(mapview)
Preparación y carga de sus datos espaciales
La preparación adecuada de datos es la base del análisis de regresión espacial exitoso. Su conjunto de datos debe incluir tanto datos de atributo (las variables que desea analizar) como información espacial (coordinados o geometrías que definen las ubicaciones).
Requisitos para el formato de datos
Spatial data can come in various formats, with the most common being shapefiles (.shp), GeoJSON files (.geojson), and GeoPackage files (.gpkg). The sf package can read all these formats using the st_read() function. Here's how to load a shapefile:
spatial_data <- st_read("your_data.shp")
Para los archivos GeoJSON, la sintaxis es idéntica:
spatial_data <- st_read("your_data.geojson")
Limpieza de datos y validación
Antes de proceder con análisis, limpie a fondo su conjunto de datos para asegurar la calidad de los datos:
- Compruebe y manejar valores perdidos en geometrías espaciales y datos de atributo
- Quitar o corregir geometrías inválidas utilizando y
- Asegúrese de que todas las observaciones tengan datos completos para las variables que planea incluir en su modelo
- Verificar que no hay características espaciales duplicadas
- Compruebe los outliers que podrían influir indebidamente en los resultados de su regresión
Puedes comprobar los valores perdidos con:
summary(spatial_data) sum(is.na(spatial_data$your_variable))
Coordinate Reference Systems
Uno de los aspectos más críticos de la preparación de datos espaciales es asegurar que todos los conjuntos de datos usen el mismo sistema de referencia de coordenadas (CRS). CRS malmachado puede llevar a relaciones espaciales incorrectas y resultados de análisis inválidos.
st_crs(spatial_data)
Si necesita transformar sus datos a una función diferente de CRS, utilice la función . Por ejemplo, para transformarse en WGS84 (EPSG:4326):
spatial_data <- st_transform(spatial_data, crs = 4326)
Para el análisis que implica cálculos de distancia, es a menudo mejor utilizar un sistema de coordenadas proyectado (medido en metros o pies) en lugar de un sistema de coordenadas geográficas (medido en grados).
Explorador de Datos Espaciales y Visualización
La exploración visual es un primer paso esencial en el análisis de regresión espacial. Le ayuda a identificar patrones, detectar potenciales outliers, entender la distribución espacial de sus variables y formular hipótesis sobre relaciones espaciales.
Creación de mapas básicos
La forma más simple de visualizar sus datos espaciales es utilizar la función de la trama base:
plot(spatial_data["variable_name"])
Para visualizar más interactiva e informativa, utilice los paquetes tmap] o Mapview. El paquete tmap proporciona una gramática de enfoque gráfico similar a ggplot2:
tm_shape(spatial_data) +
tm_polygons("variable_name",
style = "quantile",
palette = "Blues",
title = "Your Variable") +
tm_layout(legend.outside = TRUE)
El paquete Mapview crea mapas interactivos que le permiten ampliar, pan y hacer clic en las características:
mapview(spatial_data, zcol = "variable_name")
Examinar las distribuciones variables
Antes de ajustar los modelos de regresión, examine las distribuciones estadísticas de sus variables. Cree histogramas, cuadros y estadísticas resumidas:
hist(spatial_data$dependent_variable, main = "Distribution of Dependent Variable", xlab = "Value") summary(spatial_data$dependent_variable)
Busque el estiércol, los outliers y si las transformaciones pueden ser necesarias. Las variables muy asfixiadas pueden beneficiarse de las transformaciones de raíz de log o cuadrado para satisfacer mejor las suposiciones de regresión.
Análisis de correlación
Examinar correlaciones entre sus variables independientes para comprobar la multicollinearidad, que puede causar problemas en el análisis de regresión:
cor(st_drop_geometry(spatial_data[, c("var1", "var2", "var3")]))
La función elimina la columna geometría espacial, dejando sólo los datos de atributo para el análisis de correlación.
Comprensión y Pruebas para la Autocorrelación Espacial
Antes de decidir si necesita regresión espacial, debe probar si la autocorrelación espacial está presente en sus datos o en los residuos de un modelo estándar de regresión OLS. La autocorrelación espacial se caracteriza por una correlación en una señal entre lugares cercanos en el espacio y es más compleja que la autocorrelación unidimensional porque es multidimensional y multidireccional.
Global Moran I Statistic
La Moran Global I es una medida de la agrupación general de datos espaciales. Moran's I cuantifica cuan similar es cada región con sus vecinos y promedios todas estas evaluaciones. La estadística va de aproximadamente -1 a +1, donde:
- Los valores significativamente por encima del valor esperado indican la autocorrelación espacial positiva o agrupación, que ocurre cuando las regiones vecinas tienden a tener valores similares
- Los valores significativamente inferiores al valor esperado indican la autocorrelación o dispersión espacial negativa, sucediendo cuando las regiones cercanas a las otras tienden a tener valores diferentes
- Los valores alrededor del valor esperado indican aleatoria, es decir, ausencia de patrón espacial
Pruebas Autocorrelación espacial en variables
Puede probar la autocorrelación espacial en una variable directamente utilizando la función del paquete spdep. Sin embargo, primero necesita crear una matriz de pesos espaciales (discutido en detalle en la siguiente sección):
# Create neighbors and weights (simplified example) neighbors <- poly2nb(spatial_data) weights <- nb2listw(neighbors) # Test for spatial autocorrelation moran.test(spatial_data$variable_name, weights)
Para la estadística de Global Moran, la hipótesis nula indica que el atributo que se analiza se distribuye aleatoriamente entre las características de su área de estudio. Cuando el valor p devuelto por esta herramienta es estadísticamente significativo, puede rechazar la hipótesis nula.
Pruebas Autocorrelación Espacial en Residuales de Regresividad
Es importante evaluar los residuos para la autocorrelación espacial, ya que se supone que son independientes, no correlacionados. Si los residuos están relacionados espacialmente con la autocorrelación, esto indica que el modelo es mal especificado. Primero, cabe un modelo estándar de regresión OLS:
ols_model <- lm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data)
Luego prueba los residuos para la autocorrelación espacial utilizando :
lm.morantest(ols_model, weights)
Si este test muestra una importante autocorrelación espacial en los residuos, es necesario utilizar métodos de regresión espacial en lugar de regresión estándar de la OLS.
Simulación de Monte Carlo para Pruebas de Significanza
La simulación de Monte Carlo es el método preferido para probar significación. La forma en que funciona es que los valores se asignan al azar a los polígonos y a la I de Moran se computa, repetidas veces para establecer una distribución de valores esperados, y el valor observado se compara con la distribución simulada.
moran_mc <- moran.mc(spatial_data$variable_name, weights, nsim = 999) moran_mc
El enfoque Monte Carlo es particularmente robusto porque no depende de las suposiciones distributivas y proporciona un valor p más fiable, especialmente para tamaños de muestra más pequeños.
Indicadores locales de la Asociación Espacial (LISA)
Los indicadores locales de la Asociación Espacial (LISA) están diseñados para proporcionar una indicación de la magnitud de agrupación espacial significativa de valores similares alrededor de cada observación. Mientras que el mundial Moran's I le da una estadística para todo el área de estudio, el análisis LISA identifica lugares específicos donde se producen agrupaciones o apalancamientos espaciales.
Puedes calcular que yo uso de Moran local:
local_moran <- localmoran_perm(spatial_data$variable_name, weights, nsim = 9999) head(local_moran)
LISA puede ayudar a identificar HH (valores altos rodeados de valores altos), LL (valores bajos rodeados de valores bajos), HL (valores altos rodeados de valores bajos), y LH (valores bajos rodeados de valores altos).Esta información es valiosa para entender patrones espaciales locales e identificar puntos de interés o puntos de frío en sus datos.
Creación de las pesas espaciales
Las matrices de pesos espaciales son fundamentales para el análisis de regresión espacial. Definen las relaciones espaciales entre las observaciones, respondiendo esencialmente a la pregunta: "¿Quiénes son los vecinos de cada observación?" La elección de pesos espaciales puede afectar significativamente sus resultados de análisis, por lo que es importante elegir un método apropiado para su pregunta de investigación y estructura de datos.
Pesos basados en la contigüidad
Los pesos basados en la contigüidad definen a los vecinos como unidades espaciales que comparten fronteras. Este enfoque se utiliza más comúnmente para datos de polígonos como los tratados censales, condados o países. Hay dos tipos principales de contigüidad:
- Queen contiguity: Los vecinos comparten cualquier punto límite, incluyendo esquinas (como el movimiento de la reina en ajedrez)
- Contiguidad de gancho: Los vecinos deben compartir un borde de límite, no sólo un rincón (como el movimiento del ladrón en ajedrez)
Crear vecinos basados en contigüidad usando la función :
# Queen contiguity (default) neighbors_queen <- poly2nb(spatial_data, queen = TRUE) # Rook contiguity neighbors_rook <- poly2nb(spatial_data, queen = FALSE) # Examine the neighbor structure summary(neighbors_queen)
El resumen le mostrará el número de regiones, la distribución de las conexiones vecinas, e identificar cualquier región sin vecinos (islas), que requieren un manejo especial.
Pesos basados en distancia
Los pesos basados en distancia definen a los vecinos basados en la proximidad dentro de un umbral de distancia especificado. Este enfoque es útil cuando desea capturar relaciones espaciales más allá de la adyacencia inmediata o cuando trabaja con datos de puntos.
# Get coordinates of centroids coords <- st_coordinates(st_centroid(spatial_data)) # K-nearest neighbors (e.g., 4 nearest neighbors) knn_neighbors <- knn2nb(knearneigh(coords, k = 4)) # Distance band (all neighbors within specified distance) distance_neighbors <- dnearneigh(coords, d1 = 0, d2 = 10000) # distance in map units
Al utilizar pesos basados en la distancia, asegúrese de que sus datos están en un sistema de coordenadas proyectado, por lo que las distancias se miden en unidades significativas (mímetros o pies) en lugar de grados.
Convertir vecinos en Pesos
Una vez que haya definido la estructura vecina, conviértela a una lista de pesos usando . Esta función le permite especificar cómo deben estandarizarse los pesos:
# Row-standardized weights (most common) weights_W <- nb2listw(neighbors_queen, style = "W") # Binary weights weights_B <- nb2listw(neighbors_queen, style = "B") # Variance-stabilizing coding weights_S <- nb2listw(neighbors_queen, style = "S")
Los pesos estandarizados en fila (estilo = "W") son más utilizados porque aseguran que los pesos para cada suma de observación a 1, haciendo la interpretación más sencilla. Los pesos binarios (estilo = "B") simplemente indican si las observaciones son vecinos (1) o no (0).
Manejo de las Islas y las Observaciones Desconectadas
Algunas observaciones pueden no tener vecinos bajo su definición elegida, creando "islas" en su matriz de pesos espaciales. Esto puede causar problemas en la regresión espacial. Usted puede identificar islas con:
which(card(neighbors_queen) == 0)
Si existen islas, usted tiene varias opciones: conectarlas a su vecino más cercano, utilizar un enfoque basado en la distancia en su lugar, o establecer el parámetro a TRUE en sus funciones de análisis (aunque esto debe hacerse con cautela).
Elegir entre el Lag espacial y los modelos de error espacial
Una vez que haya confirmado que la autocorrelación espacial está presente, es necesario decidir qué tipo de modelo de regresión espacial es más adecuado para sus datos. Los dos tipos principales son los modelos de lavado espacial y los modelos de error espacial, y representan conceptualizaciones fundamentalmente diferentes de los procesos espaciales.
Comprender los modelos de lag espacial
El modelo espacialmente laminado incorpora explícitamente la dependencia espacial agregando una variable "spacialmente lazada" y en el lado derecho de la ecuación de regresión, esencialmente diciendo que los valores de y en las áreas vecinas de observación es un predictor importante de y en cada área individual i.
La difusión espacial ocurre cuando las unidades espaciales proximadas son influenciadas directamente por sus vecinos, y viceversa. Esto representa un proceso espacial sustantivo donde el resultado en un lugar afecta directamente los resultados en los lugares vecinos. Por ejemplo, las tasas de delincuencia en un barrio pueden influir en las tasas de delincuencia en los barrios adyacentes a través de efectos de derrame.
El modelo de laca espacial toma la forma:
y = ρWy + Xβ + ε
donde ρ (rho) es el parámetro espacial autoregresivo, W es la matriz de pesos espaciales, X contiene las variables independientes, y ε es el término de error.
Comprender los modelos de error espacial
El modelo de error espacial trata la autocorrelación espacial como una molestia que debe ser abordada, lo que implica que la dependencia espacial observada no refleja un proceso verdaderamente espacial, sino simplemente el agrupamiento geográfico de las fuentes del comportamiento de interés, como los ciudadanos en los barrios adyacentes que favorezcan al mismo candidato no porque hablen con sus vecinos, sino porque los ciudadanos con ingresos similares tienden a agruparse geográficamente.
Si no se pueden contabilizar las fuentes atribucionales al incluirlas como variables explicativas, el modelo exhibirá dependencia espacial en los términos de error, que se puede modelar a través de un término de error espacialmente marcado. El modelo de error espacial es apropiado cuando la autocorrelación espacial resulta de variables omitidas que se agrupan espacialmente.
El modelo de error espacial toma la forma:
y = Xβ + u, donde u = λWu + ε
donde λ (lambda) es el parámetro espacial autoregresivo para el término de error.
Usando pruebas de multiplicador de Lagrange para la selección de modelos
Las pruebas de multiplicador Lagrange proporcionan herramientas para tomar una decisión sobre cuál de estos dos modelos es más apropiado. Estas pruebas se pueden realizar utilizando la función :
# Fit OLS model first ols_model <- lm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data) # Run Lagrange Multiplier tests lm.LMtests(ols_model, weights, test = "all")
La salida incluirá varias pruebas:
- LMlag: Tests for spatial lag dependence
- LMerr: Tests for spatial error dependence
- RLMlag: Prueba de LM robusta para la deriva (contando por error)
- RLMerr: Prueba de LM robusta para el error (contando por retraso)
Si tanto LMlag como LMerr son significativos, examine las versiones robustas. Elija el modelo de lag espacial si RLMlag es significativo y RLMerr no lo es, y elija el modelo de error espacial si RLMerr es significativo y RLMlag no lo es. Si ambos pruebas robustas son significativas, es posible que necesite considerar modelos más complejos o examinar cuidadosamente su especificación de modelo.
Modelos de lavado espacial de fijación
Una vez que haya determinado que un modelo de lag espacial es apropiado para sus datos, puede ajustarlo usando la función del paquete espacialreg. La estimación de la probabilidad máxima del modelo de lag espacial se lleva a cabo con la función lagsarlm(), con los argumentos requeridos siendo una fórmula de regresión, un conjunto de datos y un objeto de pesos espaciales listw.
Modelo básico de lag espacial sintaxis
La sintaxis para la fijación de un modelo de lag espacial es similar a la regresión estándar en R:
library(spatialreg) spatial_lag_model <- lagsarlm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data, listw = weights) summary(spatial_lag_model)
Interpretación de la producción de modelos de lag espacial
La salida sumaria incluirá varios componentes importantes:
- Rho (ρ): El lag espacial, una variable que mide la variable dependiente en los tractos definidos como circundantes a cada tracto en la matriz de pesos espaciales, utilizada como variable explicativa adicional para tener en cuenta adecuadamente el agrupamiento espacial
- Estimaciones de coeficiente: Los efectos de sus variables independientes
- Pruebas de significación: Incluyendo pruebas de relación de probabilidad, pruebas de z y pruebas de Wald
- Estadísticas de ajuste modelo: AIC, probabilidad de registro y otras medidas
Si el coeficiente estimado para el rho es tanto positivo como estadísticamente significativo, cuando la variable dependiente en los barrios circundantes aumenta, en promedio, así lo hace la variable dependiente en cada tracto, incluso cuando se ajusta para otras variables explicativas.
Medidas de impacto en el cálculo
Interpretar los efectos sustantivos de cada predictor en un modelo de lag espacial es mucho más complejo que en un modelo no espacial debido a la presencia del multiplicador espacial que vincula las variables independientes con los dependientes, y el efecto de un cambio en una variable independiente no es constante en todas las observaciones.
Para interpretar correctamente los coeficientes en un modelo de lag espacial, es necesario calcular las medidas de impacto utilizando la función :
impacts_lag <- impacts(spatial_lag_model, listw = weights, R = 999) summary(impacts_lag, zstats = TRUE)
Esto proporcionará tres tipos de impactos:
- Impactos directos: El efecto de un cambio en una variable independiente en una ubicación en la variable dependiente en esa misma ubicación
- Impactos indirectos: El efecto de un cambio en una variable independiente en un lugar en la variable dependiente en otros lugares (efectos de reflujo)
- Efectos totales: La suma de los impactos directos e indirectos
Estas medidas de impacto proporcionan una imagen completa de cómo los cambios en sus variables independientes afectan a la variable dependiente tanto local como a través de los derrames espaciales.
Modelos de error espacial de fijación
Cuando sus pruebas de diagnóstico indican que un modelo de error espacial es más apropiado, puede ajustarlo a la función del paquete espacialreg. La sintaxis es muy similar al modelo de lag espacial:
spatial_error_model <- errorsarlm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data, listw = weights) summary(spatial_error_model)
Interpretación del modelo de error espacial
En lugar de Rho, el parámetro de error de la deriva es Lambda, que es un lag en el error, y si es positivo y significativo en todas las pruebas, esto indica la necesidad de controlar la autocorrelación espacial en el error.
Los componentes clave de la salida son:
- Lambda (λ): El parámetro espacial autoregresivo para el término de error
- Estimaciones de coeficiente: Estas pueden interpretarse directamente, a diferencia del modelo de lavado espacial
- Pruebas de significación: Para los coeficientes y lambda
- Estadísticas de ajuste modelo: AIC, probabilidad de registro
A diferencia del modelo de lag espacial, no necesitamos correr impactos(), y por lo tanto los coeficientes pueden ser comparados directamente con los coeficientes OLS. Esto hace que la interpretación sea más sencilla, ya que los coeficientes representan el efecto directo de cada variable independiente en la variable dependiente, con la estructura de error espacial que representa la autocorrelación espacial en los residuos.
Comprobación para la autocorrelación espacial restante
Después de haber instalado un modelo de error espacial o espacial, es importante verificar que el modelo ha abordado adecuadamente la autocorrelación espacial. Puede probar los residuos de su modelo espacial:
# Extract residuals residuals_spatial <- residuals(spatial_error_model) # Test for remaining spatial autocorrelation moran.test(residuals_spatial, weights)
Si la prueba de Moran sobre los residuos ya no es significativa, su modelo espacial ha contado con éxito la autocorrelación espacial. Si queda una autocorrelación significativa, es posible que necesite reconsiderar su especificación modelo, añadir variables adicionales o explorar modelos espaciales más complejos.
Diagnósticos y Validación Modelo
Es esencial realizar diagnósticos de modelos completos para garantizar que su modelo de regresión espacial sea válido y fiable. Los modelos deben ser diagnosticados antes de informarlos, lo que implica examinar múltiples aspectos del rendimiento de los modelos.
Examinar Residuals
Incluso después de contabilizar la autocorrelación espacial, debe examinar los residuos para otros problemas potenciales:
# Histogram of residuals hist(residuals(spatial_lag_model), main = "Distribution of Residuals", xlab = "Residuals") # Q-Q plot to check normality qqnorm(residuals(spatial_lag_model)) qqline(residuals(spatial_lag_model)) # Plot residuals against fitted values plot(fitted(spatial_lag_model), residuals(spatial_lag_model), xlab = "Fitted Values", ylab = "Residuals") abline(h = 0, col = "red")
Busque patrones en los residuos que puedan indicar heteroskedasticidad, no linearidad o atípicos influyentes.
Residuales de Mapping
Crear un mapa de residuos puede revelar patrones espaciales que podrían no ser aparentes de pruebas estadísticas por sí solo:
# Add residuals to spatial data
spatial_data$residuals <- residuals(spatial_lag_model)
# Map the residuals
tm_shape(spatial_data) +
tm_polygons("residuals",
style = "jenks",
palette = "RdBu",
midpoint = 0,
title = "Model Residuals") +
tm_layout(legend.outside = TRUE)
Idealmente, los residuos no deben mostrar un patrón espacial claro. Los racimos de residuos altos o bajos sugieren que el modelo puede ser sistemáticamente sobre- o bajo predecir en ciertas áreas.
Comparación de la función del modelo
Compare su modelo de regresión espacial con el modelo de base de la OLS y potencialmente con especificaciones espaciales alternativas:
# Compare AIC values (lower is better) AIC(ols_model) AIC(spatial_lag_model) AIC(spatial_error_model) # Compare log-likelihoods logLik(ols_model) logLik(spatial_lag_model) logLik(spatial_error_model)
El modelo con el AIC más bajo y la probabilidad de log más alta generalmente proporciona el mejor ajuste a los datos, aunque también debe considerar la justificación e interpretación teórica.
Comprobación de Observaciones Influenciales
Identificar las observaciones que tienen una influencia desproporcionada en los resultados de tu modelo:
# Cook's distance for OLS model cooks_d <- cooks.distance(ols_model) plot(cooks_d, type = "h", main = "Cook's Distance") abline(h = 4/nrow(spatial_data), col = "red", lty = 2) # Identify influential observations influential 4/nrow(spatial_data)) print(influential)
Investigar observaciones influyentes para determinar si representan errores de datos, verdaderos outliers o casos importantes que su modelo debe acomodar.
Técnicas avanzadas de regresión espacial
Más allá de los modelos básicos de error espacial y espacial, varias técnicas avanzadas pueden abordar procesos espaciales y estructuras de datos más complejas.
Modelo espacial de Durbin
El modelo espacial Durbin (SDM) incluye tanto una variable dependiente de la etiqueta espacial como variables independientes de la etiqueta espacial, lo que permite un modelado más flexible de los derrames espaciales:
spatial_durbin_model <- lagsarlm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data, listw = weights, type = "mixed") summary(spatial_durbin_model)
Este modelo le permite probar si los efectos de derrame difieren en variables independientes y pueden proporcionar información sobre qué factores generan externalidades espaciales.
Regreso de peso geográfico
La regresión ponderada geográfica (GWR) permite que los coeficientes de regresión puedan variar en todo el espacio, abordando la heterogeneidad espacial en las relaciones. Aunque no estrictamente un modelo de regresión espacial en el mismo sentido que los modelos de retraso espacial o error, GWR es valioso cuando sospecha que las relaciones entre variables difieren en el área de estudio:
library(spgwr) # Determine optimal bandwidth bandwidth <- gwr.sel(dependent_var ~ independent_var1 + independent_var2, data = spatial_data, coords = st_coordinates(st_centroid(spatial_data))) # Fit GWR model gwr_model <- gwr(dependent_var ~ independent_var1 + independent_var2, data = spatial_data, coords = st_coordinates(st_centroid(spatial_data)), bandwidth = bandwidth)
Modelos de Grupo Espacial
Cuando usted tiene datos espaciales observados durante varios períodos de tiempo, los modelos de paneles espaciales combinan dimensiones espaciales y temporales. El paquete splm proporciona funciones para ajustar varias especificaciones de panel espacial:
library(splm) # Spatial panel lag model spatial_panel <- spml(dependent_var ~ independent_var1 + independent_var2, data = panel_data, listw = weights, model = "within", spatial.error = "none", lag = TRUE)
Resultados de presentación y presentación de informes
La presentación clara de los resultados de regresión espacial es esencial para comunicar sus hallazgos de manera efectiva a los públicos técnicos y no técnicos.
Creación de tablas de publicación-cualidad
Varios paquetes R pueden ayudarle a crear tablas de regresión profesional. El paquete Stargazer es particularmente útil para comparar múltiples modelos:
library(stargazer)
stargazer(ols_model, spatial_lag_model, spatial_error_model,
type = "text", # use "html" or "latex" for publication
title = "Comparison of Regression Models",
column.labels = c("OLS", "Spatial Lag", "Spatial Error"),
model.numbers = FALSE)
Para un formato de tabla más moderno, considere el paquete de maquetas:
library(modelsummary)
models <- list("OLS" = ols_model,
"Spatial Lag" = spatial_lag_model,
"Spatial Error" = spatial_error_model)
modelsummary(models,
stars = TRUE,
gof_map = c("nobs", "aic", "logLik"))
Visualización de los efectos espaciales
Los mapas son herramientas poderosas para comunicar los resultados de regresión espacial. Crear mapas que muestran:
- Valores observados de la variable dependiente
- Valores predecidos de su modelo
- Residuals (menos observados predicho)
- Impactos locales (para modelos de lavado espacial)
# Add predictions to spatial data
spatial_data$predicted <- fitted(spatial_lag_model)
# Create side-by-side maps
tm_shape(spatial_data) +
tm_polygons(c("dependent_var", "predicted"),
style = "quantile",
palette = "YlOrRd",
title = c("Observed", "Predicted")) +
tm_layout(legend.outside = TRUE)
Presentación de informes de resultados de regresión espacial
Al escribir los resultados de regresión espacial, asegúrese de incluir:
- Descripción de la matriz de pesos espaciales utilizada y justificación para la elección
- Resultados de las pruebas de diagnóstico para la autocorrelación espacial (Moran's I, LM pruebas)
- Comparación de modelos de OLS y regresión espacial
- Estimaciones de coeficiente con errores estándar y niveles de significación
- Para los modelos de lag espaciales, impactos directos, indirectos y totales
- Estadísticas modelo (AIC, probabilidad de log, R-squared si está disponible)
- Examen de diagnósticos residuales y validación modelo
- Mapas u otras visualizaciones de resultados clave
Pitfalls comunes y mejores prácticas
Uno de los aspectos más importantes de modelado es la selección variable, y un modelo mal especificado nunca va a ser bueno, no importa cuánto usted hace para corregir para la autocorrelación espacial. Aquí están las consideraciones clave para el análisis exitoso de regresión espacial:
Selección variable y especificación modelo
La autocorrelación espacial puede surgir de variables omitidas. Antes de recurrir a la regresión espacial, asegúrese de incluir todas las variables teóricamente relevantes en su modelo. Si la autocorrelación espacial persiste porque no hay datos disponibles o porque no tiene idea de qué variable buscar, puede intentar formular un modelo de regresión que controle la autocorrelación espacial.
Consideraciones de tamaño de muestra
La clase de características de entrada debe contener al menos 30 características, ya que los resultados no serán fiables con menos de 30 características. Los modelos de regresión espacial requieren tamaños de muestra adecuados para producir estimaciones estables, especialmente cuando se estiman los parámetros de autoregresividad espacial.
Elegir las pesas espaciales apropiadas
La elección de la matriz de pesos espaciales puede afectar significativamente sus resultados. Siempre justificar su elección basada en la teoría y la naturaleza de sus datos. Considere la prueba de múltiples especificaciones y análisis de sensibilidad de reporte para demostrar que sus conclusiones son robustas a diferentes definiciones de peso espacial.
Interpretación de la Causality
Modelos de regresión espacial, como todos los modelos de regresión, identifican asociaciones en lugar de relaciones causales. Tengan cuidado con las afirmaciones causales, en particular con modelos de lag espaciales donde la simultaneidad puede complicar la interpretación. La presencia de autocorrelación espacial no implica necesariamente un proceso espacial, puede simplemente reflejar variables omitidas que se agrupan espacialmente.
Tratar con Efectos de Edge
Las medidas globales pueden ser parcializadas por los efectos de bordes donde los componentes importantes del proceso espacial caen fuera del área de estudio. Tenga en cuenta que las observaciones en los bordes de su área de estudio pueden tener conjuntos vecinos incompletos, resultados potencialmente sesgosos. Considere si los límites de su área de estudio son apropiados para su pregunta de investigación.
Ejemplo práctico: flujo de trabajo completo
Aquí hay un ejemplo completo de trabajo que reúne todos los pasos discutidos en esta guía:
# Load required packages
library(sf)
library(spdep)
library(spatialreg)
library(tmap)
# 1. Load and prepare data
spatial_data <- st_read("your_data.shp")
spatial_data <- st_transform(spatial_data, crs = 32618) # UTM Zone 18N
# 2. Explore data
summary(spatial_data)
tm_shape(spatial_data) +
tm_polygons("dependent_var", style = "quantile", palette = "YlOrRd")
# 3. Create spatial weights
neighbors <- poly2nb(spatial_data, queen = TRUE)
weights <- nb2listw(neighbors, style = "W")
# 4. Fit OLS model and test for spatial autocorrelation
ols_model <- lm(dependent_var ~ independent_var1 + independent_var2,
data = spatial_data)
lm.morantest(ols_model, weights)
# 5. Run Lagrange Multiplier tests
lm.LMtests(ols_model, weights, test = "all")
# 6. Fit spatial lag model
spatial_lag_model <- lagsarlm(dependent_var ~ independent_var1 + independent_var2,
data = spatial_data,
listw = weights)
summary(spatial_lag_model)
# 7. Compute impacts
impacts_lag <- impacts(spatial_lag_model, listw = weights, R = 999)
summary(impacts_lag, zstats = TRUE)
# 8. Check residuals
moran.test(residuals(spatial_lag_model), weights)
# 9. Map residuals
spatial_data$residuals <- residuals(spatial_lag_model)
tm_shape(spatial_data) +
tm_polygons("residuals", style = "jenks", palette = "RdBu", midpoint = 0)
# 10. Compare models
AIC(ols_model, spatial_lag_model)
Recursos adicionales y aprendizaje ulterior
La regresión espacial es un campo rico y en evolución. Para profundizar su comprensión y mantenerse al día con las mejores prácticas, considere explorar estos recursos:
Recursos en línea
- R-Spatial - Recursos integrales para la ciencia de datos espaciales con R
- Ciencia de datos espaciales con R - Tutoriales y documentación para el análisis espacial
- Geocomputation with R - Libro en línea libre que cubre el análisis de datos espaciales
- Estadísticas espaciales para la ciencia de datos - Enfoques modernos para el análisis espacial
- Vista de la tarea CRAN: Análisis de datos espaciales - Lista completa de paquetes R para el análisis espacial
Paquetes de clave R
Mantenerse actualizado con los últimos desarrollos en estos paquetes esenciales:
- sf - Características simples para R, el estándar moderno para los datos espaciales vectoriales
- spdep - Dependencia espacial: esquemas de ponderación, estadísticas y modelos
- spatialreg - Análisis de regresión espacial
- tmap - Mapas temáticos en R
- Mapview - Vista interactiva de los datos espaciales
- spgwr - Regreso ponderado geográficamente
- splm - Modelos de datos de panel espacial
Lectura recomendada
Para fundaciones teóricas y técnicas avanzadas, consulte estos textos autorizados:
- Anselin, L. (1988). "Econometría espacial: Métodos y Modelos" - Texto clásico sobre econometría espacial
- Bivand, R., Pebesma, E., & Gómez-Rubio, V. (2013). "Aplicado análisis de datos espaciales con R" - Guía integral del análisis espacial en R
- LeSage, J., & Pace, R. K. (2009). "Introducción a la econometría espacial" - Tratamiento moderno de la regresión espacial
- Cressie, N. (1993). "Estadística para los datos espaciales" - Fundaciones teóricas de las estadísticas espaciales
Conclusión
La implementación de la regresión espacial en R implica un flujo de trabajo sistemático: la preparación y exploración de datos espaciales, la creación de matrices de pesos espaciales apropiados, la prueba de autocorrelación espacial, la selección entre el lag espacial y los modelos de error espacial, la fijación del modelo elegido y la validación completa de los resultados mediante cheques de diagnóstico.
La clave para un análisis exitoso de regresión espacial no es sólo en la competencia técnica con R, sino en la consideración reflexiva de los procesos espaciales subyacentes de sus datos. Siempre basa sus opciones metodológicas en teoría, valida cuidadosamente sus modelos, e interpreta los resultados en el contexto de los fenómenos espaciales y sustantivos que está estudiando. Siguiendo el flujo de trabajo completo esbozado en esta guía, usted estará bien equipado para realizar análisis de regresión espacial rigurosos que avancen en su comprensión de las relaciones espaciales complejas.
Recuerde que la regresión espacial es un área activa de desarrollo metodológico. Manténgase comprometido con la comunidad de investigación, mantenga sus paquetes R actualizados, y continúe aprendiendo sobre nuevas técnicas y mejores prácticas a medida que el campo evoluciona. La inversión en el desarrollo de estas habilidades pagará dividendos en la calidad y el impacto de su análisis de datos espaciales.