具有MRF平滑器的GAM:创建具有重复坐标的邻域结构

时间:2018-12-09 10:41:09

标签: r mgcv spdep

我想在R中使用mgcv包来运行模型

df <- as.data.frame(spdf)
mod <- gam(y ~ s(geoid, bs = 'mrf', xt = list(nb = nb), k = 20) +     
               s(month, bs = 'cc', k = 12),
                data = df,
                method = 'REML',
                family = Gamma(link = log))

其中spdf是SpatialPolygonDataFrame。

我在理解如何创建nb对象时遇到了问题,因为数据df具有重复的geoid值(每个月一个)和运行时

nb <- poly2nb(spdf, row.names = spdf@data@geoid)

我得到了错误

Error in poly2nb(spdf, row.names = spdf@data@geoid): non-unique row.names given

谢谢

1 个答案:

答案 0 :(得分:1)

邻居对象不需要与数据一样多的行,而与geoid一样多。

如果要从数据中使用geoid,则需要首先对对象进行子集化,以包含非重复的geoid值。在[的{​​{1}}元素上使用典型的子集方法(duplicated())和@data可以为您提供一组独特的SpatialPolygonsDataFrame来构建邻域对象。