【问题标题】:Computational speed of a complex Hierarchical GAM复杂分层 GAM 的计算速度
【发布时间】:2020-06-15 16:57:30
【问题描述】:

我有一个二进制响应变量的大型数据集(3.5+ 百万次观察),我正在尝试计算一个具有全局平滑器的分层 GAM,其具有共享惩罚的单个效应(例如 Pedersen et al. 2019 中的“GS”) .具体来说,我试图估计以下结构:全球>地理区域(N = 2)>生物区域(N = 20)>季节(N因生物区域而异)。总的来说,我试图估计 36 个不同的嵌套参数。

这是我目前使用的代码:

modGS <- bam(
  outbreak ~ 
    te(days_diff,NDVI_mean,bs=c("tp","tp"),k=c(5,5)) + 
    t2(days_diff, NDVI_mean, Zone, Bioregion, Season, bs=c("tp", "tp","re","re","re"),k=c(5, 5), m=2, full=TRUE) +
    s(Latitude,Longitude,k=50), 
  family=binomial(),select = TRUE,data=dat)

我的主要问题是构建模型需要很长时间(5 天以上)。这种嵌套结构不能离散化,所以我不能并行计算。此外,我尝试过gamm4,但遇到了内存限制问题。这是 gamm4 代码:

modGS <- gamm4(
  outbreak ~ 
    t2(days_diff,NDVI_mean,bs=c("tp","tp"),k=c(5,5)) + 
    t2(days_diff, NDVI_mean, Zone, Bioregion, Season, bs=c("tp", "tp","re","re","re"),k=c(5, 5), m=2, full=TRUE) +
    s(Latitude,Longitude,k=50), 
  family=binomial(),select = TRUE,data=dat)

运行此模型的最佳/计算上最可行的方法是什么?

【问题讨论】:

  • 不熟悉 gam 语法。 t2({5 variables}, ...) 是什么意思?所有 2 路组合?
  • 这是一种生成张量积的方法,将每个惩罚分为惩罚和未惩罚分量。它为所有边缘碱基对之间的惩罚和未惩罚成分的所有成对组合创建新的基函数和惩罚。编辑:主要取自 Pedersen 等人。上面提到的论文
  • 它应该创建一个 f(days_diff, NDVI_mean) 的随机曲面​​,用于其他三个变量的交互。 t2(x, f, bs = c('tp'cr'), full = TRUE) 相当于 s(x, f, bs = 'fs')

标签: r gam mgcv


【解决方案1】:

我通过减少生物区域级别的数量和随机采样来减少计算时间。 60% 的数据。这实际上允许我计算模型的 OOB 误差。

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 2017-11-04
    • 2012-12-31
    • 2019-03-11
    • 2019-06-05
    • 1970-01-01
    • 2013-11-01
    • 2013-04-30
    • 1970-01-01
    相关资源
    最近更新 更多