Die Verbindung zwischen beiden Konzepten besteht darin, dass Markov-Ketten-Monte-Carlo-Methoden (auch bekannt als MCMC-Methoden) auf der Basis der Markov-Ketten-Theorie Simulationen und Monte-Carlo-Approximationen aus einer komplexen Zielverteilung erstellen .π
In der Praxis geben diese Simulationsmethoden eine Sequenz , die eine Markov-Kette ist, dh so, dass die Verteilung von X i in der gesamten Vergangenheit { X i - 1 , … , X 1 } nur von X abhängt i - 1 . Mit anderen Worten, X i = f ( X i - 1 , ϵ i ) wobei fX1,…,XNXi{Xi−1,…,X1}Xi−1
Xi=f(Xi−1,ϵi)
fπϵiXiπi∞
Das einfachste Beispiel eines MCMC - Algorithmus ist der Slice - Sampler : bei der Iteration i diesen Algorithmus tun
- ϵ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}),
i.e., Xi=±ϵ2i{−2log(2π−−√ϵ1i) φ ( Xi - 1) }1 / 2
mit ϵ2ich∼ U ( 0 , 1 )
oder 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]
Hier ist eine Darstellung der Ausgabe mit der richtigen Anpassung an die N (0,1) Ziel und die Entwicklung der Markov-Kette ( Xich).
Und hier ist ein Zoom auf die Entwicklung der Markov-Kette ( Xich, ϵ1ichπ( Xich) ) in den letzten 100 Iterationen, erhalten von
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")}
Dies folgt vertikalen und horizontalen Bewegungen der Markov-Kette unter der Zieldichtekurve.