我想比较一下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
问题:
发布于 2013-12-12 21:03:05
mgcv错误来自于指定空间平滑变量income
和housing
之间的“交互”的因素。有关使用?gam.models
术语的详细信息,请参阅by
。我想为了这个你需要
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
的错误看,您同样存在错误指定模型的问题。我对bayesx()
并不熟悉,但它似乎使用了与mgcv提供的相同的s()
函数,因此模型规范应该与我前面展示的相同。
至于2。你能在这里扩展一下gam()
和bayesx()
之间的可比较的意思吗?或者得到两者或者与spgwr()
模型相比较的其中之一?
https://stackoverflow.com/questions/20559188
复制