我想比较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
问题:
如何使用gam和bayesx功能(位置的平滑功能)适合相同的gwr
如何控制参数尽可能类似,包括最佳带宽
答案 0 :(得分:1)
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()
模型相当吗?