我想使用复制的空间点模式在spatstat
. spatstat
有精彩的文档,您可以在此处找到有关复制点模式分析的详细信息:https ://cran.r-project.org/web/packages/spatstat/vignettes/replicated.pdf
几个映射的森林图将代表在不同位置工作的点过程。每个点图案都被标记,其中每个标记代表一个树种。此外,每个点模式都与协变量光栅图像相关联。首先,我想创建一个空模型,它假设每个标记与协变量有不同的关系。然后我想使用这个空模型来测试某些物种是否相互关联(或避免),通过模拟随机标记假设并绘制生成的模拟包络线。(随机标记假设指出标记是随机分配给点模式中的点的。)
首先,我将展示我通常如何使用单点模式进行此分析。然后我将解释我在使用超帧执行相同分析时遇到的两个问题。
假设您有一个标记点模式,其中每个标记都是树种。我将使用 spatstat 中可用的“lansing”数据集:
library(spatstat)
data(lansing)
par(mar=rep(0.5,4))
plot(split(lansing),main="")
现在假设您想查看一些空间协变量(例如,土壤养分或水分),因此您创建了测量的核平滑密度的光栅图像:
sim1 <- rpoispp(function(x,y) {500 * exp(-3*x)}, win=owin(c(0,1),c(0,1)))
sim1 <- density(sim1)
首先创建空模型:
single.mod <- ppm(lansing ~ marks*sim1)
其中“ppm”函数将“marks”识别为具有物种名称的列,将“sim1”识别为协变量。
然后执行基于模拟的假设检验,您对 Black Oak 和 Maple 是否位于相同位置感兴趣。
single.E<-envelope.ppm(single.mod,Lcross,i="blackoak",j="maple",nsim=39, nrank=1,global=TRUE,correction="best",simulate=expression(rlabel(lansing)))
par(mar=rep(4,4))
plot(E,legend=FALSE,ylab="L-function",xlab="Spatial scale (m)",main="Testing random label hypothesis \nfor single point pattern")
这工作正常。现在,如果我们出去采样更多的图以使我们的分析更加稳健,我们可以将额外的图合并到超帧中,其中每个图都有自己的点模式并被视为“实验”复制。每个图也将获得自己的空间协变量:
sim2 <- rpoispp(function(x,y) {500 * exp(-2*y)}, win=owin(c(0,1),c(0,1)))
sim2 <- density(sim2)
sim3 <- rpoispp(500, win=owin(c(0,1),c(0,1)))
sim3 <- density(sim3)
hyper <- hyperframe(pp=list(lansing,lansing,lansing),sims=list(sim1,sim2,sim3))
Sim2 和 sim3 是我们收集的另外两个图的空间协变量,“超帧”函数将三点模式及其相关的空间协变量组合成一个超帧。
我想使用“mppm”(用于为多点模式创建模型)构建一个模型,其中每个点模式都由它们的空间协变量“sims”解释:
hyper.mod <- mppm(pp ~ sims, data = hyper)
当我试图让每个标记与协变量具有不同的关系时,就会出现第一个问题:
int.mod <- mppm(pp ~ marks*sims, data=hyper)
吐出以下错误消息:
checkvars 中的错误(公式,data.sumry$col.names,extra = c(“x”,“y”,:公式中的变量“标记”不是数据中的名称之一)
我得到同样的错误使用:
int.mod <- mppm(pp ~ pp$marks*sims, data=hyper)
第二个问题是弄清楚如何在超帧上运行基于模拟的假设检验。让我们使用有效的超帧模型(hyper.mod)来试试这个:
E.hyper <- envelope(hyper.mod,Lcross,i="blackoak",j="maple",nsim=39, nrank=1,global=TRUE,correction="best",simulate=expression(rlabel(pp)))
您收到一条错误消息:
UseMethod(“信封”)中的错误:没有适用于“信封”的适用方法应用于“c('mppm','list')”类的对象
暗示“信封”不适用于 mppm 对象(仅 ppp 或 ppm)。我怀疑有办法巧妙地绕过这个限制,但我还没有找到。任何建议或指导都会非常有帮助!