在R中,我使用Rjags调用JAGS对后验分布进行采样,后者以mcmc.list形式返回样本。我的目标是采用mcmc.list表单中存在的每个采样变量(第一个链)的模式。
当我加载mcmc.list对象文件时,它占用了我有权访问的24GB RAM中的8个。此外,当我使用下面提到的方法计算其模式时,RAM超过23GB标记并且进程崩溃。
我相信有更好更有效的方法可以做到这一点,所以如果有人可以投入一些光。
我用于生成模式的方法如下。这里样本[[1]]是mcmc.list
的第一个链Mode<-lapply(samples[[1]], function(x){ ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]})
我也在查看ff包,因为上面的例子只是我数据集的一半。我无法理解如何将mcmc.list转换为ff类型数据框sample<-as.ffdf(samples[[1]])
需要永远运行。
如果有人可以通过示例提供一些资源来详细解释ff包,那也会很棒。感谢
答案 0 :(得分:1)
如果问题只是计算,我会建议细化链,以便输出不是那么大。 thin
函数中有一个jags.samples
参数,可用于减小输出大小。
相反,您可以尝试将样本转换为矩阵。这需要coda
包。
samples_matrix <- as.matrix(samples, chains = TRUE)
这样你就可以计算出后部较小部分的模式。