A conexão entre os dois conceitos é que os métodos Monte Carlo da cadeia de Markov (aka MCMC) confiam na teoria da cadeia de Markov para produzir simulações e aproximações de Monte Carlo a partir de uma distribuição alvo complexa .π
Na prática, esses métodos de simulação produzem uma sequência que é uma cadeia de Markov, ou seja, de tal forma que a distribuição de X i, considerando todo o passado { X i - 1 , … , X 1 }, depende apenas de X i - 1 . Em outras palavras, X i = f ( X i - 1 , ϵ i ) onde fX1, … , XNXEu{ Xi - 1, … , X1}Xi - 1
XEu= f( Xi - 1, ϵEu)
fé uma função especificada pelo algoritmo e a distribuição alvo
e os
ε i 's são iid. As garantias teoria (ergodic) que
X i converge (na distribuição) para
pi como
i chega a
∞ .
πϵEuXEuπEu∞
O exemplo mais fácil de um algoritmo MCMC é o amostrador de fatia : na iteração i deste algoritmo, faça
- simular ϵ1Eu∼ U ( 0 , 1 )
- XEu∼ U ( { x ; π( x ) ≥ ϵ1Euπ( Xi - 1) } )ϵ2Eu
N (0,1)
- simular ϵ 1 i ∼ U ( 0 , 1 ϵ1Eu∼ U ( 0 , 1 )
- XEu∼ U ( { x ; x2≤ - 2 log( 2 π--√ϵ1Eu} )XEu= ± ϵ2Eu{ - 2 log( 2 π--√ϵ1Eu) φ ( Xi - 1) }1 / 2ϵ2Eu∼ U ( 0 , 1 )
ou em 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)( XEu)
( XEu, ϵ1Euπ( XEu) ))
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")}
que segue movimentos verticais e horizontais da cadeia de Markov sob a curva de densidade alvo.