在R包spatstat
(我使用的是当前版本1.31-0
)中,有一个选项use.gam
。将此设置为true时,可以在线性预测器中包含平滑项,与使用R包mgcv
的方式相同。例如,
g <- ppm(nztrees, ~1+s(x,y), use.gam=TRUE)
现在,如果我想要拦截的置信区间,通常可以使用summary
或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
,我可以奖励他/她。否则,我会在赏金期结束时接受我自己的回答。
答案 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非常活跃,因为他们过去曾帮助过我。您可能还想将您的问题发布到该邮件列表中,但是当您这样做时,您应该在此处引用您的问题。