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.