来自条件分布的 Gibbs 采样器

机器算法验证 贝叶斯 采样 马尔可夫链蒙特卡罗 吉布斯
2022-03-20 18:06:12

我试图提出以下密度的吉布斯采样,

p(y1,y2,y3)exp[(y1+y2+y3+θ12y1y2+θ13y3y1+θ23y2y3)]

其中,(y1,y2,y3)R+3θij=i+j

如何找到完整的条件分布?

然后,我将为 i=1,...n 生成示例\{(y1i,y2i,y3i)}i=1,...n

我了解吉布斯抽样,抽样一个变量,同时保持其他变量不变。

2个回答

你去 - Gibbs Sampler:燃烧期是为了在样本中达到一定的平稳性

burning_period=5000
iterations=1000
y=matrix(nrow=(burning_period+iterations),ncol=3)
a=matrix(nrow=iterations,ncol=3)

y[1,1]=0.5        #Initial Sample 
y[1,2]=0.6
y[1,3]=0.2   

 for(i in 2:(burning_period+iterations)){

     #I have put 3,3,4 as my theta's. You may make the code generic for any choice of theta's.
     t= 1+3*y[i-1,2]+4*y[i-1,3]
     # Use t or t*-1 based on your requirement.
     t=rexp(1,t)  

     y[i,1]=t
     t= 1+3*y[i,1]+5*y[i-1,3]   
     y[i,2]=rexp(1,t)

     t=1+4*y[i,1]+5*y[i,2]
     y[i,3]=rexp(1,t)  
    }
posteriorSample=y[(burning_period+1) : (burning_period+iterations), ]

完整的条件分布可以通过固定两个“其他”变量的值来找到,然后结合所有可以结合的项并查看你得到的结果:

p(y1|y2,y3)exp{(1+θ12y2+θ13y3)y1}

这显然是参数为的指数分布,对于也是类似的,它是参数为,它是参数为的指数分布。 1+θ12y2+θ13y3p(y2|y1,y3)1+θ12y1+θ23y3p(y3|y1,y2)1+θ13y1+θ23y2

的一些值开始,然后一次又一次地循环三个条件分布,从适当的分布生成指数变量,并用当前值替换适当的自然地,您必须丢弃一些初始变量块以消除老化效果。y1,y2,y3yi