本文目录一览:
贝叶斯的mcmc算法怎么在matlab里实现呀 或者gibbs抽样 求代码
MATLAB中只有矩阵和cell,如果是想要在matlab里实现
要取出第r行、第c列的矩阵元素用:A(r,c)
要取出第r行、第c列的cell成员用:A{r,c}
吉布斯抽样是什么
吉布斯采样是生成马尔科夫链的一种方法,生成的马尔科夫链可以用来做蒙特卡洛仿真,从而求得一个较复杂的多元分布。
吉布斯采样的具体做法:假设有一个k维的随机向量,现想要构造一条有n个样本的k维向量(n样本马尔科夫序列),那么(随机)初始化一个k维向量,然后固定这个向量其中的k-1个元素,抽取剩下的那个元素(生成给定后验的随机数),这样循环k次,就把整个向量更新了一遍,也就是生成了一个新的样本,把这个整体重复n次就得到了一条马尔科夫链。
什么是吉布斯采样算法
几个可以学习gibbs sampling的方法
1,读Bishop的Pattern Recognition and Machine Learning,讲的很清楚,但是我记得好像没有例子。
2,读artificial Intelligence,2、3版,都有。但是我没读过。
3,最方便的,查wiki,这个说的最清楚。
这里通俗点的解释一下。首先,什么是sampling。sampling就是以一定的概率分布,看发生什么事件。举一个例子。甲只能E:吃饭、学习、打球,时间T:上午、下午、晚上,天气W:晴朗、刮风、下雨。现在要一个sample,这个sample可以是:打球+下午+晴朗。。。
问题是我们不知道p(E,T,W),或者说,不知道三件事的联合分布。当然,如果知道的话,就没有必要用gibbs sampling了。但是,我们知道三件事的conditional distribution。也就是说,p(E|T,W),p(T|E,W),p(W|E,T)。现在要做的就是通过这三个已知的条件分布,再用gibbs sampling的方法,得到joint distribution。
具体方法。首先随便初始化一个组合,i.e. 学习+晚上+刮风,然后依条件概率改变其中的一个变量。具体说,假设我们知道晚上+刮风,我们给E生成一个变量,比如,学习-》吃饭。我们再依条件概率改下一个变量,根据学习+刮风,把晚上变成上午。类似地,把刮风变成刮风(当然可以变成相同的变量)。这样学习+晚上+刮风-》吃饭+上午+刮风。
同样的方法,得到一个序列,每个单元包含三个变量,也就是一个马尔可夫链。然后跳过初始的一定数量的单元(比如100个),然后隔一定的数量取一个单元(比如隔20个取1个)。这样sample到的单元,是逼近联合分布的。
我也是刚wiki到的,可能不完全正确,欢迎讨论:
zhangshiqihit@yahoo.com.cn
gibbs抽样的英文
Examples show that the results obtained using laplace method are very close to that obtained using gibbs samppng method
实例表明通过laplace方法得到的估计与利用 gibbs抽样 方法得到的参数的bayes估计很接近。
For example , to the general models such as follows : with the apppcation of the serial important function and the gibbs algorithms in mcmc methods , i give some results in the choice of the important function and how to use the gibbs algorithms in the forecasting of the models
例如,对于如下一般模型:分别应用序列重要抽样的方法和mcmc方法中的 gibbs抽样 算法对上述模型作预测,并且对于重要函数的选取和抽样的可行性提出了几个结论。