我正在尝试使用R软件包rjags
计算我目前在R中运行的JAGS分析的Gelman和Rubin的收敛诊断。
例如,我想评估参数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分析的示例代码。
答案 0 :(得分:1)
我一直在寻找同一问题的解决方案,并发现 stats 包中的window()
函数将完成该任务。对于你的情况:
window(out_2MCMC, 100001,15000)
将返回一个mcmc.list
对象,其中包含所有受监视参数的最后5,000个样本以及新列表的更新属性。