微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

改进 JAGS MCMC 运行时

如何解决改进 JAGS MCMC 运行时

我的情况如下:

我正在使用贝叶斯推理来模拟 Outhwaite et al. 2018 开发的框架中的物种占有率。我已经在我的 PC 上对该模型进行了相当广泛的测试,现在正致力于在一台服务器或多台 PC 上运行 600 种物种。很酷吧? ;-)

我有一个运行良好的 JAGS 模型,可以为具有大量数据的物种提供合理的结果。但是,如果我打开迭代以获取数据较少的物种的结果,我的 PC 在“初始化模型”时会卡住(24 小时内状态栏中的进度为 42%,现在在过去 18 小时左右的时间内卡在 44 )。显然,在我的服务器上运行的测试也是如此。最后一件事更难判断我正在使用的 bash-slurm-system 不显示进度条

这是我的主要问题:

  1. 如果 10000 次迭代在我的 PC 上需要 8 小时,那么 100000 次应该需要大约 80 小时,对吗?
  2. 如果服务器有更多 RAM 和更多 cpu 能力,为什么它的运行速度比我的 PC 还要慢?

如果这是错误的论坛,我深表歉意,但对于 MCMC,总是有可能同时发生模型问题、技术问题等的混合(双关语;-))。

关于如何改进模型运行时的任何想法?

 model{ 
   ### Priors ###

  # State model priors
  b[1] ~ dnorm(mu.b,0.0001)           # random walk prior on year effect
  for(t in 2:nyear){
    b[t] ~ dnorm(b[t-1],tau.b)
  }
  mu.b ~ dnorm(0,0.01)
  tau.b <- 1/(sd.b * sd.b)          
  sd.b ~ dt(0,1,1)T(0,)       # half-Cauchy hyperpriors (replace half-uniform above)

  for (i in 1:nsite) {
    u[i] ~ dnorm(0,tau.u)  # random site effect      
  } 
  
  tau.u <- 1/(sd.u * sd.u)  
  sd.u ~ dt(0,)       # half-Cauchy hyperpriors (replace half-uniform above)

  # Observation model priors 
  for (t in 1:nyear) {
    a[t] ~ dnorm(mu.a,tau.a)   # random year effect           
  }
  
  mu.a ~ dnorm(0,0.01)                         
  tau.a <- 1 / (sd.a * sd.a)             
  sd.a ~ dt(0,)       # half-Cauchy hyperpriors (replace half-uniform above)

  c ~ dunif(-10,10)        # sampling effort effect
  
  ### Model ###

  # State model
  for (i in 1:nsite){ 
    for (t in 1:nyear){   
      z[i,t] ~ dbern(psi[i,t]) 
      logit(psi[i,t])<- b[t] + u[i] 
    }}   
  
  # Observation model 
  for(j in 1:nvisit) {
    y[j] ~ dbern(Py[j]+0.00000001)
    Py[j]<- z[Site[j],Year[j]] * p[j]      
    logit(p[j]) <- a[Year[j]] + c*logL[j]
  }
   
  ### Derived parameters ###
  # Finite sample occupancy - proportion of occupied sites
  for (t in 1:nyear) {  
    psi.fs[t] <- sum(z[1:nsite,t])/nsite
  } 
  
  #data#
  #monitor#
  
} 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。