Come implementare la funzione K bivariata di Ripley?


9

L'immagine allegata mostra una fessura nella foresta con il pino rosso rappresentato da cerchi e il pino bianco rappresentato da croci. Sono interessato a determinare se esiste un'associazione positiva o negativa tra le due specie di pini (ovvero se stanno crescendo o meno nelle stesse aree). Sono a conoscenza di Kcross e Kmulti nel pacchetto R spazstat. Tuttavia, poiché ho 50 lacune da analizzare e ho più familiarità con la programmazione in Python di R, mi piacerebbe trovare un approccio iterativo usando ArcGIS e Python. Sono aperto anche alle soluzioni R.

Come posso implementare una funzione K bivariata di Ripley?

inserisci qui la descrizione dell'immagine


4
Per la tua seconda inchiesta, potresti trarre ispirazione da questa risposta . Il mescolamento delle etichette dovrebbe essere facile in Python. Per le statistiche spaziali in Python potresti voler guardare PySAL .
— MannyG

Risposte:


8

Dopo molte ricerche negli angoli posteriori della documentazione ESRI, ho concluso che non esiste un modo ragionevole di eseguire una funzione K bivariata di Ripley in Arcpy / ArcGIS. Tuttavia, ho trovato una soluzione utilizzando R:

# Calculates an estimate of the cross-type L-function for a multitype point pattern.
library(maptools)
library(spatstat)
library(sp)

# Subset certain areas within a points shapefile.  In this case, features are grouped by gap number
gap = 1

# Read the shapefile
sdata = readShapePoints("C:/temp/GapPoints.shp")  #Read the shapefile
data = sdata[sdata$SITE_ID == gap,]  # segregate only those points in the given cluster

# Get the convex hull of the study area measurements
gapdata = readShapePoints("C:/temp/GapAreaPoints_merged.shp")  #Read the shapefile that is used to estimate the study area boundary
data2 = gapdata[gapdata$FinalGap == gap,]  # segregate only those points in the given cluster
whole = coordinates(data2) # get just the coords, excluding other data
win = convexhull.xy(whole) # Convex hull is used to get the study area boundary
plot(win)

# Converting to PPP
points = coordinates(data) # get just the coords, excluding other data
ppp = as.ppp(points, win) # Convert the points into the spatstat format
ppp = setmarks(ppp, data$SPECIES) # Set the marks to species type YB or EH
summary(ppp) # General info about the created ppp object
plot(ppp) # Visually check the points and bounding area

# Plot the cross type L function
# Note that the red and green lines show the effects of different edge corrections
plot(Lcross(ppp,"EH","YB"))

# Use the Lcross function to test the spatial relationship between YB and EH
L <- envelope(ppp, Lcross, nsim = 999, i = "EH", j = "YB")
plot(L)

3
Inoltre, la libreria spatstat ha un'implementazione del bivariato di Ripley's K. Non è appropriato definire l'area di studio attraverso lo scafo convesso dei punti, vedere la funzione ripras e la letteratura citata.
— Andy W,

2
Si noti che si sta standardizzando l'aspettativa nulla intorno a zero e derivando così la statistica Besag-L.
— Jeffrey Evans,

6

Esiste uno strumento di script incorporato chiamato Analisi del cluster spaziale a distanza multipla (funzione Ripleys K) sotto il set di strumenti Statistiche spaziali - Analisi dei modelli in ArcToolbox. Puoi leggere il codice sorgente dello strumento se vai nelle sue proprietà e individua lo script utilizzato nella scheda Sorgente.


Qualche idea su come eseguire K come funzione bivariata in Arc, se possibile?
— Aaron

1
Sono sicuro che è possibile, ma non potrei dirti come farlo. Hai esaminato il codice sorgente per lo strumento integrato per vedere quali modifiche devono essere apportate?
— blah238,

Il codice sorgente sembra piuttosto intenso. Ho scelto di esplorare le soluzioni R.
— Aaron

3
Non mi preoccuperei davvero di provare a modificare il codice ArcGIS Python. È il codice spaghetti al massimo e non esegue il test di significatività corretto. Per problemi di processo in punti bivariati, è particolarmente importante eseguire un test di significatività Monte Carlo, disponibile in R con la funzione "inviluppo".
— Jeffrey Evans,

1
Grazie Jeffrey, non so cosa stavo pensando di raccomandare a chiunque di guardare il codice sorgente ESRI :)
— blah238
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.