profilepl() 用于复杂的混合吉布斯模型

问题描述 投票:0回答:1

我在弄清楚如何使用 R spatstat 包中的 profilepl() 来实现更复杂的混合吉布斯模型时遇到了一些麻烦。例如,我正在尝试构建一个具有硬核和多个 Geyer 交互的混合模型。

我尝试过做这样的事情:

RR <- c(expand.grid(r=seq(4,8, by=1), sat = 1:2), expand.grid(r1=seq(8,12,  by=1), sat1 = 1:2))

MS <- function(r, sat, r1, sat1) { Hybrid(A=Hardcore(NA), B=Geyer(r=r, sat = sat),  C=Geyer(r=r1, sat = sat1)) }

fit <- profilepl(RR, MS, swedishpines ~ polynom(x,y,2), correction = "isotropic", aic = FALSE)

我不确定我这样做是否正确,似乎可能有比我所做的更好的方法来编写交互函数(RR和MS)。对于 Geyer 相互作用,我目前必须给它两个相互作用“范围”来估计相互作用半径,我想知道我是否可以只提供一个数字“范围”(例如 4 - 12)并让 profilepl 选择该区间内的两个最佳相互作用半径。

绘制剖面可能性也会给出一个奇怪的输出,不确定是否有办法更好地可视化这一点,特别是如果它可以指示两个最佳 Geyer 交互参数:https://i.sstatic.net/mLC0B18D.png

如有任何帮助,我们将不胜感激!谢谢你

statistics spatial spatstat
1个回答
0
投票

您的代码大部分是正确的,并且正在生成有效的拟合对象。

但是,代码并没有搜索所有可能的参数值组合,而只是搜索了一些选定的组合。这导致了奇怪的情节。

profile
的第一个参数应该是一个数据框,其中每一行提供一组要考虑的参数值。数据框的行应枚举您要优化的参数空间(所有参数值)。

在您的代码中,对象

RR
包含 10 组参数值
r
sat
r1
sat1
。参数值也可以从拟合的对象中提取:

fit$param
   r sat  r1  sat1
1  4   1  8    1
2  5   1  9    1
3  6   1 10    1
4  7   1 11    1
5  8   1 12    1
6  4   2  8    2
7  5   2  9    2
8  6   2 10    2
9  7   2 11    2
10 8   2 12    2

在此数据框中,

sat
sat1
的值始终彼此相等,并且
r1
始终等于
r + 4
。如果这就是您的意图,那么实际上只有两个“自由变量”,即
r
sat
。这解释了为什么
plot(fit)
产生的情节看起来很奇怪。

最好将交互编码为两个自由变量

r
sat
的函数:

RR <- expand.grid(r=seq(4,8, by=1), sat = 1:2)
MS <- function(r, sat) { 
   Hybrid(A=Hardcore(NA), 
          B=Geyer(r=r, sat = sat),  
          C=Geyer(r=r+4, sat = sat)) }

然后使用对

profilepl
的相同调用进行重新安装。这应该会产生一个看起来合理的情节。

© www.soinside.com 2019 - 2024. All rights reserved.