在运行贝叶斯模型un R2OpenBugs时,是否有人设法获得了参数的蒙特卡罗误差?
它是在OpenBugs的标准输出中提供的,但是当在R2OpenBugs下运行时,日志文件没有MC error.Is --有一种方法可以要求R2OpenBugs计算MC错误吗?或者有一种手动计算的方法?拜托,如果你听说有什么办法的话请告诉我。谢谢!
下面是R2OpenBugs的标准日志输出:
$stats
mean sd val2.5pc median val97.5pc sample
beta0 1.04700 0.13250 0.8130 1.03800 1.30500 1500
beta1 -0.31440 0.18850 -0.6776 -0.31890 0.03473 1500
beta2 -0.05437 0.05369 -0.1648 -0.05408 0.04838 1500
deviance 588.70000 7.87600 575.3000 587.50000 606.90000 1500
$DIC
Dbar Dhat DIC pD
t 588.7 570.9 606.5 17.78
total 588.7 570.9 606.5 17.78发布于 2022-07-15 09:51:23
计算蒙特卡罗标准误差(MCSE)的一个简单方法是将链的标准差除以有效样本数的平方根。输出中提供了标准偏差,但在打印模型输出时,有效样本大小应以n.eff (最右边列)的形式给出--或者至少是我从以下方面得到的印象:
https://cran.r-project.org/web/packages/R2OpenBUGS/vignettes/R2OpenBUGS.pdf
我不再使用OpenBugs了,所以不能轻易地为您检查,但是应该有指示有效样本大小的东西(这与您所采样的迭代次数不一样,因为它还考虑到由于链内关联而导致的信息丢失)。
否则,您可以自己提取原始MCMC链,然后使用coda包(?coda::effectiveSize)计算有效样本大小,或者直接使用LaplacesDemon::MCSE计算Monte标准误差。有关更多信息,请参见:
https://rdrr.io/cran/LaplacesDemon/man/MCSE.html
注意,有些人(包括我!)建议直接关注有效样本量,而不是看MCSE,因为旧的“经验法则”认为MCSE应小于样本标准差的5%,这相当于说有效样本量应至少为400 (1/0.05^2)。但意见各不相同:)
发布于 2022-07-23 10:43:27
MCMC被命名为时间序列SE,可以在coda对象的汇总的统计部分中找到:
library(R2OpenBUGS)
library(coda)
my_result <- bugs(...., codaPg = TRUE)
my_coda <- read.bugs(my_result)
summary(my_coda$statistics)https://stackoverflow.com/questions/72888786
复制相似问题