İki değişkenli Ripley'in K işlevi nasıl uygulanır?


9

Ekteki görüntü, daire olarak temsil edilen kızıl çam ve haçlar olarak temsil edilen beyaz çam ile bir orman boşluğunu göstermektedir. İki çam ağacı türü arasında pozitif veya negatif bir ilişki olup olmadığını belirlemekle ilgileniyorum (yani aynı alanlarda büyüyorlar mı yoksa büyüyorlar mı). R spatstat paketindeki Kcross ve Kmulti'nin farkındayım. Bununla birlikte, analiz etmek için 50 boşluğum olduğu ve python'da R'ye göre programlama hakkında daha fazla bilgi sahibi olduğum için ArcGIS ve python kullanarak yinelemeli bir yaklaşım bulmak istiyorum. Ayrıca R çözümlerine de açığım.

İki değişkenli bir Ripley'in K işlevini nasıl uygulayabilirim?

resim açıklamasını buraya girin


4
İkinci sorgunuz için, bu cevaptan biraz ilham alabilirsiniz . Python'da etiketlerin karıştırılması kolay olmalıdır. Python'daki uzamsal istatistikler için PySAL'a bakmak isteyebilirsiniz .
MannyG

Yanıtlar:


8

ESRI belgelerinin arka köşelerinde çok fazla arama yaptıktan sonra, Arcpy / ArcGIS'te iki değişkenli bir Ripley'in K işlevini çalıştırmanın makul bir yolu olmadığı sonucuna vardım. Ancak, R kullanarak bir çözüm buldum:

# 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
Ayrıca FYI spatstat kütüphanesi, iki değişkenli Ripley'in K uygulamasına sahiptir. Çalışma alanını noktaların dışbükey gövdesi aracılığıyla tanımlamak, ripra fonksiyonunu ve belirtilen literatüre bakmak uygun değildir .
Andy W

2
Sıfır beklentisini sıfır civarında standartlaştırdığınızı ve böylece Besag-L istatistiğini türettiğinizi unutmayın.
Jeffrey Evans

6

ArcToolbox'ta Mekansal İstatistikler - Kalıpları Analizleme araç seti altında Çok Mesafeli Uzamsal Küme Analizi (Ripleys K İşlevi) adlı yerleşik bir komut dosyası aracı vardır. Özelliklerine girip Kaynak sekmesinde kullanılan komut dosyasını bulursanız, aracın kaynak kodunu okuyabilirsiniz.


Mümkünse K'nın Arc'da iki değişkenli bir fonksiyon olarak nasıl çalıştırılacağı hakkında bir fikriniz var mı?
Aaron

1
Bunun mümkün olduğuna eminim, nasıl yapacağınızı söyleyemedim. Hangi değişikliklerin yapılması gerektiğini görmek için yerleşik aracın kaynak koduna baktınız mı?
blah238

Kaynak kodu oldukça yoğun görünüyor. R çözümlerini keşfetmeyi seçtim.
Aaron

3
Gerçekten ArcGIS Python kodunu değiştirmeye çalışırken rahatsız olmaz. En iyi ihtimalle spagetti kodudur ve doğru önem testi yapmaz. İki değişkenli nokta proses problemleri için, R'de "zarflama" fonksiyonu ile bulunan bir Monte Carlo önem testi yapmak özellikle önemlidir.
Jeffrey Evans

1
Teşekkürler Jeffrey, kimsenin ESRI kaynak koduna bakmasını tavsiye ettiğini düşündüğümü bilmiyorum :)
blah238
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.