0

spgwr と mgcv の間で生成された GWR フィッティングを比較したいのですが、 mgcv の gam 関数でエラーが発生しました。例を次に示します。

require(spgwr)
require(mgcv)
require(R2BayesX)

data(columbus)
col.bw <- gwr.sel(crime ~ income + housing, data=columbus,verbose=F,
                  coords=cbind(columbus$x, columbus$y))
col.gauss <- gwr(crime ~ income + housing, data=columbus,
                 coords=cbind(columbus$x, columbus$y), 
                 bandwidth=col.bw, hatmatrix=TRUE)

#gwr fitting with Intercept
col.gam<-gam(crime ~s(x,y)+s(x,y)*income+s(x,y)*housing, data=columbus)#mgcv ERROR
b1<-bayesx(crime ~sx(x,y)+sx(x,y)*income+sx(x,y)*housing, data=columbus)#R2Bayesx ERROR

質問:

  1. gam と bayesx 関数 (位置の滑らかな関数) を使用して同じ gwr を適合させる方法

  2. 最適な帯域幅を含め、パラメーターを可能な限り類似するように制御する方法

4

1 に答える 1

1

mgcvエラーは、空間平滑化と変数およびの間の「相互作用」を指定している要因から発生します。用語の使用の詳細については、こちらをお読みください。これにはあなたが必要だと思いますincomehousing?gam.modelsby

col.gam <- gam(crime ~s(x,y, k = 5) + s(x,y, by = income, k = 5) + 
               s(x,y, by = housing, k = 5), data=columbus)

この例では、観測値が 49 個しかないため、基底関数の次元を制限する必要があります (ここでは を使用しますk = 5)。ただし、データの制約内でこれらを少し変更する必要があるかどうかを調査する必要があります。

からのエラーのように見えbayesxますが、モデルを間違って指定するという同じ問題があります。については詳しくありませんが、 mgcvbayesx()で提供されているものと同じs()関数を使用しているように見えるため、モデルの仕様は上に示したものと同じである必要があります。

2. については、ここで意味することを拡張できgam()ますbayesx()spgwr()?

于 2013-12-13T05:03:05.177 に答える