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