我是贝叶斯和JAGS的新手,所以请原谅我的无知。
我已经发送了一个使用JAGS代码编写的R脚本(由同事)。
此代码的作者已定义了一组尾声样本,如下所示:
codaSamples = coda.samples( jagsModel , variable.names=parameters ,
n.iter=nPerChain , thin=thinSteps )
我希望获得以下内容,并取得了有限的成功:
Gelman诊断:我使用了“show(gelman.diag(codaSamples))”,这对于单次模拟来说很好。但是,对于每个感兴趣的模拟,如何将每个参数的每个gelman诊断输出到文件?更感兴趣的是,是否可以仅记录Rhat值> 1.1的模拟比例?
密度图:我使用过“show(densplot(codaSamples))”。但是,这会在单独的图上生成每个图(我在模型中有96个参数)。是否与“autocorr.plot”等效,每页放置几个图?
分位数:我使用了“show(summary(codaSamples))”,但是虽然这给出了每个参数的平均值,SD和特定的百分位数(这是我想要的),但它也给出了MCMC矩阵。无论如何只能指定每个参数的基本统计属性吗?
后验分布:有没有办法计算每个参数的给定值(比如零)低于/高于百分位数?然后总结所有模拟?
提前感谢您提供任何帮助。
答案 0 :(得分:2)
write.csv(gelman.diag(codaSamples)$ psrf,file =" gelman.csv")
mcmc
对象具有特定的S3类mcmc.list
,因此class(codaSamples)
应返回mcmc.list
。这类对象有一个plot
S3方法,带有参数:trace
和density
。 plot(codaSamples,trace = FALSE,density = TRUE)
这应符合您的期望。
list
:链中的数量,列数:您的estimeted参数,以及行数:链的每次迭代。因此,您可以使用此对象或子对象(quantiles
,...)计算所需的每个统计信息。
例如,第一个参数的分位数:分位数(codaSamples [[1]] [1])
[[1]]
因为我拿第一个链,[,1]
作为第一个参数。
要查看对象的结构,您需要使用str()
。使用此功能,您可以选择所需的所有子对象。