一様なランダムフィールドがないため、すべてのデータを一度に分析しようとすると、問題をスローするために選択した統計の仮定に違反します。データがマークされたポイントプロセス(つまり、各ツリーの場所に関連付けられた直径または高さ)であるかどうかは、投稿からわかりません。このデータがマークされたポイントプロセスを表していない場合、Moran's-Iをどのように適用したかわかりません。データが空間位置のみを表す場合、Ripley's-KをBesag-L変換とともに使用して、ゼロでのnull期待値を標準化することをお勧めします。これにより、クラスタリングのマルチスケール評価が可能になります。データに関連する値がある場合、最適なオプションはローカルMoran's-I(LISA)です。実際に両方の統計で調べます。選択に関係なく、有効な結果を生成するには、個々のサイトをループする必要があります。ビルトインレッドウッド苗木データセットを使用したリプリーK /ベサグLのモンテカルロシミュレーション用のRコードの例を次に示します。これを変更してサイトをループし、サイトごとにグラフを作成するのはかなり簡単です。
# ADD REQUIRED PACKAGES
require(sp)
require(spatstat)
options(scipen=5)
# USE REDWOOD SAPLING DATASET
spp <- SpatialPoints(coords(redwood))
###################################################
###### START BESAG'S-L MONTE CARLO ANALYSUS ######
###################################################
# CREATE CONVEX HULL FOR ANALYSIS WINDOW
W=ripras(coordinates(spp))
# COERCE TO spatstat ppp OBJECT
spp.ppp=as.ppp(coordinates(spp), W)
plot(spp.ppp)
# ESTIMATE BANDWIDTH
area <- area.owin(W)
lambda <- spp.ppp$n/area
ripley <- min(diff(W$xrange), diff(W$yrange))/4
rlarge <- sqrt(1000/(pi * lambda))
rmax <- min(rlarge, ripley)
bw <- seq(0, rmax, by=rmax/10)
# CALCULATE PERMUTED CROSS-K AND PLOT RESULTS
Lenv <- envelope(spp.ppp, fun="Kest", r=bw, i="1", j="2", nsim=99, nrank=5,
transform=expression(sqrt(./pi)-bw), global=TRUE)
plot(Lenv, main="Besag's-L", xlab="Distance", ylab="L(r)", legend=F, col=c("white","black","grey","grey"),
lty=c(1,2,2,2), lwd=c(2,1,1,1) )
polygon( c(Lenv$r, rev(Lenv$r)), c(Lenv$lo, rev(Lenv$hi)), col="lightgrey", border="grey")
lines(supsmu(bw, Lenv$obs), lwd=2)
lines(bw, Lenv$theo, lwd=1, lty=2)
legend("topleft", c(expression(hat(L)(r)), "Simulation Envelope", "theo"), pch=c(-32,22),
col=c("black","grey"), lty=c(1,0,2), lwd=c(2,0,2), pt.bg=c("white","grey"))