我正在使用 spatstat(版本 3.0-7)中的 gam 拟合多点过程模型。 需要明确的是,我使用的是一般形式的调用:
mppm(formula, data=hyperframe, eps=0.5, rbord=0.5, use.gam=TRUE)
因此我的模型是泊松过程。
模型拟合时我想做的是绘制:
mgcv::plot.gam
方式产生的影响但是,当我尝试使用函数时,我收到这些错误消息
effectfun()
:错误:第一个参数“model”应该是“ppm”、“kppm”、“lppm”、“dppm”、“rppm”或“profilepl”类的拟合模型plot.mppm()
:错误:GAM 拟合不支持此计算我正在考虑以下解决方法选项:
spatstat
中的子拟合方法
subfits
不适用于 gam):我应用 mppm
模型中使用的相同模型公式,并在 ppm
中为每个模式运行它。但这样做时,我可能会为每个模式独立修改 k
参数,因为 mppm 中使用的 k 值可能会给出某些变量的错误。effectfun
和 plot
。在这里,我担心我最终可能会得到每个图案不同的样条形状,从而使解释变得复杂破解
mppm
并使用 mgcv
mppm
模型运行 use.gam=T
。my_model$Fit$moadf
mgcv::gam
内部使用的调用,通过 mppm
拟合模型:gam(fmla, family = quasi(link = log, variance = mu), weights = .mpl.W * caseweight, data = moadf, subset = (.mpl.SUBSET == "TRUE"), control = ctrl)
mgcv
函数来可视化我需要的图(至少是给定预测变量的效果。我的问题
我所描述的方法是否有效?其中之一是首选?或者,还有其他(更好)的选择来实现我的目标吗?
简短回答:直接将拟合的
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
类的代码将被重写为本机代码,这个问题将得到解决。在那之前,我建议您使用简短答案中描述的方法。