如何使用 spatstat 可视化使用 gam 拟合的多点过程模型中变量的影响?

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

我正在使用 spatstat(版本 3.0-7)中的 gam 拟合多点过程模型。 需要明确的是,我使用的是一般形式的调用:

mppm(formula, data=hyperframe, eps=0.5, rbord=0.5, use.gam=TRUE)

因此我的模型是泊松过程。

模型拟合时我想做的是绘制:

  1. 给定预测变量以
    mgcv::plot.gam
    方式产生的影响
  2. 空间趋势图。

但是,当我尝试使用函数时,我收到这些错误消息

  • effectfun()
    :错误:第一个参数“model”应该是“ppm”、“kppm”、“lppm”、“dppm”、“rppm”或“profilepl”类的拟合模型
  • plot.mppm()
    :错误:GAM 拟合不支持此计算

我正在考虑以下解决方法选项:

spatstat

中的子拟合方法
  1. 分别将模型重新拟合到超帧中的每个模式(因为
    subfits
    不适用于 gam):我应用
    mppm
    模型中使用的相同模型公式,并在
    ppm
    中为每个模式运行它。但这样做时,我可能会为每个模式独立修改
    k
    参数,因为 mppm 中使用的 k 值可能会给出某些变量的错误。
  2. 在每个单独安装的 ppm 型号上使用
    effectfun
    plot
    。在这里,我担心我最终可能会得到每个图案不同的样条形状,从而使解释变得复杂

破解

mppm
并使用
mgcv

  1. 使用我想要的
    mppm
    模型运行
    use.gam=T
  2. 使用
    my_model$Fit$moadf
  3. 从 mppm 对象中提取 data.frame
  4. 使用
    mgcv::gam
    内部使用的调用,通过
    mppm
    拟合模型:

gam(fmla, family = quasi(link = log, variance = mu), weights = .mpl.W * caseweight, data = moadf, subset = (.mpl.SUBSET == "TRUE"), control = ctrl)

  1. 此时,我可以使用
    mgcv
    函数来可视化我需要的图(至少是给定预测变量的效果。

我的问题

我所描述的方法是否有效?其中之一是首选?或者,还有其他(更好)的选择来实现我的目标吗?

plot poisson gam spatstat replicate
1个回答
0
投票

简短回答:直接将拟合的

gam
对象提取为

m <- my_model$Fit$FIT

然后执行

plot(m, ...)
调用
mgcv::plot.gam

长答案:

目前,

gam
中不完全支持
use.gam=TRUE
配合(当
mppm
时生成)。

目前我们使用

subfits
机制来为
mppm
对象执行许多任务,包括绘制和预测模型。这是我们(暂时)避免重新编写所有支持
ppm
类的代码以支持
mppm
类的方法。

函数

subfits
是一个 hack,涉及制作
ppm
类的“假”对象(它们是假的,因为它们实际上并不是通过将模型拟合到单点模式而获得的)。这种伪造有局限性,当模型通过
gam
拟合时根本不起作用。

最终支持

mppm
类的代码将被重写为本机代码,这个问题将得到解决。在那之前,我建议您使用简短答案中描述的方法。

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