การเชื่อมต่อระหว่างแนวความคิดทั้งสองก็คือว่ามาร์คอฟโซ่ Monte Carlo (aka MCMC) วิธีการพึ่งพาทฤษฎีห่วงโซ่มาร์คอฟเพื่อจำลองการผลิตและการประมาณ Monte Carlo จากความซับซ้อนกระจายเป้าหมายππ
X1,…,XNXi{Xi−1,…,X1}Xi−1
Xi=f(Xi−1,ϵi)
fπεผมXผมπผม∞
ตัวอย่างที่ง่ายที่สุดของอัลกอริทึม MCMC คือ ชิ้นตัวอย่าง : ที่วนซ้ำของอัลกอริทึมนี้
- ϵ1i∼U(0,1)
- Xi∼U({x;π(x)≥ϵ1iπ(Xi−1)})ϵ2i )
N(0,1)
- ϵ1i∼U(0,1)
- Xi∼U({x;x2≤−2log(2π−−√ϵ1i})Xi=±ϵ2i{−2log(2π−−√ϵ1i)φ(Xi−1)}1/2
with ϵ2i∼U(0,1)
or in R
T=1e4
x=y=runif(T) #random initial value
for (t in 2:T){
epsilon=runif(2)#uniform white noise
y[t]=epsilon[1]*dnorm(x[t-1])#vertical move
x[t]=sample(c(-1,1),1)*epsilon[2]*sqrt(-2*#Markov move from
log(sqrt(2*pi)*y[t]))}#x[t-1] to x[t]
นี่คือการแสดงผลลัพธ์ที่แสดงให้เห็นถึงความเหมาะสมกับ ไม่มี (0,1) เป้าหมายและวิวัฒนาการของเชนมาร์คอฟ ( Xผม).
และนี่คือการย่อขยายวิวัฒนาการของสายมาร์คอฟ ( Xผม, ϵ1ผมπ( Xผม) ) ในช่วง 100 การวนซ้ำล่าสุดที่ได้รับโดย
curve(dnorm,-3,3,lwd=2,col="sienna",ylab="")
for (t in (T-100):T){
lines(rep(x[t-1],2),c(y[t-1],y[t]),col="steelblue");
lines(x[(t-1):t],rep(y[t],2),col="steelblue")}
ที่ติดตามการเคลื่อนไหวในแนวตั้งและแนวนอนของโซ่มาร์คอฟภายใต้เส้นโค้งความหนาแน่นเป้าหมาย