이변 량 리플리의 K 함수를 구현하는 방법?


9

첨부 된 이미지는 빨간색 소나무가 원으로 표시되고 흰색 소나무가 십자가로 표시되어있는 숲 간격을 보여줍니다. 나는 두 종의 소나무 사이에 긍정적이거나 부정적인 연관성이 있는지 (즉, 같은 지역에서 자라는 지 아닌지) 결정하고 싶습니다. R spatstat 패키지의 Kcross 및 Kmulti를 알고 있습니다. 그러나 분석 할 간격이 50 개이며 R보다 파이썬 프로그래밍에 더 익숙하기 때문에 ArcGIS와 python을 사용하여 반복적 인 접근 방식을 찾고 싶습니다. 나는 또한 R 솔루션에 열려 있습니다.

이변 량 리플리의 K 함수를 어떻게 구현할 수 있습니까?

여기에 이미지 설명을 입력하십시오


4
두 번째 질문에 대해서는 이 답변 에서 영감을 얻을 수 있습니다 . 파이썬에서는 레이블을 쉽게 섞을 수 있어야합니다. 파이썬의 공간 통계의 경우 PySAL 을보고 싶을 수 있습니다 .
MannyG

답변:


8

ESRI 문서의 뒷부분에서 많은 검색을 한 후에 Arcpy / ArcGIS에서 이변 량 Ripley의 K 함수를 실행하는 합리적인 방법이 없다고 결론을 내 렸습니다. 그러나 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
또한 spatstat 라이브러리에는 2 변량 Ripley 's K가 구현되어 있습니다. 점의 볼록 껍질을 통해 연구 영역을 정의하는 것은 부적절합니다. ripras 기능 및 인용 문헌을 참조하십시오 .
Andy W

2
0에 대한 널 기대 값을 표준화하여 Besag-L 통계량을 도출합니다.
Jeffrey Evans

6

ArcToolbox 의 공간 통계 - 분석 패턴 툴셋 아래에 Multi-Distance Spatial Cluster Analysis (Ripleys K Function) 라는 내장 스크립트 툴이 있습니다. 속성으로 이동하여 소스 탭에서 사용 된 스크립트를 찾으면 도구의 소스 코드를 읽을 수 있습니다.


가능하다면 K를 이변 량 함수로 K를 실행하는 방법에 대한 아이디어가 있습니까?
Aaron

1
나는 그것이 가능하다고 확신하지만 어떻게 해야하는지 말할 수 없었습니다. 내장 도구의 소스 코드를보고 수정해야 할 사항이 있습니까?
blah238

소스 코드는 꽤 강렬 해 보입니다. R 솔루션을 탐색하기로 선택했습니다.
Aaron

3
ArcGIS Python 코드를 수정하려고 애 쓰지 않을 것입니다. 그것은 스파게티 코드이며 기껏해야 올바른 유의성 검정을 수행하지 않습니다. 이변 량 점 ​​공정 문제의 경우 R에서 "봉투"기능으로 제공되는 Monte Carlo 유의성 검정을 수행하는 것이 특히 중요합니다.
Jeffrey Evans

1
고맙습니다 Jeffrey, 나는 ESRI 소스 코드를 보라고 추천하는 사람이 무엇인지 모르겠다 :)
blah238
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.