urban-geography-and-development
Stapsgewijze handleiding voor de implementatie van ruimtelijke regressie met R
Table of Contents
Ruimtelijke regressie is een krachtige statistische techniek die wordt gebruikt om ruimtelijk gecorreleerde gegevens te analyseren, zodat onderzoekers kunnen begrijpen hoe geografische factoren verschillende verschijnselen beïnvloeden, variërend van milieupatronen tot stedelijke ontwikkeling, resultaten voor de volksgezondheid en economische trends. Deze uitgebreide gids biedt een gedetailleerde, stapsgewijze benadering van de implementatie van ruimtelijke regressie met behulp van R, een populaire open-source statistische programmeertaal die het standaard instrument is geworden voor ruimtelijke dataanalyse in academisch onderzoek en professionele praktijk.
Begrijpen van ruimtelijke regressie en het belang ervan
Regressieproblemen in de geografie hebben inherent te maken met geografische locaties, en de gevolgen van het gebruik van locatiegegevens kunnen ruimtelijke afhankelijkheid (spatiale autocorrelatie) en ruimtelijke heterogeniteit of trends (niet-stationarity) omvatten. In tegenstelling tot traditionele regressiemodellen die onafhankelijkheid tussen waarnemingen aannemen, is ruimtelijke regressie expliciet het feit dat waarnemingen dicht bij elkaar in de ruimte meer gelijkaardig zijn dan die verder uit elkaar.
Zoals Toblers eerste wet van geografie stelt: "Alles is gerelateerd aan alles, maar in de buurt zijn dingen meer verwant dan verre dingen." Dit fundamentele principe ligt ten grondslag aan alle ruimtelijke analyse en benadrukt waarom standaard regressietechnieken misleidende resultaten kunnen opleveren wanneer toegepast op ruimtelijke gegevens. In de buurt observaties kunnen pseudo-replicaten eerder dan onafhankelijke gevallen, waarbij een kernaanname van de gewone minst vierkanten (OLS) regressie wordt geschonden.
Veel vragen over sociaalwetenschappelijk onderzoek zijn ruimtelijk afhankelijk, zoals stemresultaten, huizenprijzen, arbeidsmarkten, protestgedrag of migratiebeslissingen. Wanneer ruimtelijke autocorrelatie aanwezig is in regressieresten, geeft het model des te meer aan en betekent het dat p-waarden en coëfficiëntschattingen niet te vertrouwen zijn. Ruimtelijke regressiemodellen bieden het juiste kader om deze kwesties aan te pakken.
Essentiële R-pakketten voor ruimtelijke regressie
Voordat u begint met uw ruimtelijke regressieanalyse, moet u meerdere belangrijke R-pakketten installeren en laden. Het ecosysteem voor ruimtelijke analyse in R is aanzienlijk geëvolueerd, met moderne pakketten die uitgebreide functionaliteit bieden voor ruimtelijke data-operaties en modellering.
Kernpakketten voor ruimtelijke analyse
Belangrijke pakketten voor fundamentele ruimtelijke activiteiten zijn sf voor ruimtelijke gegevensverwerking, kaartweergave en tmap voor visualisatie, en spdep voor ruimtelijke gewichten en relaties. Het sf pakket is de moderne standaard geworden voor het verwerken van ruimtelijke vectorgegevens in R, ter vervanging van het oudere sp] pakket met een intuïtievere en efficiëntere aanpak.
Voor ruimtelijke regressiemodellering specifiek, heb je het spatialreg pakket nodig, dat functies biedt voor het passen van ruimtelijke vertragings- en ruimtelijke foutmodellen. Het spdep pakket is essentieel voor het diagnosticeren van ruimtelijke afhankelijkheid en het creëren van ruimtelijke gewichtenmatrices. Installeer deze pakketten met behulp van de volgende code:
install.packages(c("sf", "spdep", "spatialreg", "tmap", "mapview"))
Eenmaal geïnstalleerd, laad de pakketten aan het begin van uw R-sessie:
library(sf) library(spdep) library(spatialreg) library(tmap) library(mapview)
Uw ruimtelijke gegevens voorbereiden en laden
Een goede gegevensvoorbereiding is de basis van een succesvolle ruimtelijke regressieanalyse. Uw dataset moet zowel attribuutgegevens (de variabelen die u wilt analyseren) als ruimtelijke informatie (coördinaten of geometrieën die locaties definiëren) bevatten.
Vereisten inzake gegevensformat
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")
Voor GeoJSON-bestanden is de syntax identiek:
spatial_data <- st_read("your_data.geojson")
Gegevensreiniging en -validering
Voordat u verder gaat met analyse, maak uw dataset grondig schoon om de gegevenskwaliteit te garanderen:
- Controleren op ontbrekende waarden in zowel ruimtelijke geometrieën als attribuutgegevens en deze verwerken
- Ongeldige geometrien verwijderen of corrigeren met behulp van en
- Zorg ervoor dat alle observaties volledige gegevens hebben voor de variabelen die u van plan bent in uw model op te nemen
- Controleer of er geen dubbele ruimtelijke kenmerken zijn
- Controleer op uitschieters die uw regressieresultaten onnodig kunnen beïnvloeden
U kunt controleren op ontbrekende waarden met:
summary(spatial_data) sum(is.na(spatial_data$your_variable))
Coördinatenreferentiesystemen
Een van de meest kritische aspecten van ruimtelijke gegevensvoorbereiding is dat alle datasets hetzelfde coördinatenreferentiesysteem (CRS) gebruiken. Mismatched CRS kan leiden tot onjuiste ruimtelijke relaties en ongeldige analyseresultaten. Controleer de CRS van uw gegevens met:
st_crs(spatial_data)
Als u uw gegevens moet omzetten naar een ander CRS, gebruik dan de functie . Bijvoorbeeld om te transformeren naar WGS84 (EPSG:4326):
spatial_data <- st_transform(spatial_data, crs = 4326)
Voor analyse met afstandsberekeningen is het vaak beter om een geprojecteerd coördinatensysteem (gemeten in meters of voeten) te gebruiken dan een geografisch coördinatensysteem (gemeten in graden). Kies een projectie die geschikt is voor uw studiegebied.
Verkennende ruimtelijke gegevensanalyse en visualisatie
Visuele exploratie is een essentiële eerste stap in ruimtelijke regressieanalyse. Het helpt je patronen te identificeren, potentiële uitschieters te detecteren, de ruimtelijke verdeling van je variabelen te begrijpen en hypothesen over ruimtelijke relaties te formuleren.
Basiskaarten aanmaken
De eenvoudigste manier om je ruimtelijke gegevens te visualiseren is door de basisplotfunctie te gebruiken:
plot(spatial_data["variable_name"])
Voor meer interactieve en informatieve visualisaties, gebruik de tmap of mapview pakketten. Het tmap pakket biedt een grammatica van grafische benadering vergelijkbaar met ggplot2:
tm_shape(spatial_data) +
tm_polygons("variable_name",
style = "quantile",
palette = "Blues",
title = "Your Variable") +
tm_layout(legend.outside = TRUE)
Het mapview-pakket maakt interactieve kaarten waarmee u kunt inzoomen, paneren en klikken op functies:
mapview(spatial_data, zcol = "variable_name")
Onderzoek van variabele verdelingen
Voordat regressiemodellen worden toegepast, moet u de statistische verdelingen van uw variabelen bekijken. Maak histograms, boxplots en overzichtsstatistieken:
hist(spatial_data$dependent_variable, main = "Distribution of Dependent Variable", xlab = "Value") summary(spatial_data$dependent_variable)
Zoek naar schuinheid, uitschieters, en of transformaties nodig kunnen zijn. Zeer scheefstaande variabelen kunnen profiteren van log- of vierkant wortel transformaties om beter te voldoen aan regressie aannames.
Concordantietabel
Onderzoek correlaties tussen uw onafhankelijke variabelen om te controleren op multicollineairheid, die problemen kan veroorzaken bij regressieanalyse:
cor(st_drop_geometry(spatial_data[, c("var1", "var2", "var3")]))
De functie verwijdert de ruimtelijke geometriekolom, waardoor alleen de attribuutgegevens voor correlatieanalyse worden achtergelaten.
Begrip en testen voor ruimtelijke autocorrelatie
Voordat je beslist of je ruimtelijke regressie nodig hebt, moet je testen of ruimtelijke autocorrelatie aanwezig is in je gegevens of in de rest van een standaard OLS regressiemodel. Ruimtelijke autocorrelatie wordt gekenmerkt door een correlatie in een signaal tussen nabijgelegen locaties in de ruimte en is complexer dan eendimensionale autocorrelatie omdat het multidimensionaal en multidirectionele is.
Global Moran's I Statistic
De I van Moran is een maat voor de totale clustering van ruimtelijke gegevens. Moran's I geeft aan hoe gelijkaardig elke regio is met zijn buren en gemiddelden al deze beoordelingen. De statistiek varieert van ongeveer -1 tot +1, waarbij:
- Waarden die aanzienlijk boven de verwachte waarde liggen wijzen op positieve ruimtelijke autocorrelatie of clustering, die optreden wanneer naburige regio's over het algemeen vergelijkbare waarden hebben
- Waarden aanzienlijk onder de verwachte waarde wijzen op negatieve ruimtelijke autocorrelatie of dispersie, die plaatsvindt wanneer gebieden dicht bij elkaar hebben meestal verschillende waarden
- Waarden rond de verwachte waarde geven aan dat er sprake is van willekeur, dat wil zeggen, afwezigheid van ruimtelijk patroon
Testen van ruimtelijke autocorrelatie in variabelen
U kunt de ruimtelijke autocorrelatie testen in een variabele direct met behulp van de functie uit het spdep pakket. Echter, u moet eerst een ruimtelijke gewichtenmatrix maken (gediscusseerd in detail in de volgende sectie):
# Create neighbors and weights (simplified example) neighbors <- poly2nb(spatial_data) weights <- nb2listw(neighbors) # Test for spatial autocorrelation moran.test(spatial_data$variable_name, weights)
Voor de statistieken van Global Moran's I, stelt de nulhypothese dat het geanalyseerde kenmerk willekeurig verdeeld wordt over de functies in je studiegebied. Wanneer de p-waarde die door dit hulpmiddel wordt teruggegeven statistisch significant is, kun je de nulhypothese verwerpen.
Testen van ruimtelijke autocorrelatie in regressieresten
Het is belangrijk restresten te evalueren voor ruimtelijke autocorrelatie, omdat deze geacht worden onafhankelijk te zijn, niet gecorreleerd. Als de restjes ruimtelijk autocorrelerend zijn, geeft dit aan dat het model verkeerd is gespecificeerd. Eerst past een standaard OLS regressiemodel:
ols_model <- lm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data)
Test dan de reststoffen op ruimtelijke autocorrelatie met :
lm.morantest(ols_model, weights)
Als deze test significante ruimtelijke autocorrelatie in de reststoffen laat zien, moet je ruimtelijke regressiemethoden gebruiken in plaats van standaard OLS regressie.
Monte Carlo Simulatie voor Significantie Testing
Monte Carlo simulatie is de voorkeursmethode voor het testen van betekenis. De manier waarop het werkt is dat de waarden willekeurig worden toegewezen aan de polygonen en Moran's I wordt berekend, meerdere malen herhaald om een verdeling van de verwachte waarden te bepalen, en de waargenomen waarde wordt vergeleken met de gesimuleerde distributie.
moran_mc <- moran.mc(spatial_data$variable_name, weights, nsim = 999) moran_mc
De Monte Carlo-benadering is bijzonder robuust omdat deze niet afhankelijk is van distributiehypothesen en een betrouwbaarder p-waarde biedt, vooral voor kleinere monstergroottes.
Lokale indicatoren van de Ruimtelijke Vereniging (LISA)
Lokale indicatoren van de Ruimtelijke Vereniging (LISA) zijn ontworpen om een indicatie te geven van de omvang van significante ruimtelijke clustering van vergelijkbare waarden rond elke waarneming. Terwijl Moran's I wereldwijd één statistiek geeft voor het gehele studiegebied, identificeert LISA-analyse specifieke locaties waar clustering of ruimtelijke uitschieters voorkomen.
Je kunt de lokale Moran's berekenen met behulp van:
local_moran <- localmoran_perm(spatial_data$variable_name, weights, nsim = 9999) head(local_moran)
LISA kan helpen bij het identificeren van HH (hoge waarden omgeven door hoge waarden), LL (lage waarden omgeven door lage waarden), HL (hoge waarden omringd door lage waarden), en LH (lage waarden omringd door hoge waarden). Deze informatie is waardevol voor het begrijpen van lokale ruimtelijke patronen en het identificeren van hotspots of koudevlekken in uw gegevens.
Ruimtelijke gewichten Matrices aanmaken
Ruimtelijke gewichten matrices zijn fundamenteel voor ruimtelijke regressieanalyse. Ze definiëren de ruimtelijke relaties tussen waarnemingen, in wezen beantwoordend aan de vraag: "Wie zijn de buren van elke observatie?" De keuze van ruimtelijke gewichten kan significant invloed hebben op uw analyseresultaten, dus is het belangrijk om een methode te kiezen die geschikt is voor uw onderzoeksvraag en datastructuur.
Gewichten op basis van besmetting
Contiguity-gebaseerde gewichten definiëren buren als ruimtelijke eenheden die grenzen delen. Deze benadering wordt het meest gebruikt voor veelhoekgegevens zoals volkstellings-, county's of landen. Er zijn twee belangrijke soorten van contiguïteit:
- Koninginnencontualiteit: Buren delen elk grenspunt, inclusief hoeken (zoals de koningin in schaken)
- Rookcontiguiteit: Buren moeten een grensrand delen, niet alleen een hoek (zoals de schaakbeweging van de toren)
Maak op contiguïteit gebaseerde buren met behulp van de functie :
# 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)
De samenvatting toont u het aantal regio's, de verdeling van de burenverbindingen, en identificeren regio's zonder buren (eilanden), die speciale behandeling vereisen.
Afstands-gewogen gewichten
Afstandsgewichten definiëren buren op basis van nabijheid binnen een bepaalde afstandsdrempel. Deze benadering is handig wanneer u ruimtelijke relaties wilt vastleggen die verder gaan dan onmiddellijke adjacentie of wanneer u met puntgegevens werkt.
# 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
Zorg ervoor dat uw gegevens bij het gebruik van gewichten op afstand in een geprojecteerd coördinatensysteem zitten, zodat afstanden worden gemeten in betekenisvolle eenheden (meters of voeten) in plaats van graden.
Omzetten van buren naar gewichten
Zodra u de structuur van de buren hebt gedefinieerd, zet u het om naar een gewichtenlijst met . Deze functie geeft u aan hoe de gewichten gestandaardiseerd moeten worden:
# 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")
Rij-gestandaardiseerde gewichten (stijl = "W") worden het meest gebruikt omdat ze ervoor zorgen dat de gewichten voor elke waarneming som tot 1, waardoor interpretatie eenvoudiger. Binaire gewichten (stijl = "B") gewoon aangeven of waarnemingen zijn buren (1) of niet (0).
Gebruik van eilanden en niet-verbonden waarnemingen
Sommige waarnemingen kunnen geen buren hebben onder uw gekozen definitie, waardoor "eilanden" in uw ruimtelijke gewichtenmatrix worden gecreëerd. Dit kan problemen veroorzaken in ruimtelijke regressie. U kunt eilanden identificeren met:
which(card(neighbors_queen) == 0)
Als eilanden bestaan, heb je verschillende opties: verbind ze met hun naaste buurman, gebruik in plaats daarvan een afstandsgebaseerde benadering, of stel de parameter in op TRUE in je analysefuncties (hoewel dit voorzichtig moet gebeuren).
Kiezen tussen ruimtelijke lag en ruimtelijke foutmodellen
Zodra je bevestigd hebt dat ruimtelijke autocorrelatie aanwezig is, moet je beslissen welk type ruimtelijke regressiemodel het meest geschikt is voor je data. De twee belangrijkste types zijn ruimtelijke vertragingsmodellen en ruimtelijke foutmodellen, en ze vertegenwoordigen fundamenteel verschillende conceptualisaties van ruimtelijke processen.
Ruimtelijke Lag-modellen begrijpen
Het ruimtelijk gelag model bevat expliciet ruimtelijke afhankelijkheid door een "spatially laged" variabele y toe te voegen aan de rechterkant van de regressievergelijking, waarbij in wezen wordt gezegd dat de waarden van y in de aangrenzende observatiegebieden i een belangrijke voorspeller is van y op elk individueel gebied i.
Ruimtelijke diffusie gebeurt wanneer ruimtelijk proximate eenheden direct worden beïnvloed door hun buren, en vice versa. Dit vertegenwoordigt een inhoudelijke ruimtelijk proces waarbij de uitkomst op één locatie rechtstreeks gevolgen heeft voor de uitkomsten in naburige locaties. Bijvoorbeeld, criminaliteitscijfers in één buurt kunnen de criminaliteitscijfers in aangrenzende buurten beïnvloeden door spillover effecten.
Het ruimtelijke-lagmodel heeft de vorm:
y = ρWy + Xβ + ε
waarbij ρ (rho) de ruimtelijke autoregressieve parameter is, W de ruimtelijke gewichtenmatrix is, X de onafhankelijke variabelen bevat en ε de foutterm is.
Inzicht in ruimtelijke foutmodellen
Het ruimtelijke foutmodel behandelt ruimtelijke autocorrelatie als een overlast die moet worden aangepakt, wat impliceert dat de waargenomen ruimtelijke afhankelijkheid niet een echt ruimtelijk proces weerspiegelt, maar alleen de geografische clustering van de bronnen van het gedrag van de interesse, zoals burgers in aangrenzende wijken die dezelfde kandidaat bevoordelen niet omdat ze met hun buren praten, maar omdat burgers met vergelijkbare inkomens geografisch een cluster hebben.
Als attributiebronnen niet kunnen worden verantwoord door ze als verklarende variabelen op te nemen, zal het model ruimteafhankelijkheid tonen in de fouttermen, die gemodelleerd kunnen worden via een ruimtelijk gelagde foutterm. Het ruimtelijke foutmodel is geschikt wanneer ruimtelijke autocorrelatie resulteert uit weggelaten variabelen die zelf ruimtelijk geclusterd zijn.
Het ruimtelijke foutmodel heeft de vorm:
y = Xβ + u, waarbij u = λWu + ε
waarbij λ (lambda) de ruimtelijke autoregressieve parameter is voor de foutterm.
Met behulp van Lagrange Multiplier Tests voor Modelselectie
De Lagrange Multiplier-tests bieden hulpmiddelen om te helpen bij het bepalen welke van deze twee modellen het meest geschikt is. Deze tests kunnen worden uitgevoerd met behulp van de functie :
# 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")
De output zal verschillende tests omvatten:
- LMlag: Tests for spatial lag dependance
- LMerr: Tests for spatial error dependance
- RLMlag: Robuuste LM-test voor vertraging (rekening houdend met foutmelding)
- RLMerr: Robuuste LM-test voor fout (rekening houdend met vertraging)
Als zowel LMlag als LMerr significant zijn, bekijk dan de robuuste versies. Kies het ruimtelijke vertragingsmodel als RLMlag significant is en RLMerr niet, en kies het ruimtelijke foutmodel als RLMerr significant is en RLMlag niet. Als beide robuuste tests significant zijn, moet u mogelijk meer complexe modellen overwegen of uw modelspecificatie zorgvuldig onderzoeken.
Past op ruimtelijk lagmodel
Zodra je hebt vastgesteld dat een ruimtelijk vertragingsmodel geschikt is voor je gegevens, kun je het aanpassen met behulp van de functie uit het ruimtelijkreg pakket. Maximale waarschijnlijkheid schatting van het ruimtelijke vertragingsmodel wordt uitgevoerd met de lagsarlm() functie, met vereiste argumenten is een regressie formule, een dataset en een listw ruimtelijke gewichten object.
Basis Spatial Lag Model Syntax
De syntaxis voor het passen van een ruimtelijk lag model is vergelijkbaar met de standaard regressie in R:
library(spatialreg) spatial_lag_model <- lagsarlm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data, listw = weights) summary(spatial_lag_model)
Vertolking van de Spatial Lag Model Output
De samenvatting van de output zal verschillende belangrijke componenten omvatten:
- Rho (ρ): De ruimtelijke vertraging, een variabele die de afhankelijke variabele meet in de traktaten gedefinieerd als de omgeving van elk traject in de ruimtelijke gewichtenmatrix, gebruikt als een aanvullende verklarende variabele om op passende wijze rekening te houden met ruimtelijke clustering
- Coëfficiënte schattingen: De effecten van uw onafhankelijke variabelen
- Significantietests : Inclusief de kansverhoudingstests, z-tests en Wald-tests
- Model fit statistics: AIC, log-likelithiciteit en andere maatregelen
Als de geschatte coëfficiënt voor rho zowel positief als statistisch significant is, wanneer de afhankelijke variabele in de omliggende buurten gemiddeld toeneemt, doet de afhankelijke variabele in elk deel, zelfs bij het aanpassen voor andere verklarende variabelen.
Berekening van de impactmaatregelen
Het interpreteren van de inhoudelijke effecten van elke voorspeller in een ruimtelijk vertragingsmodel is veel complexer dan in een niet-ruimtelijk model vanwege de aanwezigheid van de ruimtelijke multiplier die de onafhankelijke variabelen met de afhankelijke verbindt, en het effect van een verandering in een onafhankelijke variabele is niet constant in alle waarnemingen.
Om coëfficiënten in een ruimtelijk vertragingsmodel correct te interpreteren, moet je impactmetingen berekenen met behulp van de functie :
impacts_lag <- impacts(spatial_lag_model, listw = weights, R = 999) summary(impacts_lag, zstats = TRUE)
Dit zal drie soorten effecten opleveren:
- Directe effecten: Het effect van een verandering in een onafhankelijke variabele op één locatie op de afhankelijke variabele op dezelfde locatie
- Indirecte effecten: Het effect van een verandering in een onafhankelijke variabele op één locatie op de afhankelijke variabele op andere locaties (spillovereffecten)
- Totale effecten : De som van directe en indirecte effecten
Deze impactmetingen geven een volledig beeld van hoe veranderingen in je onafhankelijke variabelen de afhankelijke variabele zowel lokaal als via ruimtelijke spillovers beïnvloeden.
Inbouwen van ruimtelijke foutmodellen
Wanneer uw diagnostische tests aangeven dat een ruimtelijk foutmodel geschikter is, kunt u het aanpassen met behulp van de functie uit het ruimtelijkreg pakket. De syntaxis lijkt sterk op het ruimtelijke vertragingsmodel:
spatial_error_model <- errorsarlm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data, listw = weights) summary(spatial_error_model)
Vertolking van de uitvoer van het ruimtelijk foutmodel
In plaats van Rho is de parameter voor vertragingsfout Lambda, wat een vertraging is op de fout, en als het positief en significant is op alle testen, geeft dit aan dat de noodzaak om te controleren voor ruimtelijke autocorrelation in de fout.
De belangrijkste componenten van de output zijn:
- Lambda (λ): De ruimtelijke autoregressieve parameter voor de foutterm
- Coëfficiënt schattingen: Deze kunnen direct worden geïnterpreteerd, in tegenstelling tot het ruimtelijke-lagmodel.
- Significantietests: Voor zowel coëfficiënten als lambda
- Model fit statistieken: AIC, log-likelithiciteit
In tegenstelling tot het ruimtelijke vertragingsmodel hoeven we geen effecten te draaien(), en dus kunnen de coëfficiënten direct vergeleken worden met de OLS coëfficiënten. Dit maakt interpretatie eenvoudiger, omdat de coëfficiënten het directe effect van elke onafhankelijke variabele op de afhankelijke variabele vertegenwoordigen, waarbij de ruimtelijke foutstructuur de ruimtelijke autocorrelatie in de restjes vermeldt.
Controleren op resterende ruimtelijke autocorrelatie
Na het aanbrengen van een ruimtelijke vertraging of ruimtelijke foutmodel, is het belangrijk om te controleren of het model de ruimtelijke autocorrelatie adequaat heeft aangepakt. U kunt de reststoffen van uw ruimtelijke model testen:
# Extract residuals residuals_spatial <- residuals(spatial_error_model) # Test for remaining spatial autocorrelation moran.test(residuals_spatial, weights)
Als de Moran's I test op de restjes niet langer significant is, heeft uw ruimtelijke model met succes de ruimtelijke autocorrelatie verwerkt. Als er nog significante autocorrelatie is, moet u mogelijk uw modelspecificatie heroverwegen, extra variabelen toevoegen of complexere ruimtelijke modellen verkennen.
Modeldiagnose en validatie
Grondige modeldiagnostiek zijn essentieel om ervoor te zorgen dat uw ruimtelijke regressiemodel geldig en betrouwbaar is. Modellen moeten worden gediagnosticeerd voordat ze worden gerapporteerd, en dit houdt in dat meerdere aspecten van modelprestaties worden onderzocht.
Onderzoek naar reststoffen
Zelfs na het rapporteren van ruimtelijke autocorrelatie, moet u reststoffen onderzoeken voor andere potentiële problemen:
# 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")
Kijk naar patronen in de restjes die heteroskedasticity, non-lineairiteit, of invloedrijke uitschieters kunnen aangeven.
Restants van het in kaart brengen
Het maken van een kaart van reststoffen kan ruimtepatronen onthullen die niet alleen uit statistische tests kunnen worden afgeleid:
# 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)
Idealiter zouden residuen geen duidelijk ruimtelijk patroon moeten vertonen. Clusters van hoge of lage reststoffen suggereren dat het model systematisch over- of onder-voorspellend kan zijn in bepaalde gebieden.
Vergelijking van de prestaties van het model
Vergelijk uw ruimtelijke regressiemodel met het baseline OLS model en mogelijk met alternatieve ruimtelijke specificaties:
# 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)
Het model met de laagste AIC en hoogste log-likelithiteit biedt over het algemeen de beste pasvorm voor de gegevens, hoewel je ook theoretische rechtvaardiging en interpreteerbaarheid moet overwegen.
Controleren op influentiële waarnemingen
Identificeer waarnemingen die een onevenredige invloed hebben op uw modelresultaten:
# 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)
Onderzoek invloedrijke waarnemingen om te bepalen of ze gegevensfouten, echte uitschieters, of belangrijke gevallen die uw model moet voldoen vertegenwoordigen.
Geavanceerde ruimtelijke regressietechnieken
Naast basismodellen voor ruimtelijke vertraging en ruimtelijke fout kunnen verschillende geavanceerde technieken complexere ruimtelijke processen en datastructuren aanpakken.
Ruimtelijk Durbin Model
Het ruimtelijke Durbin Model (SDM) omvat zowel een ruimtelijk slepende afhankelijke variabele als ruimtelijk gelagde onafhankelijke variabelen, waardoor een flexibeler modellering van ruimtelijke spillover mogelijk is:
spatial_durbin_model <- lagsarlm(dependent_var ~ independent_var1 + independent_var2, data = spatial_data, listw = weights, type = "mixed") summary(spatial_durbin_model)
Dit model stelt u in staat om te testen of de spillover effecten verschillen tussen onafhankelijke variabelen en inzichten kunnen geven in welke factoren ruimtelijke externe factoren genereren.
Geografisch gewogen regressie
Geografisch gewogen regressie (GWR) laat regressiecoëfficiënten toe om te variëren tussen ruimte en heterogeniteit van ruimte in relaties. Hoewel niet strikt een ruimtelijk regressiemodel in dezelfde zin als ruimtelijke vertraging of foutmodellen, GWR is waardevol wanneer u vermoedt dat relaties tussen variabelen verschillen tussen uw studiegebied:
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)
Modellen van ruimtelijke panelen
Wanneer ruimtelijke gegevens over meerdere tijdsperioden worden waargenomen, combineren ruimtelijke panelmodellen ruimtelijke en temporale dimensies. Het splmpakket biedt functies voor het aanpassen van verschillende ruimtelijke paneelspecificaties:
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)
Presentatie en rapportage van resultaten
Duidelijke presentatie van ruimtelijke regressieresultaten is essentieel voor het effectief communiceren van uw bevindingen aan zowel technisch als niet-technisch publiek.
Publicatie-kwaliteitstabellen maken
Verschillende R-pakketten kunnen u helpen professionele regressietabellen te maken. Het Stargazer-pakket is bijzonder nuttig voor het vergelijken van meerdere modellen:
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)
Voor meer moderne tafelopmaak, zie het modelsamenvatting pakket:
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"))
Ruimtelijke effecten visualiseren
Kaarten zijn krachtige tools voor het communiceren van ruimtelijke regressieresultaten. Maak kaarten met:
- Waargenomen waarden van de afhankelijke variabele
- Voorspelde waarden van uw model
- Resten (geobserveerd minus voorspeld)
- Lokale effecten (voor modellen voor ruimtelijke vertraging)
# 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)
Rapportage van resultaten van ruimtelijke regressie
Bij het schrijven van ruimtelijke regressie resultaten, moet u opnemen:
- Beschrijving van de gebruikte ruimtelijke gewichtenmatrix en motivering van de keuze
- Resultaten van diagnostische tests voor ruimtelijke autocorrelatie (Moran I, LM-tests)
- Vergelijking van OLS en ruimtelijke regressiemodellen
- Coëfficiënt schatting met standaardfouten en significantieniveaus
- Voor ruimtelijke-lagmodellen, directe, indirecte en totale effecten
- Model fit statistieken (AIC, log-likelithood, R-kwadraat indien beschikbaar)
- Discussie over de resterende diagnostiek en modelvalidatie
- Kaarten of andere visualisaties van belangrijke resultaten
Gemeenschappelijke valkuilen en beste praktijken
Een van de belangrijkste aspecten van modelleren is variabele selectie, en een verkeerd gespecificeerd model zal nooit goed zijn, ongeacht hoeveel je doet om te corrigeren voor ruimtelijke autocorrelatie. Hier zijn belangrijke overwegingen voor succesvolle ruimtelijke regressie analyse:
Variabele selectie en modelspecificatie
Ruimtelijke autocorrelatie kan ontstaan uit weggelaten variabelen. Voordat je naar ruimtelijke regressie gaat, zorg ervoor dat je alle theoretisch relevante variabelen in je model hebt opgenomen. Als ruimtelijke autocorrelatie aanhoudt omdat er geen gegevens beschikbaar zijn of omdat je geen idee hebt naar welke variabele je moet zoeken, kun je proberen een regressiemodel te formuleren dat de ruimtelijke autocorrelatie regelt.
Overwegingen betreffende de steekproefgrootte
De input-functieklasse moet ten minste 30 kenmerken bevatten, aangezien de resultaten niet betrouwbaar zijn met minder dan 30 kenmerken. Ruimtelijke regressiemodellen vereisen voldoende steekproefgroottes om stabiele schattingen te produceren, vooral bij het schatten van ruimtelijke autoregressieve parameters.
Het kiezen van geschikte ruimtelijke gewichten
De keuze van de ruimtelijke gewichtenmatrix kan uw resultaten aanzienlijk beïnvloeden. Altijd uw keuze rechtvaardigen op basis van theorie en de aard van uw gegevens. Overweeg het testen van meerdere specificaties en rapportage gevoeligheidsanalyses om aan te tonen dat uw conclusies robuust zijn voor verschillende ruimtelijke gewichtsdefinities.
Tolken van causaliteit
Ruimtelijke regressiemodellen identificeren, zoals alle regressiemodellen, associaties in plaats van causale relaties. Wees voorzichtig met causale claims, vooral met ruimtelijke vertragingsmodellen waar simultaneiteit interpretatie kan compliceren. De aanwezigheid van ruimtelijke autocorrelatie impliceert niet noodzakelijkerwijs een ruimtelijk proces.Het kan alleen maar de weggelaten variabelen weerspiegelen die ruimtelijk geclusterd zijn.
Omgaan met Randeffecten
Globale maatregelen kunnen worden beïnvloed door randeffecten waar belangrijke ruimtelijke procescomponenten buiten het studiegebied vallen. Wees ervan bewust dat waarnemingen aan de randen van uw studiegebied mogelijk onvolledige buursets hebben, mogelijk bevooroordeelde resultaten. Overweeg of uw studiegebiedgrenzen geschikt zijn voor uw onderzoeksvraag.
Praktisch voorbeeld: volledige workflow
Hier is een compleet voorbeeld workflow die alle stappen samenbrengt die in deze gids besproken worden:
# 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)
Aanvullende middelen en verder leren
Ruimtelijke regressie is een rijk en evoluerend veld. Om uw begrip te verdiepen en actueel te blijven met beste praktijken, overwegen deze bronnen te verkennen:
Online bronnen
- R-ruimtelijk - Uitgebreide bron voor ruimtelijke gegevenswetenschap met R
- Ruimtelijke datawetenschap met R - Tutorials en documentatie voor ruimtelijke analyse
- Geocomputatie met R - Gratis online boek over ruimtelijke gegevensanalyse
- Ruimtelijke statistiek voor datawetenschap - Moderne benaderingen van ruimtelijke analyse
- CRAN Taakweergave: Analyse van ruimtelijke gegevens - Uitgebreide lijst van R-pakketten voor ruimtelijke analyse
Belangrijke R-pakketten
Blijf op de hoogte van de laatste ontwikkelingen in deze essentiële pakketten:
- sf - Eenvoudige eigenschappen voor R, de moderne standaard voor ruimtelijke vectorgegevens
- spdep - Ruimtelijke afhankelijkheid: wegingsregelingen, statistieken en modellen
- spatialreg - Ruimtelijke regressieanalyse
- tmap - Thematische kaarten in R
- mapview - Interactieve weergave van ruimtelijke gegevens
- spgwr - geografisch gewogen regressie
- splm - Datamodellen voor ruimtelijke paneelgegevens
Aanbevolen lezen
Voor theoretische stichtingen en geavanceerde technieken, raadpleeg deze gezaghebbende teksten:
- Anselin, L. (1988). "Ruimte Econometrics: Methods and Models" - Klassieke tekst over ruimtelijke econometrics
- Bivand, R., Pebesma, E., & Gómez-Rubio, V. (2013). "Toegepaste ruimtelijke gegevensanalyse met R" - Uitgebreide gids voor ruimtelijke analyse in R
- LeSage, J., & Pace, R. K. (2009). "Introductie tot Ruimtelijke Econometrie" - Moderne behandeling van ruimtelijke regressie
- Cressie, N. (1993). "Statistisch overzicht van ruimtelijke gegevens" - Theoretische grondslagen van ruimtelijke statistiek
Conclusie
De ruimtelijke regressie in R omvat een systematische workflow: het voorbereiden en verkennen van ruimtelijke gegevens, het creëren van geschikte ruimtelijke gewichten matrices, het testen van ruimtelijke autocorrelatie, het selecteren van ruimtelijke vertragings- en ruimtelijke foutmodellen, het aanpassen van het gekozen model en het grondig valideren van resultaten door middel van diagnostische controles. Het beheersen van deze stappen stelt onderzoekers in staat om ruimtelijke afhankelijkheden te ontdekken en hun analyse van geografisch gekoppelde gegevens te verbeteren op verschillende gebieden, waaronder stedenbouw, epidemiologie, milieuwetenschappen, economie en sociale wetenschappen.
De sleutel tot een succesvolle ruimtelijke regressieanalyse ligt niet alleen in technische bekwaamheid met R, maar ook in een doordachte afweging van de ruimtelijke processen die aan uw gegevens ten grondslag liggen. U moet altijd uw methodologische keuzes in theorie baseren, uw modellen zorgvuldig valideren en resultaten interpreteren in de context van de ruimtelijke en inhoudelijke fenomenen die u bestudeert. Door de uitgebreide workflow in deze gids te volgen, zult u goed uitgerust zijn om rigoureuze ruimtelijke regressieanalyses uit te voeren die het begrip van complexe ruimtelijke relaties in uw onderzoeksveld vooruit helpen.
Onthoud dat ruimtelijke regressie een actief gebied van methodologische ontwikkeling is. Blijf betrokken bij de onderzoeksgemeenschap, houd je R-pakketten op de hoogte en blijf leren over nieuwe technieken en beste praktijken naarmate het veld evolueert. De investering in het ontwikkelen van deze vaardigheden zal dividenden opleveren in de kwaliteit en impact van je ruimtelijke data analyse.