Le lien entre les deux concepts est que les méthodes de la chaîne de Markov Monte Carlo (aka MCMC) s'appuient sur la théorie de la chaîne de Markov pour produire des simulations et des approximations de Monte Carlo à partir d'une distribution cible complexe .π
X1,…,XNXi{Xi−1,…,X1}Xi−1
Xi=f(Xi−1,ϵi)
fπϵiXiπi∞
L'exemple le plus simple d'un algorithme MCMC est l'échantillonneur de tranches : à l'itération i de cet algorithme, faites
- ϵ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ϵ2i∼U(0,1)
ou en 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]
N(0,1)(Xi)
(Xi,ϵ1iπ(Xi))
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")}
qui suit les mouvements verticaux et horizontaux de la chaîne de Markov sous la courbe de densité cible.