6

R パッケージspatstat(私は現在のバージョンを使用してい1.31-0ます) には、オプションがありますuse.gam。これを true に設定すると、R パッケージで行うのと同じ方法で、線形予測子に滑らかな項を含めることができますmgcv。例えば、

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

さて、切片の信頼区間が必要な場合は、通常summaryorvcovを使用できます。これは、使用しない場合は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

これについて、パッケージ作成者の 1 人である 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 の Web サイトを参照してください。このスレッドを読んで参加してくれたすべての人に感謝します!

于 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メーリングリストに非常に積極的に取り組んでいることを知っています。そのメーリングリストに質問を投稿することもできますが、投稿するときはここで質問を参照する必要があります。

于 2013-02-28T17:57:23.300 に答える