6

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

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

现在,如果我想要截距的置信区间,您通常可以使用summaryor vcov,它在您不使用时有效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,我可以将赏金奖励给他/她。否则,我将在赏金期结束时接受我自己的答案。

4

2 回答 2

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 

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

于 2013-03-01T13:50:52.917 回答
1

我不确定您是否可以按照自己的方式指定趋势,这可能是导致错误的原因。根据文档,这似乎没有意义:

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 上非常活跃,因为他们过去曾帮助过我。您可能还想将您的问题发布到该邮件列表,但您应该在此处引用您的问题。

于 2013-02-28T17:57:23.300 回答