对于显然存在收敛问题的链,Runjags报告的psrf = 1.0047
非常低:
> print(o, vars = "q_date2")
JAGS model summary statistics from 3000 samples (chains = 3; adapt+burnin = 1000):
Lower95 Median Upper95 Mean SD MCerr MC%ofSD SSeff AC.10 psrf
q_date2 -0.17611 -0.10467 0.0053844 -0.087376 0.063296 0.023726 37.5 7 0.022495 1.0047
当我尝试使用coda计算psrf
时,我得到的结果看起来更合理:
> gelman.diag(as.mcmc.list(o)[,'q_date2'], transform=FALSE, autoburnin=FALSE)
Potential scale reduction factors:
Point est. Upper C.I.
[1,] 3.54 7.94
那么为什么runjags报告的psrf
如此之低?这是runjags的问题,还是我做错了什么?
我在R 3.1.0中使用当前版本的runjags(1.2.1-0)。
编辑:在创建摘要期间,我收到了警告 - 抱歉之前没有提及:
Warning messages:
1: In autocorrs[x$stochastic] <- x$autocorr[4, ] :
number of items to replace is not a multiple of replacement length
2: In psrfs[x$stochastic] <- x$psrf$psrf[, 1] :
number of items to replace is not a multiple of replacement length
答案 0 :(得分:1)
出现(从离线发送给我的信息)psrf正在被正确计算,但由于某些信息不适用于某些半随机监测变量,因此报告不按顺序报告。这个软件没有被软件选中的事实是我将要修复的错误!
与此同时,您可以(a)忽略输出中列出的摘要()中的psrf,而使用RJout $ psrf(或您自己的代码),或者(b)删除受监视的变量(在这种情况下为M) )导致问题的原因。 runjags的开发版本具有更好的解决方案(在返回模型后(摘要)计算汇总统计数据和绘图),并且在接下来的几个月内应该在CRAN上。
这也是一个很好的提醒,手动检查痕量图是MCMC分析的重要组成部分:)