【发布时间】:2021-09-22 15:00:52
【问题描述】:
我的问题与上一个问题密切相关:Simulation-based hypothesis testing on spatial point pattern hyperframes using "envelope" function in spatstat
我通过使用R 包spatstat 中的mppm函数在多个独立数据集上拟合模型获得了mppm 对象。我如何研究它的信封以将其与我的观察结果进行比较?
我这样拟合我的模型:
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 类型的输入:
> 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 个数据集进行比较。以下代码:
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])
导致以下错误:
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”
【问题讨论】: