gpt4 book ai didi

r - rjags 和 r2jags 的区别

转载 作者:行者123 更新时间:2023-12-03 20:30:03 25 4
gpt4 key购买 nike

我使用这两个包来进行贝叶斯分析,但有一些我不明白的差异:

首先包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 <- jags.model(file="somefile.txt", data = data, n.chains=3)
jsample <- coda.samples(jmod, n.iter=200,n.burnin=100, variable.names=par)

也就是说,老化阶段 update功能也可以在 coda.samples中完成功能?谢谢你。

最佳答案

R2jags是用于运行 rjags 的过顶函数.它旨在让执行包描述中描述的某些事情变得更容易一些,例如运行直到收敛或并行化 MCMC 链。

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

  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 )

所以 R2jags::jags正在使用 jags.model 编译模型,使用 adapt 对其进行调整,然后使用 coda.samples 从后验中迭代和采样

您的两个电话并不完全相同。
首先你:
  • 编译和适配 jags.model ,
  • 使用 update 更新 100 次迭代,然后
  • 使用 coda.samples 从后验更新和采样 100 次迭代.

  • 第二个你
  • 编译和适配 jags.model ,
  • 使用 coda.samples 从后验更新和采样 200 次迭代.

  • 即,您的后验样本来自更多次迭代,但在 jags.model 中隐含的适应之后,方法 2 中没有额外的“老化”阶段. n.burnin没有用在 rjags ,仅在 R2jags ;见 coda.samples调用 jags上面的函数代码,而更早的 on line 77 ,该函数分配 n.adapt <- n.burnin .

    关于r - rjags 和 r2jags 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50758693/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com