我试图使用一个新的包龙贾格运行JAGS,因为R2jags有一个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.2MBR2jags对象- 212 kBmcmc.list对象- 33 kBrunjags对象是巨大的,但是为了以后能够在模型上使用runjags接口,我必须存储它。
这个问题有什么解决办法吗?
发布于 2014-02-18 16:25:55
类runjags的对象相当大,主要是因为它们存储所有需要的信息(模型/数据/RNG状态),以便在停止时继续模拟。如果您想要的只是MCMC链,那么您可以使用以下方法消除其中的大部分内容:
as.mcmc.list(yourrunjagsobject)
将...or转换为可以直接与rjags包一起使用的内容:
as.jags(yourrunjagsobject)
另见?runjagsclass
或者,如果您有与打印/摘要相关的存储问题,并希望保留模型/数据/RNG状态,请尝试summarise=FALSE和plot=FALSE to run.jags(),这将防止在初始函数调用期间生成/存储这些数据。
您还可以对类对象进行黑客攻击,以摆脱我猜想的大型组件,但使用提供的转换方法要好得多.
https://stackoverflow.com/questions/21837221
复制相似问题