2

我正在尝试为我目前使用 R 包在 R 中运行的 JAGS 分析计算 Gelman 和 Rubin 的收敛诊断rjags

例如,我想评估我的参数的收敛诊断beta。为此,我使用库 coda 和命令:

library(coda)
gelman.diag(out_2MCMC$beta)

具有out_2MCMC多个链的 MCMC 列表对象,从而导致正确的输出而没有错误消息或任何内容。但是,由于我使用大量迭代作为老化,我想仅计算迭代子集的收敛诊断(仅老化后的部分!)。

为此,我尝试了:

gelman.diag(out_2MCMC$beta[,10000:15000,])

这导致了以下错误:

Error in mcmc.list(x) : Arguments must be mcmc objects

因此,我尝试了:

as.mcmc(out_2MCMC$beta[,10000:15000,]))

但是,令人惊讶的是,这导致了以下错误:

Error in gelman.diag(as.mcmc(out_2MCMC$beta[, 10000:15000,])) 
You need at least two chains

由于这与我从 JAGS 分析中获得的 MCMC 列表对象相同,并且与我在评估所有迭代的收敛诊断时使用的相同(它工作得非常完美),我在这里看不到问题。

该函数本身仅提供在收敛诊断计算中使用系列的后半部分(迭代)的选项。由于我的老化阶段比这更长,不幸的是这对我来说还不够。

我想这是很明显的事情,我只是想念。有没有人有任何建议或提示?

由于代码很多,我没有提供 R 代码来运行完整的 2MCMC-JAGS 分析。我希望上面的代码能够很好地说明问题,也许有人以前遇到过同样的问题,或者识别出我的语法中的任何错误。但是,如果您觉得需要完整的代码来理解我的问题,我仍然可以提供运行 2MCM JAGS 分析的示例代码。

4

1 回答 1

1

我一直在寻找相同问题的解决方案,发现statswindow()包中的函数将完成任务。对于您的情况:

window(out_2MCMC, 100001,15000)

将返回一个mcmc.list对象,其中包含所有受监视参数的最后 5,000 个样本以及新列表的更新属性。

于 2013-11-30T02:12:12.727 回答