仅计算迭代子集的Gelman和Rubins收敛统计(coda包)

仅计算迭代子集的Gelman和Rubins收敛统计(coda包),r,markov-chains,mcmc,convergence,R,Markov Chains,Mcmc,Convergence,我正在尝试计算Gelman和Rubin的收敛诊断,用于我目前正在R中使用R包rjags运行的JAGS分析 例如,我想评估我的参数beta的收敛诊断。为此,我使用库coda和命令: library(coda) gelman.diag(out_2MCMC$beta) 将out2mcmc作为具有多个链的MCMC列表对象,可获得正确的输出,无任何错误消息或其他信息。但是,由于我使用了大量迭代作为老化,因此我只想计算迭代子集的收敛诊断(仅限于老化后的部分!) 为此,我尝试: gelman.diag(ou

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

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

library(coda)
gelman.diag(out_2MCMC$beta)
out2mcmc
作为具有多个链的MCMC列表对象,可获得正确的输出,无任何错误消息或其他信息。但是,由于我使用了大量迭代作为老化,因此我只想计算迭代子集的收敛诊断(仅限于老化后的部分!)

为此,我尝试:

gelman.diag(out_2MCMC$beta[,10000:15000,])
as.mcmc(out_2MCMC$beta[,10000:15000,]))
这导致了以下错误:

Error in mcmc.list(x) : Arguments must be mcmc objects
Error in gelman.diag(as.mcmc(out_2MCMC$beta[, 10000:15000,])) 
You need at least two chains
因此,我尝试:

gelman.diag(out_2MCMC$beta[,10000:15000,])
as.mcmc(out_2MCMC$beta[,10000:15000,]))
但是,令人惊讶的是,这导致了以下错误:

Error in mcmc.list(x) : Arguments must be mcmc objects
Error in gelman.diag(as.mcmc(out_2MCMC$beta[, 10000:15000,])) 
You need at least two chains
由于这是我从JAGS分析中得到的同一个MCMC列表对象,以及我在评估所有迭代的收敛诊断时使用的同一个MCMC列表对象(它工作得非常完美),因此我不认为这里有问题

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

我想这是很明显的事情,我只是错过了。有人有什么建议或建议吗


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

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

window(out_2MCMC, 100001,15000)
将返回一个
mcmc.list
对象,其中包含所有监控参数的最后5000个样本以及新列表的更新属性