代码之家  ›  专栏  ›  技术社区  ›  user3036416

使用mrf平滑的gam:创建具有重复坐标的邻域结构

  •  0
  • user3036416  · 技术社区  · 7 年前

    我想用 mgcv 在r中打包以运行模型

    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是一个空间多边形数据帧。

    我在理解如何创建 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 回复  |  直到 7 年前
        1
  •  1
  •   Gavin Simpson    7 年前

    neighborhood对象不需要像数据那样多的行,只需要像数据那样多的行。 geoid S.

    如果你要用 大地水准面 从数据中,您将希望首先将对象子集包含不重复的 大地水准面 价值观。使用典型的子集设置方法( [ ) duplicated() @data 元素 SpatialPolygonsDataFrame 应该给你一套独特的 大地水准面 从中构建邻里对象。

    推荐文章
    S.K.  ·  gamm的R粘贴公式
    8 年前