我正在尝试使用新包 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 对象 - 212 kB
  • mcmc.list 对象 - 33 kB
  • runjags 对象很大,但我必须存储它以便以后能够在模型上使用 runjags 接口(interface)。
    此问题的任何解决方法?

    最佳答案

    runjags 类的对象非常大,主要是因为它们存储了从中断处继续模拟所需的所有信息(模型/数据/RNG 状态)。如果你想要的只是 MCMC 链,那么你可以使用以下方法摆脱大部分:
    as.mcmc.list(yourrunjagsobject)
    ...或者转换为可以直接与 rjags 包一起使用的内容:
    as.jags(yourrunjagsobject)
    另见 ?runjagsclass
    或者,如果您有与打印/汇总相关的存储问题并希望保留模型/数据/RNG 状态,请尝试将 summarise=FALSEplot=FALSE 用于 run.jags() ,这将防止在初始函数调用期间预先生成/存储这些。

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

    关于runjags 对象太大,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21837221/

    10-12 17:11