具有 MRF 平滑器的 GAM:创建具有重复坐标的邻域结构
GAM with MRF smoother: create neighbourhood structure with duplicate coordinates
我想将 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
谢谢
邻域对象的行数不需要与数据一样多,行数与 geoid
一样多。
如果您要使用数据中的 geoid
,您需要首先对对象进行子集化以包含非重复的 geoid
值。在 SpatialPolygonsDataFrame
的 @data
元素上使用典型的子集方法 ([
) 和 duplicated()
应该可以得到一组独特的 geoid
来构建邻域对象来自.
我想将 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
谢谢
邻域对象的行数不需要与数据一样多,行数与 geoid
一样多。
如果您要使用数据中的 geoid
,您需要首先对对象进行子集化以包含非重复的 geoid
值。在 SpatialPolygonsDataFrame
的 @data
元素上使用典型的子集方法 ([
) 和 duplicated()
应该可以得到一组独特的 geoid
来构建邻域对象来自.