R пакет "spatstat": как получить стандартные ошибки для негладких терминов в модели пуассоновского процесса (функция: ppm) при использовании.gam=правда?

в пакете 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. Похоже, что он жалуется на саму переменную, но модель четко понимает синтаксис, поскольку она соответствует модели (и предсказанные значения для моего собственного набора данных выглядят довольно хорошо, поэтому я знаю, что это не просто выкачивание мусора).

есть ли у кого-нибудь советы или идеи об этом? Это жук? К моему удивлению, я не смог найти ни одного. обсуждение этого онлайн. Любая помощь или подсказки приветствуются.

Edit:spatstat, Я могу присудить награду ему. В противном случае, я просто приму свой собственный ответ в конце периода щедрости.

2 ответов


Я связался с одним из авторов пакета, Адрианом Бэддли, об этом. Он быстро ответил и дал мне знать, что это действительно ошибка с программным обеспечением, и, по-видимому, я первый человек, который столкнулся с ним. К счастью, ему потребовалось совсем немного времени, чтобы отследить проблему и исправить ее. Исправление будет включено в следующий выпуск spatstat, 1.31-1.

Edit: обновленная версия 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 для других-релизе. Спасибо всем, кто читал и участвовал в этой теме!


Я не уверен, что вы можете указать тренд так, как у вас есть, что, возможно, вызывает ошибку. Это не имеет смысла согласно документации:

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, как они помогли мне в прошлом. Вы также можете отправить свой вопрос в этот список рассылки, но вы должны ссылаться на свой вопрос здесь, когда вы это сделаете.