二変量リプリーのK関数を実装する方法?


9

添付画像は、赤松が円で表され、白松が十字で表された森林のギャップを示しています。私は2種類の松の木の間に正の関連があるのか​​負の関連があるのか​​(つまり、同じ地域で成長しているかどうか)を確認することに興味があります。R spatstatパッケージのKcrossとKmultiを知っています。ただし、分析するギャップが50あり、RよりPythonでのプログラミングに慣れているため、ArcGISとPythonを使用した反復的なアプローチを見つけたいと思います。また、Rソリューションも利用できます。

2変量リプリーのK関数を実装するにはどうすればよいですか?

ここに画像の説明を入力してください


4
2回目の調査では、この回答からインスピレーションを得ることができます。Pythonでは、ラベルの入れ替えは簡単です。Pythonの空間統計については、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
また、FYI spatstatライブラリには2変量RipleyのKの実装があります。点の凸包を介して調査範囲を定義することは不適切です。ripras関数と引用文献を参照してください。
アンディW

2
null期待値をゼロ付近で標準化しているため、Besag-L統計を導出していることに注意してください。
ジェフリーエヴァンス

6

ArcToolboxの [ 空間統計 - パターンの分析]ツールセットの下に、多距離空間クラスター分析(Ripleys K関数)と呼ばれる組み込みスクリプトツールがあります。ツールのプロパティに移動して[ソース]タブで使用されているスクリプトを見つけると、ツールのソースコードを読み取ることができます。


可能であれば、ArcでKを2変量関数として実行する方法についてのアイデアはありますか?
アーロン

1
それが可能だと私は確信していますが、それを行う方法をあなたに伝えることはできませんでした。組み込みツールのソースコードを見て、どのような変更が必要かを確認しましたか?
blah238

ソースコードはかなり強烈に見えます。私はRソリューションを探索することにしました。
アーロン

3
私は本当にArcGIS Pythonコードを変更しようとはしません。それはせいぜいスパゲッティコードであり、正しい有意性検定を実行しません。2変量点プロセス問題の場合、Rで「エンベロープ」関数を使用してモンテカルロ有意性検定を実行することが特に重要です。
ジェフリーエヴァンス

1
Jeffreyに感謝します
。ESRIの
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.