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)
jmodR2jags
是一个运行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 )