全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2422 3
2018-08-05
最近在学习MCMC方法,用的是OpenBUGS。现在遇到一个小问题,在manuals里面也没找到满意的解答,所以在论坛上问问各位高手,谢谢。

在modelCompile命令中,num of Chains具体对结果有什么影响?字面理解这个数值是MC链的数量,默认是1条。那么在实际应用当中,生成多条链跟只生成一条链有什么具体的区别吗?什么时候需要生成多条链?

谢谢各位!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-8-5 16:59:52
自己在网上找到一些资料,应该可以作为一些参考,自问自答一下
以下资料引用自http://www.dxy.cn/bbs/topic/26225587


“MCMC究竟是做什么的?
在MCMC 中Markov 链到达stationary distribution 是就与目标分布相同了。这时,我们用Glibbs 从Markov 链采样大量样本就能再现我们需要的分布了。但是我们怎么知道已经到达那种stationary 分布了呢?
数学家说最终总会到达stationary distribution 的,但是却没说是什么时候!
当后验分布达到stationary distribution的时候,我们就说他收敛了。
但是当达收敛时,模拟Markov 链却不定很好。
一种方法是延长时间。因为,最终总会到达stationary distribution 的,时间越长,拟合越好。
但是如果跑很长时间,Markov 链会很长,大量的数据占用宝贵的内存。这时就需要减肥(thin),每10个取一个吧,顺便减少了迭代间的 autocorrelation。
要得到好的分布需要多少点呢?某高人总结说要10 000个。当然具体问题,具体对待。有时不用那么多。
我们可以通过比较样本的均值与真实后验分布的差值评价estimation的好坏。
另外,我们可以多跑几个链,这也是最常用的方法。
其实作图,用自己的眼睛检阅,是最简单、最可靠的方法。可以看看那几条链是否汇聚到了一块。
说说学术界的方法吧!
Gelman-Rubin
用于观察单变量。用了类似ANOVA的方法。假设有m条链,每条长度为 n。得到两种方差。
1.W 每条链组内的方差。(within)
2.B/n 所有链的方差。(between)
如果达到了到达stationary distribution 。应当出现B=W
R统计量 R=B/W,如果R>1 ,就提示没有收敛。
R统计量并不一定保险。Gelman-Rubin-Brooks plot 应运而生。
在图中,B与W稳定在一个水平及Gelman-Rubin 统计量约等于1,就说明收敛。”


个人认为,多取几条链只是为了之后分析链的收敛性,暂时先这样理解吧。不知有没有高人来指点以下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-20 18:59:21
目前也在研究贝叶斯方法,这里的链你的意思是取不同的初始值然后跑相同次数,相同的burnin 和thin进行比较吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-21 07:52:22
碧丝项链 发表于 2019-4-20 18:59
目前也在研究贝叶斯方法,这里的链你的意思是取不同的初始值然后跑相同次数,相同的burnin 和thin进行比较吗 ...
这里的链的次数是多条马尔科夫链,为了诊断MCMC是否收敛的。如果MCMC达到收敛,那么不同马尔科夫链得到的后验分布应该是几乎一样的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群