设置runjags图的选项

时间:2014-02-15 14:12:21

标签: r jags runjags

我正在尝试使用runjags包运行JAGS并生成自定义绘图 - 更改链的颜色(完整的模型代码在问题https://stats.stackexchange.com/q/62006/5509中):

require("runjags")
out2 <- run.jags("Poisson.OD.t.test.txt", params, win.data, nc, inits,
      nb*4/5, ni, nb*1/5)
plot(out2, layout = c(4, 2))

但似乎无法改变绘图参数。在 ?runjagsclass他们写道:

  

绘图方法生成痕迹和密度图(注意这些是   预先绘制并存储在runjags对象内,所以通常的选项   格子或绘图功​​能不可用。)

这似乎已经在run.jags电话中制作了这些情节!但这似乎也不允许改变情节选项。

问题:

  1. 如何更改绘图参数,如链颜色?

  2. 为什么他们已经在run.jags创建了情节?通常设计良好的应用程序将逻辑(模型计算)和输出分开。这有什么特别的原因吗?

1 个答案:

答案 0 :(得分:3)

通常,runjags类对象的最大元素是继续模型所需的数据和RNG状态。除非这些存储在类中,否则没有办法在不需要额外参数的情况下继续它。但是,当您监视大量变量时,有时预制图也非常大 - 在这些情况下,您可以通过为原始运行指定plots = FALSE来消除所有图(以及相关的存储问题)。 jags()调用。或者,您可以使用(如您所料)as.mcmc.list()将runjags对象剥离为一个简单的MCMC列表对象。

所以回答你的问题: 1)首先使用as.mcmc.list(),然后使用您想要的这些链上的任何特定图 2)我当时做出的设计决定是预先创建所有这些图(在减薄的MCMC链上以最小化存储问题),以便减少打印它们所需的时间,从而使我通常的收敛诊断图想快点看看就近在咫尺。这些并非真正(如帮助文件中所述)用于除收敛诊断之外的任何其他内容。在未来,我可能会考虑动态生成绘图的其他方法(使用现有的S3方法),因为存储绘图的代码非常陈旧且可能已过时,但它始终是速度与存储的折衷。就我的目的而言,速度几乎总是胜出(我很不耐烦)。