我正在尝试使用新的包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
接口。
答案 0 :(得分:4)
类runjags
的对象非常大,主要是因为它们存储了在他们中断的情况下继续模拟所需的所有信息(模型/数据/ RNG状态)。如果您想要的只是MCMC链,那么您可以使用以下方法摆脱大部分:
as.mcmc.list(yourrunjagsobject)
...或者直接转换为可以与rjags包一起使用的东西:
as.jags(yourrunjagsobject)
另见?runjagsclass
或者,如果您有与打印/摘要相关的存储问题并希望保留模型/数据/ RNG状态,请尝试summarise=FALSE
和plot=FALSE
至run.jags()
,这将阻止预先存在在初始函数调用期间生成/存储它们。
你也可以破解类对象以消除我猜想的大组件,但更好地使用提供的转换方法......