复杂的分层GAM的计算速度

时间:2020-06-15 16:57:30

标签: r gam mgcv

我有一个很大的二进制响应变量数据集(3.5+百万个观测值),我正在尝试使用全局平滑器来计算具有单独惩罚且具有共同惩罚的全局GAM(例如{{3}中的“ 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)

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

1 个答案:

答案 0 :(得分:0)

我通过减少生物区域水平的数量并随机采样ca来减少计算时间。数据的60%。实际上,这使我可以计算模型的OOB误差。

相关问题