Spatstat:不均匀的 Lcross 导致奇怪的情节,尽管根据样方计数测试不均匀的点模式
Spatstat: Inhomogeneous Lcross leads to strange plot, despite inhomogeneous point pattern according to quadrat count tests
我不确定点模式分析的有效性我正在尝试使用具有模拟包络线的非齐次 L 交叉函数来测试两种类型的点之间的空间关联。模拟包络与观察数据值的关系图看起来很奇怪(非常大的模拟值),它表明抑制而不是聚类(我希望聚类看点模式图)。
我有一个点图案,其中包含 150 平方米(5 x 10 米)地块中的树木和幼苗。四个绘图角的坐标包含在数据的第 4 和第 5 列中。
数据:
Species UTM.E UTM.N Plot.UTM.E Plot.UTM.N
tree 4002027.599 5501253.964 4002024.175 5501253.558
tree 4002027.599 5501254.66 4002033.956 5501251.478
tree 4002028.536 5501254.592 4002027.293 5501268.23
tree 4002032.155 5501252.43 4002037.075 5501266.151
tree 4002033.586 5501253.409
tree 4002033.692 5501253.512
tree 4002033.1 5501253.958
tree 4002032.485 5501264.136
tree 4002032.144 5501264.748
tree 4002030.003 5501264.156
tree 4002030.241 5501266.473
tree 4002029.094 5501267.435
tree 4002028.704 5501265.775
seedling 4002030.41 5501252.891
seedling 4002030.412 5501252.9
seedling 4002030.83 5501252.977
seedling 4002029.896 5501252.863
seedling 4002029.745 5501253.161
seedling 4002028.376 5501252.949
seedling 4002028.681 5501252.579
seedling 4002028.374 5501252.339
seedling 4002028.09 5501254.159
seedling 4002026.928 5501255.562
seedling 4002026.557 5501255.224
seedling 4002026.815 5501255.986
seedling 4002025.22 5501255.444
seedling 4002024.608 5501254.13
seedling 4002025.102 5501254.298
seedling 4002025.482 5501254.06
seedling 4002025.081 5501254.004
seedling 4002025.1 5501253.905
seedling 4002024.644 5501253.774
seedling 4002026.475 5501256.743
seedling 4002026.158 5501256.234
seedling 4002028.481 5501258.382
seedling 4002028.995 5501257.457
seedling 4002029.313 5501257.7
seedling 4002029.4 5501256.325
seedling 4002029.378 5501255.91
seedling 4002029.518 5501256.314
seedling 4002028.519 5501256.774
seedling 4002028.495 5501256.468
seedling 4002030.388 5501256.809
seedling 4002030.701 5501256.626
seedling 4002029.037 5501260.088
seedling 4002027.834 5501262.373
seedling 4002028.002 5501262.844
seedling 4002028.299 5501262.517
seedling 4002028.186 5501262.239
seedling 4002028.735 5501262.656
seedling 4002028.93 5501262.677
seedling 4002029.239 5501263.083
seedling 4002029.744 5501263.277
seedling 4002029.095 5501263.152
seedling 4002028.777 5501265.856
seedling 4002030.527 5501266.125
seedling 4002031.215 5501266.118
seedling 4002031.316 5501264.917
seedling 4002031.027 5501262.104
seedling 4002032.464 5501263.263
seedling 4002032.824 5501262.688
seedling 4002032.394 5501254.205
seedling 4002032.394 5501254.192
seedling 4002033.091 5501253.509
seedling 4002031.179 5501254.413
seedling 4002031.094 5501253.614
seedling 4002031.084 5501253.45
seedling 4002030.944 5501253.069
我有兴趣使用类型间 L 函数 (Lcross) 测试树木和幼苗之间的空间关联。在测试之前,我使用样方计数检查了点过程的同质性:
library(spatstat)
#setwd and read file
setwd()
file <- read.csv("tree seeds example.csv",header=TRUE)
#create marked point process with window bounded by plot corners
#window
x <- file$Plot.UTM.E[1:4]
y <- file$Plot.UTM.N[1:4]
w <- owin(poly=list(x=c(x[4],x[3],x[1],x[2]),y=c(y[4],y[3],y[1],y[2])))
#create point process with coordinates for each point and marks for trees vs. seedlings
points <- ppp(file$UTM.E,file$UTM.N,w,marks=file$Species)
#get window edges
e <- edges(w)
#rotate window to 90 degrees (thanks E. Rubak)
a<- angles.psp(e)
points.rotate <- rotate(points, -a[1])
#examine point pattern
plot(points.rotate)
#do quadrat count test and report p-value
M <- quadrat.test(points.rotate,nx=3,ny=3)
p <- M$p.value
p # extremely small p-value rejects null hypothesis of homogeneity
因为我发现这个点模式看起来不均匀(在视觉上和通过样方计数),我决定使用具有模拟包络线的不均匀 "Lcross" 函数来测试树木和幼苗之间的空间关联。
我将只研究 1、2、3 和 4 米的滞后,因为我的地块面积很小。我 运行 999 次模拟,目视检查结果图,并使用 Baddeley 等人的方法计算双侧检验的 p 值。 2014.
#set vector of lag distances to examine for spatial association
r.vec <- c(0,1,2,3,4) #meters
#inhomogeneous Lcross function because q test supports inhomogeneity
inhom <- envelope(points,fun=Lcross.inhom,r=r.vec,funargs=list("tree","seedling"),
nsim=999,correction="isotropic",savefuns=TRUE)
plot(inhom)
#get p-val for 4 m lag, according to Baddeley et al. 2014 "On tests of
#spatial patterns based on simulation envelopes"
#equation for two-sided test: "2*min(j+1,m+1-j)/(m+1)
m <- 999 # number of sims
obs <- inhom$obs[5] #observed value for lag 5
sims <- attr(inhom,"simfuns") # get simulation values
lag5sims <- sims[5,] #get simulation values only for lag 5
lag5sims <- as.matrix(lag5sims) #change to matrix
lag5sims <- lag5sims[,2:1000] #drop first r value
j <- sum(lag5sims>obs)
2*min(j+1,m+1-j)/(m+1) # get result of significant inhibition (because j is large)
计算出的模拟包络线的高值非常大,我觉得情节不对。此外,我使用 Baddeley 等人的方法在 4 米滞后距离处发现了显着的负空间关联。 2014. 但是,查看点模式图,似乎在 4 米处,幼苗和树木之间可能存在正空间关联,或者至少不是极端负关联。当我 运行 使用 homogeneous Lcross 函数的相同代码时,我实际上在 4 米处发现了显着的正关联。
Large simulation envelope using the inhomogeneous Lcross function
Visually, it seems like there should be positive association at higher lag distances
这里使用非齐次Lcross函数是不合适的,还是我使用不正确?
非常感谢您花时间阅读一个很长的问题并提供任何帮助。
只是一个简短的回答,因为在我的时区已经晚了。
您没有使用非齐次空模型进行模拟。您只是根据 envelope.ppp
:
的文档模拟两个独立的 homogeneous 泊松过程(一个用于树木,一个用于幼苗)
If Y is a point pattern (an object of class "ppp") and simulate=NULL,
then we generate nsim simulations of Complete Spatial Randomness (i.e.
nsim simulated point patterns each being a realisation of the uniform
Poisson point process) with the same intensity as the pattern Y. (If Y
is a multitype point pattern, then the simulated patterns are also
given independent random marks; the probability distribution of the
random marks is determined by the relative frequencies of marks in Y.)
您可以通过添加参数savepatterns = TRUE
将模拟模式保存在envelope.ppp
中,然后您可以通过
提取它们
pat <- attr(inhom, "simpatterns")
如果您通过 plot(as.solist(pat[1:9])
绘制(其中一些)这些,您会发现它们是同质的并且看起来与您的原始模式完全不同,因此它们也会导致非常不同的 Lcross.inhom
函数。解决此问题的一种方法是在拟合模型上使用 ppm
和 运行 envelope
将模型拟合到数据(发送到 envelope.ppm
)。您总共只有很少的点,尤其是很少的树,因此对树木强度的估计非常不确定,并且可能对使用的带宽敏感。你真的需要小心你在这里做什么...
示例代码的问题是,如果 X
是点模式,envelope(X, .....)
执行 完全随机性测试 .
要在存在空间不均匀性的情况下检验 clustering/inhibition,零假设应该是一个不均匀的泊松过程。您需要以某种方式估计两种类型点的非均匀强度函数,然后根据这些强度生成模拟点模式。这里有两种方法(如果X
是你的点模式):
核平滑:首先通过D <- density(split(X))
估计原始数据中每一类点的强度。现在可以通过 Y <- rmpoispp(D, types=names(D))
生成零假设的模拟实现。我们希望在 envelope
命令中发生这种情况,所以只需要
envelope(X, Lcross.inhom,
simulate=expression(rmpoispp(D, types=names(D))))
.
参数 simulate
指定应对此表达式求值以生成每个模拟点模式。
使用模型:首先将泊松点过程模型拟合到观测数据,例如fit <- ppm(X ~ polynom(x,y,3))
。然后做
envelope(fit, Lcross.inhom, lambdaX=fit)
。
由于第一个参数是 ppm
对象,因此由 envelope.ppm
处理。这将从拟合的泊松模型生成模拟实现,并将计算每个实现的非齐次 L 交叉函数。参数 lambdaX
传递给 Kcross.inhom
;请参阅 ?Kcross.inhom
以了解其解释方式。
有关完整详细信息,请参阅 the spatstat book 的第 10 章。
我不确定点模式分析的有效性我正在尝试使用具有模拟包络线的非齐次 L 交叉函数来测试两种类型的点之间的空间关联。模拟包络与观察数据值的关系图看起来很奇怪(非常大的模拟值),它表明抑制而不是聚类(我希望聚类看点模式图)。
我有一个点图案,其中包含 150 平方米(5 x 10 米)地块中的树木和幼苗。四个绘图角的坐标包含在数据的第 4 和第 5 列中。
数据:
Species UTM.E UTM.N Plot.UTM.E Plot.UTM.N
tree 4002027.599 5501253.964 4002024.175 5501253.558
tree 4002027.599 5501254.66 4002033.956 5501251.478
tree 4002028.536 5501254.592 4002027.293 5501268.23
tree 4002032.155 5501252.43 4002037.075 5501266.151
tree 4002033.586 5501253.409
tree 4002033.692 5501253.512
tree 4002033.1 5501253.958
tree 4002032.485 5501264.136
tree 4002032.144 5501264.748
tree 4002030.003 5501264.156
tree 4002030.241 5501266.473
tree 4002029.094 5501267.435
tree 4002028.704 5501265.775
seedling 4002030.41 5501252.891
seedling 4002030.412 5501252.9
seedling 4002030.83 5501252.977
seedling 4002029.896 5501252.863
seedling 4002029.745 5501253.161
seedling 4002028.376 5501252.949
seedling 4002028.681 5501252.579
seedling 4002028.374 5501252.339
seedling 4002028.09 5501254.159
seedling 4002026.928 5501255.562
seedling 4002026.557 5501255.224
seedling 4002026.815 5501255.986
seedling 4002025.22 5501255.444
seedling 4002024.608 5501254.13
seedling 4002025.102 5501254.298
seedling 4002025.482 5501254.06
seedling 4002025.081 5501254.004
seedling 4002025.1 5501253.905
seedling 4002024.644 5501253.774
seedling 4002026.475 5501256.743
seedling 4002026.158 5501256.234
seedling 4002028.481 5501258.382
seedling 4002028.995 5501257.457
seedling 4002029.313 5501257.7
seedling 4002029.4 5501256.325
seedling 4002029.378 5501255.91
seedling 4002029.518 5501256.314
seedling 4002028.519 5501256.774
seedling 4002028.495 5501256.468
seedling 4002030.388 5501256.809
seedling 4002030.701 5501256.626
seedling 4002029.037 5501260.088
seedling 4002027.834 5501262.373
seedling 4002028.002 5501262.844
seedling 4002028.299 5501262.517
seedling 4002028.186 5501262.239
seedling 4002028.735 5501262.656
seedling 4002028.93 5501262.677
seedling 4002029.239 5501263.083
seedling 4002029.744 5501263.277
seedling 4002029.095 5501263.152
seedling 4002028.777 5501265.856
seedling 4002030.527 5501266.125
seedling 4002031.215 5501266.118
seedling 4002031.316 5501264.917
seedling 4002031.027 5501262.104
seedling 4002032.464 5501263.263
seedling 4002032.824 5501262.688
seedling 4002032.394 5501254.205
seedling 4002032.394 5501254.192
seedling 4002033.091 5501253.509
seedling 4002031.179 5501254.413
seedling 4002031.094 5501253.614
seedling 4002031.084 5501253.45
seedling 4002030.944 5501253.069
我有兴趣使用类型间 L 函数 (Lcross) 测试树木和幼苗之间的空间关联。在测试之前,我使用样方计数检查了点过程的同质性:
library(spatstat)
#setwd and read file
setwd()
file <- read.csv("tree seeds example.csv",header=TRUE)
#create marked point process with window bounded by plot corners
#window
x <- file$Plot.UTM.E[1:4]
y <- file$Plot.UTM.N[1:4]
w <- owin(poly=list(x=c(x[4],x[3],x[1],x[2]),y=c(y[4],y[3],y[1],y[2])))
#create point process with coordinates for each point and marks for trees vs. seedlings
points <- ppp(file$UTM.E,file$UTM.N,w,marks=file$Species)
#get window edges
e <- edges(w)
#rotate window to 90 degrees (thanks E. Rubak)
a<- angles.psp(e)
points.rotate <- rotate(points, -a[1])
#examine point pattern
plot(points.rotate)
#do quadrat count test and report p-value
M <- quadrat.test(points.rotate,nx=3,ny=3)
p <- M$p.value
p # extremely small p-value rejects null hypothesis of homogeneity
因为我发现这个点模式看起来不均匀(在视觉上和通过样方计数),我决定使用具有模拟包络线的不均匀 "Lcross" 函数来测试树木和幼苗之间的空间关联。
我将只研究 1、2、3 和 4 米的滞后,因为我的地块面积很小。我 运行 999 次模拟,目视检查结果图,并使用 Baddeley 等人的方法计算双侧检验的 p 值。 2014.
#set vector of lag distances to examine for spatial association
r.vec <- c(0,1,2,3,4) #meters
#inhomogeneous Lcross function because q test supports inhomogeneity
inhom <- envelope(points,fun=Lcross.inhom,r=r.vec,funargs=list("tree","seedling"),
nsim=999,correction="isotropic",savefuns=TRUE)
plot(inhom)
#get p-val for 4 m lag, according to Baddeley et al. 2014 "On tests of
#spatial patterns based on simulation envelopes"
#equation for two-sided test: "2*min(j+1,m+1-j)/(m+1)
m <- 999 # number of sims
obs <- inhom$obs[5] #observed value for lag 5
sims <- attr(inhom,"simfuns") # get simulation values
lag5sims <- sims[5,] #get simulation values only for lag 5
lag5sims <- as.matrix(lag5sims) #change to matrix
lag5sims <- lag5sims[,2:1000] #drop first r value
j <- sum(lag5sims>obs)
2*min(j+1,m+1-j)/(m+1) # get result of significant inhibition (because j is large)
计算出的模拟包络线的高值非常大,我觉得情节不对。此外,我使用 Baddeley 等人的方法在 4 米滞后距离处发现了显着的负空间关联。 2014. 但是,查看点模式图,似乎在 4 米处,幼苗和树木之间可能存在正空间关联,或者至少不是极端负关联。当我 运行 使用 homogeneous Lcross 函数的相同代码时,我实际上在 4 米处发现了显着的正关联。
Large simulation envelope using the inhomogeneous Lcross function
Visually, it seems like there should be positive association at higher lag distances
这里使用非齐次Lcross函数是不合适的,还是我使用不正确?
非常感谢您花时间阅读一个很长的问题并提供任何帮助。
只是一个简短的回答,因为在我的时区已经晚了。
您没有使用非齐次空模型进行模拟。您只是根据 envelope.ppp
:
If Y is a point pattern (an object of class "ppp") and simulate=NULL, then we generate nsim simulations of Complete Spatial Randomness (i.e. nsim simulated point patterns each being a realisation of the uniform Poisson point process) with the same intensity as the pattern Y. (If Y is a multitype point pattern, then the simulated patterns are also given independent random marks; the probability distribution of the random marks is determined by the relative frequencies of marks in Y.)
您可以通过添加参数savepatterns = TRUE
将模拟模式保存在envelope.ppp
中,然后您可以通过
pat <- attr(inhom, "simpatterns")
如果您通过 plot(as.solist(pat[1:9])
绘制(其中一些)这些,您会发现它们是同质的并且看起来与您的原始模式完全不同,因此它们也会导致非常不同的 Lcross.inhom
函数。解决此问题的一种方法是在拟合模型上使用 ppm
和 运行 envelope
将模型拟合到数据(发送到 envelope.ppm
)。您总共只有很少的点,尤其是很少的树,因此对树木强度的估计非常不确定,并且可能对使用的带宽敏感。你真的需要小心你在这里做什么...
示例代码的问题是,如果 X
是点模式,envelope(X, .....)
执行 完全随机性测试 .
要在存在空间不均匀性的情况下检验 clustering/inhibition,零假设应该是一个不均匀的泊松过程。您需要以某种方式估计两种类型点的非均匀强度函数,然后根据这些强度生成模拟点模式。这里有两种方法(如果X
是你的点模式):
核平滑:首先通过
D <- density(split(X))
估计原始数据中每一类点的强度。现在可以通过Y <- rmpoispp(D, types=names(D))
生成零假设的模拟实现。我们希望在envelope
命令中发生这种情况,所以只需要envelope(X, Lcross.inhom, simulate=expression(rmpoispp(D, types=names(D))))
.
参数simulate
指定应对此表达式求值以生成每个模拟点模式。使用模型:首先将泊松点过程模型拟合到观测数据,例如
fit <- ppm(X ~ polynom(x,y,3))
。然后做envelope(fit, Lcross.inhom, lambdaX=fit)
。由于第一个参数是
ppm
对象,因此由envelope.ppm
处理。这将从拟合的泊松模型生成模拟实现,并将计算每个实现的非齐次 L 交叉函数。参数lambdaX
传递给Kcross.inhom
;请参阅?Kcross.inhom
以了解其解释方式。
有关完整详细信息,请参阅 the spatstat book 的第 10 章。