首页 文章

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

提问于
浏览
0

我想在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

    邻域对象不需要拥有与数据一样多的行,就像 geoid 中的行一样多 .

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

相关问题