R包“spatstat”:当use.gam = TRUE时,如何在泊松过程模型(函数:ppm)中得到非平滑项的标准误差?

时间:2013-02-25 18:51:57

标签: r statistics spatstat

在R包spatstat(我使用的是当前版本1.31-0)中,有一个选项use.gam。将此设置为true时,可以在线性预测器中包含平滑项,与使用R包mgcv的方式相同。例如,

g <- ppm(nztrees, ~1+s(x,y), use.gam=TRUE) 

现在,如果我想要拦截的置信区间,通常可以使用summaryvcov,这可以在您不使用gam时使用但在使用时失败gam

vcov(g)

,提供错误消息

Error in model.frame.default(formula = fmla, data = 
    list(.mpl.W = c(7.09716796875,  :invalid type (list) for variable 's(x, y)'

我知道当您使用gam时,此标准误差近似值是不合理的,但警告消息会捕获此消息:

In addition: Warning message: model was fitted by gam();
            asymptotic variance calculation ignores this 

我并不关心这一点 - 我准备证明使用这些标准错误是为了我正在使用它们的目的 - 我只是想要数字并希望避免“自己写”所以。

我上面得到的错误消息似乎并不依赖于我正在使用的数据集。我在这里使用了nztrees示例,因为我知道它预装了spatstat。它似乎在抱怨变量本身,但模型清楚地理解了语法,因为它适合模型(对于我自己的数据集,预测值看起来非常好,所以我知道它不仅仅是抽出垃圾)。

有人对此有任何提示或见解吗?这是一个错误吗?令我惊讶的是,我一直无法在网上找到任何关于此的讨论。任何帮助或提示都表示赞赏。

编辑:虽然我已经在这里明确回答了我自己的问题,但我暂时不会接受我的回答。这样,如果有人有兴趣并且愿意为此找到“解决方法”而不等待下一版spatstat,我可以奖励他/她。否则,我会在赏金期结束时接受我自己的回答。

2 个答案:

答案 0 :(得分:4)

我已经联系了其中一位软件包作者Adrian Baddeley。他立即做出回应,让我知道这确实是软件的一个错误,显然,我是第一个遇到它的人。幸运的是,他只花了很短的时间来追查问题并纠正它。该修复程序将包含在spatstat的下一个版本中,即1.31-1。

修改spatstat的更新版本已经发布,不再出现此错误:

g <- ppm(nztrees, ~1+s(x,y), use.gam=TRUE)
sqrt( vcov(g)[1,1] ) 
[1] 0.1150982
Warning message:
model was fitted by gam(); asymptotic variance calculation ignores this 

有关其他发行说明,请参阅the spatstat website。感谢阅读和参与此主题的所有人!

答案 1 :(得分:1)

我不确定您是否可以按照可能导致错误的方式指定趋势。它似乎没有意义according to the documentation

  

The default formula, ~1, indicates the model is stationary and no trend is to be fitted.

但你可以像这样指定模型:

g <- ppm(nztrees, ~x+y, use.gam=TRUE)   
#Then to extract the coefficientss:
>coef(g)
(Intercept)             x             y 
-5.0346019490  0.0013582470 -0.0006416421 
#And calculate their se:
vc <- vcov(g)
se <- sqrt(diag(vc))
> se
(Intercept)           x           y 
0.264854030 0.002244702 0.003609366 

这是否有意义/预期结果?我知道包裹作者对r-sig-geo邮件lsit非常活跃,因为他们过去曾帮助过我。您可能还想将您的问题发布到该邮件列表中,但是当您这样做时,您应该在此处引用您的问题。