0

我正在尝试在 JAGS 中运行分层 Dirichlet 模型,但我没有更新并且必须做错事。我尝试用伽玛分布来近似它:

#Creating some data
set.seed(555)
cat1=rbeta(15,20,60)
cat2=rbeta(15,20,80)
cat3=rbeta(15,20,160)
cat4=1-cat1-cat2-cat3

dat_dirich=list(
  dirF=cbind(cat1, cat2, cat3, cat4),
  AL=c(1,1,1,1),
  K=4
)

require(runjags)

{
  catch_mod="model{

    for(y in 1:15){
      dirF[y,1:K]~ddirch(alpha_dirF1B[y,1:K])

      #Approximation with Gamma
      for(a in 1:K){
          alpha_dirF1B[y,a]<-P2[y,a]/sum(P2[y,1:K])
          P2[y,a]~dgamma(alpha_dirF1[a,y],1)#1 or kappa_dirF
      }
      #hierarchical structure   
      alpha_dirF1[1:K,y]~ddirch(AL*kappa_dirF)
    }
    kappa_dirF~dunif(0.1,5000)   #kappa_dirF~dlnorm(0,0.01)   
  }"
}
4

1 回答 1

0

您必须调用run.jags()代码中的某个位置。这应该看起来像

results <- run.jags(catch_mod, data = dat_dirich, n.chains = XXX, ...)

这在runjags( https://cran.r-project.org/web/packages/runjags/vignettes/quickjags.html )的小插图中进行了描述

于 2019-03-19T17:37:51.867 回答