3

我正在尝试使用新包runjags运行 JAGS ,因为R2jags 有一个错误(完整的模型代码在问题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对象 - 212 KB
  • mcmc.list对象 - 33 kB

runjags对象是巨大的,但我必须存储它以便以后能够runjags在模型上使用接口。

这个问题的任何解决方法?

4

1 回答 1

4

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

as.mcmc.list(yourrunjagsobject)

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

as.jags(yourrunjagsobject)

也可以看看?runjagsclass

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

你也可以破解类对象来摆脱我猜的大组件,但最好使用提供的转换方法......

于 2014-02-18T16:25:55.290 回答