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.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(),但看起来它使用与mgcvs()提供的相同功能,因此模型规范应该与我上面显示的相同。

至于 2. 你能在这里扩展你的意思 Comparable getweengam()bayesx()/或让这两者或其中之一与spgwr()模型相媲美吗?

于 2013-12-13T05:03:05.177 回答