runjags对象太大了

时间:2014-02-17 19:03:43

标签: r jags runjags

我正在尝试使用新的包runjags运行JAGS,因为R2jags has a bug(完整的模型代码位于问题https://stats.stackexchange.com/q/62006/5509中):

require("runjags")
out <- 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))

它可以作为一个魅力,但这个包的缺点是runjags函数返回的run.jags对象已经与准备好的图表和输出捆绑在一起,而且太大了。仅作比较,相应的.Rdata文件的大小(2个链,每500个保存的迭代,总共1000次迭代):

  • runjags对象 - 1.2 MB
  • R2jags object - 212 kB
  • mcmc.list object - 33 kB

runjags对象非常庞大,但我必须将其存储,以便以后能够在模型上使用runjags接口。

此问题的解决方法是什么?

1 个答案:

答案 0 :(得分:4)

runjags的对象非常大,主要是因为它们存储了在他们中断的情况下继续模拟所需的所有信息(模型/数据/ RNG状态)。如果您想要的只是MCMC链,那么您可以使用以下方法摆脱大部分:

as.mcmc.list(yourrunjagsobject)

...或者直接转换为可以与rjags包一起使用的东西:

as.jags(yourrunjagsobject)

另见?runjagsclass

或者,如果您有与打印/摘要相关的存储问题并希望保留模型/数据/ RNG状态,请尝试summarise=FALSEplot=FALSErun.jags(),这将阻止预先存在在初始函数调用期间生成/存储它们。

你也可以破解类对象以消除我猜想的大组件,但更好地使用提供的转换方法......