首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spatstat中为mppm对象绘制封套

在spatstat中为mppm对象绘制封套
EN

Stack Overflow用户
提问于 2021-09-22 15:00:52
回答 1查看 42关注 0票数 0

我的问题与前面的问题密切相关:Simulation-based hypothesis testing on spatial point pattern hyperframes using "envelope" function in spatstat

我已经获得了一个mppm对象,方法是使用Rspatstat中的mppm函数在几个独立的数据集上拟合模型。我如何研究它的包络以将其与我的观察结果进行比较?

我将我的模型拟合如下:

代码语言:javascript
复制
data <- listof(NMJ1,NMJ2,NMJ3)
data <- hyperframe(X=1:3, Points=data)
model  <- mppm(Points ~marks*sqrt(x^2+y^2), data)

其中,NMJ1、NMJ2和NMJ3被标记为ppp,是同一实验的独立实现。

但是,信封函数不接受mppm类型的输入

代码语言:javascript
复制
> envelope(model, Kcross.inhom, nsim=10)
Error in UseMethod("envelope") : 
  no applicable method for 'envelope' applied to an object of class "c('mppm', 'list')"

前面提到的问题的答案指出了如何为每个模式绘制全局信封,以及如何使用产品规则进行多次测试。然而,我的拟合模型意味着我的3个ppp对象在统计上是等价的,并且是同一实验的独立实现(即它们之间没有不同的协变量)。因此,我希望获得一个单独的图,将我的拟合模型与我的3个数据集进行比较。以下代码:

代码语言:javascript
复制
gamma= 1 - 0.95^(1/3)
nsims=round(1/gamma-1)
sims <- simulate(model, nsim=2*nsims)
SIMS <- list()
for(i in 1:nrow(sims)) SIMS[[i]] <- as.solist(sims[i,,drop=TRUE])
Hplus <- cbind(data, hyperframe(Sims=SIMS))

EE1 <- with(Hplus, envelope(Points, Kcross.inhom, nsim=nsims, simulate=Sims))

pool(EE1[1],EE1[2],EE1[3])

导致以下错误:

代码语言:javascript
复制
Error in pool.envelope(`1` = list(r = c(0, 0.78125, 1.5625, 2.34375, 3.125,  : 
  Arguments 2 and 3 do not belong to the class “envelope”
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-23 08:29:38

子集索引类型错误。使用

代码语言:javascript
复制
pool(EE1[[1]], EE1[[2]], EE1[[3]])

或者只是

代码语言:javascript
复制
pool(EE1)

这些函数会给出一条错误消息,指出应该使用savefuns=TRUE调用envelope命令。因此,您只需更改该步骤即可。

然而,从统计学上讲,这个过程没有什么意义。您已经拟合了一个模型,该模型允许使用anova.mppm和其他工具进行严格的统计推断。取而代之的是,您将从拟合的模型生成模拟数据,并执行蒙特卡洛测试,其中包含多个测试和低功耗的所有令人担忧的问题。这种方法还有其他问题-例如,即使模型对于超帧的每一行都是“相同的”,除非点模式的窗口是相同的,否则这些模式在统计上是不等价的,等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69286805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档