RJAG和R2JAG之间的差异

RJAG和R2JAG之间的差异,r,jags,r2jags,rjags,R,Jags,R2jags,Rjags,我使用这两个软件包进行贝叶斯分析,但有一些差异我不理解: 首先,包rjags允许自适应阶段,使用jags.model功能,而包r2jags没有此阶段,使用功能jags(或jags.parallel)从后验分布开始采样。在该函数中是否包含自适应阶段,或者包 R2JAGS < /代码>不考虑它? 其次,在rjags中,我可以说这两段代码是相似的吗 jmod <- jags.model(file="somefile.txt", data = data, n.chains=3) update(jm

我使用这两个软件包进行贝叶斯分析,但有一些差异我不理解:

首先,包
rjags
允许自适应阶段,使用
jags.model
功能,而包
r2jags
没有此阶段,使用功能
jags
(或
jags.parallel
)从后验分布开始采样。在该函数中是否包含自适应阶段,或者包<代码> R2JAGS < /代码>不考虑它?

其次,在
rjags
中,我可以说这两段代码是相似的吗

jmod <- jags.model(file="somefile.txt", data = data, n.chains=3)
update(jmod,100)
jsample <- coda.samples(jmod, n.iter=100, variable.names=par)

jmod
R2jags
是一个运行
rjags
的顶级函数。它的目的是让做一些包描述中描述的事情变得更容易,比如运行直到收敛,或者并行MCMC链

如果查看
R2jags
中的
jags
函数(例如,通过查看或仅在R控制台中输入不带括号的
jags
),您将在函数末尾附近发现以下调用(链接github版本的第151-177行):


m所以它只是一个函数的集合。谢谢,非常清楚。R的一个伟大之处是,它很容易查看函数的内部并了解它们可能在做什么。不要害怕直接将函数名插入控制台以查看底层代码
jmod <- jags.model(file="somefile.txt", data = data, n.chains=3)
jsample <- coda.samples(jmod, n.iter=200,n.burnin=100, variable.names=par)
  m <- jags.model(model.file,
                  data     = data,
                  inits    = init.values,
                  n.chains = n.chains,
                  n.adapt  = 0 )

  adapt( m,
         n.iter         = n.adapt,
         by             = refresh,
         progress.bar   = progress.bar,
         end.adaptation = TRUE )

  samples <- coda.samples( model          = m,
                           variable.names = parameters.to.save,
                           n.iter         = ( n.iter - n.burnin ),
                           thin           = n.thin,
                           by             = refresh,
                           progress.bar   = progress.bar )