指定了burnin和thinning时,JAGS / BUGS会保存多少次迭代?

时间:2013-02-04 04:44:01

标签: winbugs jags mcmc r2jags

我有一个关于在JAGS和BUGS中运行模型的详细信息的快速问题。

假设我使用n.burnin=5000n.iter=5000thin=2运行模型。这是否意味着该计划将:

  1. 运行5,000次迭代,并丢弃结果;然后
  2. 再运行10,000次迭代,只保留每一秒结果?
  3. 如果我将这些模拟保存为CODA个对象,是全部保存10,000个还是只减少5,000个?我只是想了解使用哪组迭代来制作ACF图?

2 个答案:

答案 0 :(得分:2)

使用JAGS n.burnin=5000, n.iter=5000 and thin=2,意味着你什么都不做。你运行5000,丢弃这5000个中的前5000个,然后只保留链的剩余值的一半(保留1个值并丢弃下一个......)。

例如使用n.burnin=2000, n.iter=7000, thin=50, n.chains=5:所以你有(7000-2000)/ 50 * 5 = 500个值。

答案 1 :(得分:0)

您能更具体地说明您正在谈论的软件吗?看起来你在引用R2WinBUGS包中的函数bugs()的参数(除了参数被称为n.thin而不是瘦)。看看帮助(错误)它只是说n.burnin是“开始时丢弃的迭代次数”。这并没有具体回答你的问题,但是查看该软件包中bugs.script()的来源告诉我,它会运行5000次迭代,正如你所怀疑的那样。您可以向该软件包的维护者发送建议,以澄清其文档。

在您的示例中,bugs()将在老化后再运行0次迭代。这里的文档更清晰 - n.iter是迭代的总数,包括老化。

对于第二个问题,WinBUGS(以及任何调用WinBUGS或OpenBUGS的软件)的CODA输出仅包含稀疏样本。