Bagaimana cara mengimplementasikan fungsi K bivariat?

9

Gambar terlampir menunjukkan celah hutan dengan pinus merah diwakili sebagai lingkaran dan pinus putih diwakili sebagai persilangan. Saya tertarik untuk menentukan apakah ada hubungan positif atau negatif antara kedua spesies pohon pinus (yaitu apakah mereka tumbuh di daerah yang sama) atau tidak. Saya mengetahui Kcross dan Kmulti dalam paket spatstat R. Namun, karena saya memiliki 50 celah untuk dianalisis dan lebih akrab dengan pemrograman dalam python daripada R, saya ingin menemukan pendekatan berulang menggunakan ArcGIS dan python. Saya juga terbuka untuk solusi R.

Bagaimana saya bisa menerapkan fungsi K bivariat Ripley?

masukkan deskripsi gambar di sini

Harun
sumber
4
Untuk pertanyaan kedua Anda, Anda bisa mendapatkan inspirasi dari jawaban ini . Pengocokan label harus mudah dengan Python. Untuk statistik spasial dengan Python, Anda mungkin ingin melihat PySAL .
MannyG

Jawaban:

8

Setelah banyak mencari di sudut belakang dokumentasi ESRI, saya telah menyimpulkan bahwa tidak ada cara yang masuk akal menjalankan fungsi K bivariat Ripley di Arcpy / ArcGIS. Namun, saya telah menemukan solusi menggunakan 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)
Harun
sumber
3
Juga FYI perpustakaan spatstat memiliki implementasi bivariat Ripley's K. Tidak tepat untuk menentukan area studi melalui cembung poin, melihat fungsi ripras dan literatur yang dikutip.
Andy W
2
Perhatikan bahwa Anda menstandarkan ekspektasi nol di sekitar nol dan dengan demikian menurunkan statistik Besag-L.
Jeffrey Evans
6

Ada alat skrip built-in yang disebut Multi-Distance Spatial Cluster Analysis (Fungsi Ripleys K) di bawah Statistik Spatial - Menganalisis pola toolset di ArcToolbox. Anda dapat membaca kode sumber alat jika Anda masuk ke propertinya dan menemukan skrip yang digunakan di tab Source.

blah238
sumber
Adakah ide tentang bagaimana menjalankan K sebagai fungsi bivariat di Arc, jika memungkinkan?
Aaron
1
Saya yakin itu mungkin, saya tidak bisa memberi tahu Anda bagaimana melakukannya. Sudahkah Anda melihat kode sumber untuk alat bawaan untuk melihat modifikasi apa yang perlu dibuat?
blah238
Kode sumber terlihat cukup intens. Saya telah memilih untuk menjelajahi solusi R.
Aaron
3
Saya benar-benar tidak akan repot-repot mencoba memodifikasi kode Python ArcGIS. Ini adalah kode spageti terbaik dan tidak melakukan tes signifikansi yang benar. Untuk masalah proses titik bivariat, sangat penting untuk melakukan uji signifikansi Monte Carlo, yang tersedia di R dengan fungsi "menyelubungi".
Jeffrey Evans
1
Terima kasih Jeffrey, saya tidak tahu apa yang saya pikirkan merekomendasikan siapa pun melihat kode sumber ESRI :)
blah238