monte carlo via cadeias de markov (mcmc) · monte carlo via cadeias de markov (mcmc) ricardo ehlers...

Post on 30-Sep-2020

23 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Monte Carlo via Cadeias de Markov (MCMC)

Ricardo Ehlersehlers@icmc.usp.br

Departamento de Matematica Aplicada e EstatısticaUniversidade de Sao Paulo

Cap. 6 a 10 em Robert & CasellaCap. 5 a 7 em Gamerman & Lopes

Introducao

The top 10 algorithms with the greatest influence on the

development and practice of science and engineering in the 20th

century (in chronological order):

1. Metropolis Algorithm for Monte Carlo

2. Simplex Method for Linear Programming

3. Krylov Subspace Iteration Methods

4. The Decompositional Approach to Matrix Computations

5. The Fortran Optimizing Compiler

6. QR Algorithm for Computing Eigenvalues

7. Quicksort Algorithm for Sorting

8. Fast Fourier Transform

9. Integer Relation Detection

10. Fast Multipole Method

Dongarra and Sullivan (2000) Guest Editors’ Introduction:

The Top 10 Algorithms, Computing in Science and Engineering,

2, 22-23.

1

Cadeias de Markov

Definicao

Seja X0,X1, . . . um processo estocastico com espaco de estadosfinito ou infinito enumeravel.

Propriedade de Markov: a probabilidade de que a cadeia assumaum certo valor futuro, quando o seu estado atual e conhecido, naose altera se conhecemos o seu comportamento passado.

Em termos probabilisticos, temos que,

P(Xt+1 = y |Xt = x , xt−1, . . . , x0) = P(Xt+1 = y |Xt = x).

2

Objetivo: Gerar valores de uma distribuicao π(·) simulando umacadeia de Markov.

• A cadeia deve ser homogenea, irredutivel e ergodica cujadistribuicao estacionaria seja π(·).

• Dadas as realizacoes {X(t), t = 0, 1, . . . } de uma cadeia deMarkov que tenha π como distribuicao de equilibrio entao, sobas condicoes acima,

X (t) t→∞−→ π(x)

1

n

n∑

t=1

g(X(t)i )

n→∞−→ Eπ(g(Xi ))

3

• A cadeia e por definicao dependente.

• Media aritmetica dos valores da cadeia e um estimadorconsistente da media teorica.

• Cadeia Irredutivel: probabilidade positiva de atingir qualquerponto a partir de qualquer outro ponto em numero finito deiteracoes.

• Cadeia Aperiodica: nao atinge o mesmo ponto comregularidade fixa.

4

Nucleo de transicao de uma cadeia de Markov.

• No caso discreto,

P(Xt+1 = y |Xt = x).

• No caso continuo, se K (·|x) e o nucleo de transicao entao,

P(X ∈ A|x) =∫

A

K (y |x)dy .

• Iremos considerar cadeias de Markov cujo nucleo de transicaoe a funcao de densidade condicional de Xt+1|Xt .

5

Exemplo. Uma sequencia de variaveis aleatorias {Xt , t = 0, 1, . . . }e dita um passeio aleatorio se,

Xt+1 = Xt + ǫt ,

com ǫt independente de Xt ,Xt−1, . . .

Propriedade Markoviana,

P(Xt+1 ∈ A|x0, x1, . . . , xt) = P(Xt+1 ∈ A|xt)

6

Recorrencia

Em uma cadeia de Markov com espaco de estados finito, umestado e dito recorrente se o numero medio de visitas e infinito.Caso contrario, o estado e dito transiente.

• A cadeia e dita recorrente se o numero medio de visitas a umconjunto qualquer A e infinito.

• Em MCMC estamos interessados em cadeias recorrentes, queexplorem todo o espaco de estados.

Recorrencia de Harris

Se alem de recorrente a cadeia tem Recorrencia de Harris entao,

P(Xt ∈ A|x0) = 1

Ou seja, comecando a cadeia de qualquer ponto inicial (x0) adistribuicao estacionaria e a mesma.

7

Na pratica os metodos MCMC requerem,

• Especificar o nucleo de transicao da cadeia.

• Escolha do valor inicial da cadeia.

• Monitorar a convergencia. Como decidir se a cadeia atingiu oequilibrio?

• A cadeia resultante precisa ser homogenea, irredutivel eaperiodica.

8

Amostrador de Gibbs

O amostrador de Gibbs e uma cadeia de Markov onde as transicoesde um estado para outro sao feitas de acordo com as distribuicoescondicionais completas,

π(xi |x−i ) =π(x)

π(x)dxi

∝ π(x).

sendox−i = (x1, . . . , xi−1, xi+1, . . . , xd)

′.

9

• Ao inves de gerar valores da distribuicao conjunta π(x), seraogerados valores das distribuicoes condicionais.

• π(xi |x−i ) e obtida considerando os termos da distribuicaoconjunta que nao dependem de xi .

• Gerar valores de π(xi |x−i ), i = 1, . . . , d e equivalente a gerarvalores de π(x) ?

10

1. inicialize o contador de iteracoes da cadeia t = 0;

2. especifique valores iniciais x(0) = (x(0)1 , . . . , x

(0)d )′;

3. obtenha um novo valor de x(t) a partir de x(t−1) atraves dageracao sucessiva dos valores

x(t)1 ∼ π(x1|x (t−1)

2 , x(t−1)3 , . . . , x

(t−1)d )

x(t)2 ∼ π(x2|x (t)1 , x

(t−1)3 , . . . , x

(t−1)d )

...

x(t)d ∼ π(xd |x (t)1 , x

(t)2 , . . . , x

(t)d−1)

4. Incremente o contador de t para t + 1 e retorne ao passo 3ate obter convergencia.

11

• Gerar valores das distribuicoes condicionais completas esuficiente para recuperar a distribuicao conjunta.

• A sequencia x(t), t = 1, 2, . . . e uma cadeia de Markov comdistribuicao invariante π(x).

• Cada sequencia x(t)j , t = 1, 2, . . . , j = 1, . . . , d e uma cadeia

de Markov com distribuicao invariante πj(xj).

• As componentes do vetor x podem ser escalares, vetores oumatrizes.

12

Exemplo. Seja um vetor aleatorio X = (X1,X2,X3) com funcaode probabilidade p(x) que admite a seguinte simplificacao,

p(x) ∝ p(x1|x2)p(x2)p(x3).

sendo p(x1|x2), p(x2) e p(x3) conhecidas.

As probabilidades condicionais completas ficam,

p(x1|x2, x3) ∝ p(x1|x2)p(x2|x1, x3) ∝ p(x1|x2)p(x2)p(x3|x1, x2) ∝ p(x3)

13

Exemplo. Sejam X e Y variaveis aleatorias continuas comdensidade de probabilidade conjunta,

f (x , y) = kx4 exp(−x(2 + y)), x > 0, y > 0.

As densidades condicionais completas sao,

f (y |x) ∝ kx4 exp(−x(2 + y)) ∝ exp(−xy), y > 0.

f (x |y) ∝ kx4 exp(−x(2 + y)) ∝ x4 exp(−x(2 + y)), x > 0.

Portanto,

Y |X = x ∼ Exponencial(x),

X |Y = y ∼ Gama(5, 2 + y)

14

> gibbs <- function(x0,y0,niter=1000) {

+ x = y = rep(0, niter)

+ x[1] = x0

+ y[1] = y0

+ for (i in 2:niter) {

+ x[i] = rgamma(1,5,2+y[i-1])

+ y[i] = rexp(1,x[i])

+ }

+ return(cbind(x,y))

+ }

15

10 valores gerados com ponto inicial x = 5 e y = 1.5.

x

y

0.02

0.04

0.06

0.08

0.1

0.12

0.14

0.16 0.18

0.2 0.22

0.24 0.26

0 1 2 3 4 5 6

0.0

0.5

1.0

1.5

2.0

16

1000 valores gerados com ponto inicial x = 5 e y = 1.5.

x

y

0.02

0.04

0.06

0.08

0.1

0.12

0.14

0.16 0.18

0.2 0.22

0.24 0.26

0 1 2 3 4 5 6

0.0

0.5

1.0

1.5

2.0

17

x y

0 200 400 600 800 1000 0 200 400 600 800 1000

0.0

2.5

5.0

7.5

0

2

4

6

Traços das cadeias simuladas

18

y

x

0.0 2.5 5.0 7.5 10.0

Distribuições a posteriori com medianas e intervalos de 95%

19

Exemplo. Seja o vetor aleatorio (X ,Y ) com distribuicao normalbivariada,

(X ,Y ) ∼ N

([

00

]

,

[

1 ρρ 1

])

Gerar valores de (X ,Y ) usando as distribuicoes condicionaiscompletas, i.e.

X |Y = y ∼ N(ρy , 1− ρ2)

Y |X = x ∼ N(ρx , 1− ρ2)

Amostrador de Gibbs. Dado um valor yt na iteracao t,

1. gere xt+1|yt ∼ N(ρyt , 1− ρ2),

2. gere yt+1|xt+1 ∼ N(ρxt+1, 1− ρ2).

20

> gibbs <- function(x0,y0,niter=1000) {

+ x = y = rep(0, niter)

+ x[1] = x0

+ y[1] = y0

+ for (i in 2:niter) {

+ x[i] = rnorm(1,mean=rho*y[i-1],sd=sqrt(1-rho^2))

+ y[i] = rnorm(1,mean=rho*x[i],sd=sqrt(1-rho^2))

+ }

+ return(cbind(x,y))

+ }

21

x

y

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

2.2

2.4

2.6

2.8

3

3.2

3.4 3

.6

3.8 4

−3 −2 −1 0 1 2 3

−3

−2

−1

01

23

ρ = 0.75

22

x

y

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8 0.9

1

1.1

1.2

1.3

1.4

1.5

1.6

1.7

−3 −2 −1 0 1 2 3

−3

−2

−1

01

23

ρ = 0.95

23

x

y

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

2.2

2.4

2.6

2.8

3

3.2

3.4 3

.6

3.8 4

−3 −2 −1 0 1 2 3

−3

−2

−1

01

23

ρ = 0.75

24

x y

0 200 400 600 800 1000 0 200 400 600 800 1000

−2

0

2

−3

−2

−1

0

1

2

3

Traços das cadeias simuladas

25

y

x

−2 0 2

Distribuições a posteriori com medianas e intervalos de 95%

26

Exemplo. Modelo autoexponencial (Besag, 1974). Seja o vetoraleatorio y = (y1, y2, y3) cuja funcao de densidade e,

f (y) ∝ exp[−(y1 + y2 + y3 + θ12y1y2 + θ23y2y3 + θ31y3y1)],

com y1, y2, y3 > 0 e θij conhecidos.

Verifique que,

f (y2|y1) ∝ exp[−(y1 + y2 + θ12y1y2)]

1 + θ23y2 + θ31y1,

f (y1) ∝ exp(−y1)

0

exp[−(y2 + θ12y1y2)]

1 + θ23y2 + θ31y1dy2

que sao dificeis de serem simuladas.

27

No entanto as distribuicoes condicionais completas sao todasexponenciais, por exemplo,

Y3|y1, y2 ∝ Exponencial(1 + θ23y2 + θ31y1).

Verifique as outras!

28

Exemplo. Em um modelo Bayesiano para os dadosy = (y1, . . . , yn) que depende dos parametros θ, λ e δ suponha quea distribuicao conjunta e dada por,

p(y, θ, λ, δ) ∝ p(y|θ, δ) p(θ|λ) p(λ) p(δ).

Apos observar y as distribuicoes de cada parametro dados todos osoutros sao,

π(θ|y, λ, δ) ∝ p(y|θ, δ) p(θ|λ)

π(λ|y, θ, δ) ∝ p(θ|λ) p(λ)

π(δ|y, θ, λ) ∝ p(y|θ, δ) p(δ).

29

Exemplo. Suponha que Y1, . . . ,Yn sao independentes tais que,

Yi ∼ N(µ, σ2), i = 1, . . . , n

µ ∼ N(0, s2)

τ ∼ Gama(a, b)

sendo τ = σ−2 com s2, a e b conhecidos.

A funcao de verossimilhanca e dada por,

p(y|µ, τ) ∝ τn/2 exp

[

−τ

2

n∑

i=1

(yi − µ)2

]

.

30

Portanto, a densidade conjunta de (µ, τ) apos observar y fica,

p(µ, τ |y) ∝ p(y|µ, τ) p(µ) p(τ)

∝ τn/2 exp

[

−τ

2

n∑

i=1

(yi − µ)2

]

exp

[

− µ2

2s2

]

τ a−1e−bτ .

Esta distribuicao conjunta nao tem forma padrao mas asdensidades condicionais completas sao faceis de obter.

31

p(µ|y, τ) ∝ exp

[

−τ

2

n∑

i=1

(yi − µ)2

]

exp

[

− µ2

2s2

]

∝ exp

[

−1

2(nτ + s−2)µ2 − 2µτ y)

]

∝ exp

[

− 1

2C(µ−m)2

]

sendo C−1 = nτ + s−2 e m = Cnτ y .

p(τ |y, µ) ∝ τ a+n/2−1 exp

[

−τ

(

b +1

2

n∑

i=1

(yi − µ)2

)]

.

32

Portanto, as distribuicoes condicionais completas sao,

µ|y, τ ∼ N(m,C )

τ |y, µ ∼ Gama

(

a+n

2, b +

1

2

n∑

i=1

(yi − µ)2

)

33

1. inicialize o contador de iteracoes da cadeia t = 0;

2. especifique valores iniciais (µ(0), τ (0));

3. obtenha (µ(t), τ (t)) a partir de (µ(t−1), τ (t−1)) gerandovalores,

µ(t)|τ (t−1), y ∼ N(m(t−1),C (t−1)),

C (t−1) = (nτ (t−1) + s−2)−1,

m(t−1) = C (t−1)nτ (t−1)y

τ (t)|µ(t), y ∼ Gama

(

a+n

2, b +

1

2

n∑

i=1

(yi − µ(t))2

)

4. Incremente o contador de t para t + 1 e retorne ao passo 3ate obter convergencia.

34

> gibbs1 <- function(y,s2,a,b,mu0,tau0,niter) {

+ n= length(y)

+ tau= rep(0,niter)

+ mu = rep(0,niter)

+ tau[1]= tau0

+ mu [1]= mu0

+ ybar= mean(y)

+ for (i in 2:niter) {

+ C= 1/(n*tau[i-1] + 1/s2)

+ m= C * ybar * n * tau[i-1]

+ mu[i] = rnorm (1, mean=m, sd= sqrt(C) )

+ tau[i]= rgamma(1,a+0.5*n,b+0.5*sum((y-mu[i])^2))

+ }

+ theta = cbind(mu,1/tau)

+ colnames(theta) = c("mu","sigma2")

+ return(theta)

+ }

35

Aplicando a dados simulados Y1, . . . ,Yn ∼ N(2, 4), n = 50 e 2000iteracoes.

> y= rnorm(50,mean=2, sd=2)

Hiperparametros, valores iniciais e numero de iteracoes doamostrador de Gibbs,

> s2 = 4

> a = 0.1

> b = 0.1

> mu0 = 0

> tau0 = 1

> niter= 2000

> m = gibbs1(y,s2,a,b, mu0,tau0,niter)

36

Alguns pacotes do R para analise de cadeias de Markov,

• coda (Convergence Diagnosis and Output Analysis)

• boa (Bayesian Output Analysis)

• ggmcmc (Tools for Analyzing MCMC Simulations fromBayesian Inference)

• bayesplot (Plotting for Bayesian Models)

37

> library(coda)

> theta = as.mcmc(m)

> summary(theta)

Iterations = 1:2000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 2000

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE Time-series SE

mu 1.363 0.2824 0.006315 0.006315

sigma2 4.091 0.8484 0.018970 0.018581

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

mu 0.8268 1.176 1.362 1.540 1.943

sigma2 2.7074 3.501 3.985 4.597 6.03038

> plot_title <- ggtitle("Tracos das cadeias simuladas")

> bayesplot_theme_set(theme_minimal())

> color_scheme_set("blue")

> mcmc_trace(as.matrix(m)) + plot_title

39

mu sigma2

0 500 1000 1500 2000 0 500 1000 1500 2000

2.5

5.0

7.5

0.0

0.5

1.0

1.5

2.0

2.5

Traços das cadeias simuladas

40

sigma2

mu

0.0 2.5 5.0 7.5

Distribuições a posteriori com medianas e intervalos de 95%

41

mu sigma2

0 5 10 15 20 0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

42

Evolucao dos quantis amostrais (2.5%, 50%, 97.5%).

0 500 1500

0.0

0.5

1.0

1.5

2.0

Iterations

mu

0 500 1500

12

34

56

Iterations

sigma2

43

Exemplo. Sejam Y1, . . . ,Yn ∼ Poisson(λ) com λ ∼ Exp(β). Aoinves de especificar um valor para β este tambem recebe umadistribuicao, β ∼ Gama(c , d).

Temos entao que,

p(y|λ) =n∏

i=1

λyi e−λ

yi !

p(λ|β) = βe−βλ

p(β) =dc

Γ(c)βc−1e−dβ

44

Portanto,

p(λ, β|y) ∝n∏

i=1

λyi e−λ

yi !p(λ|β) p(β)

∝ λte−nλ β e−βλ βc−1e−dβ, t =n∑

i=1

yi .

p(λ|β, y) ∝ λte−(β+n)λ

p(β|λ, y) ∝ βce−(λ+d)β

Portanto, as distribuicoes condicionais completas sao

λ|β, y ∼ Gama(t + 1, β + n)

β|λ, y) ∼ Gama(c + 1, λ+ d)

45

> Gibbs2 <- function(c,d,y,niter){

+ N = length(y)

+ lambda = matrix(0, nrow=niter)

+ beta = matrix(0, nrow=niter)

+ lambda[1]= 1

+ beta [1]= 1

+ t1 = sum(y)

+ for (i in 2:niter) {

+ lambda[i]= rgamma(1, 1+t1, beta[i-1]+N)

+ beta [i]= rgamma(1, 1+c, lambda[i]+d)

+ }

+ return(theta = list(lambda=lambda,beta=beta))

+ }

46

Exemplo. Aplicando o algoritmo anterior com dados simuladosY1, . . . ,Yn ∼ Poisson(4), n = 100, c = d = 0.01 e 2000 iteracoes.

> y= rpois(100,lambda=4)

> niter = 2000

> q = Gibbs2(c = 0.01, d = 0.01, y, niter= niter)

> q1= mcmc(cbind(q$lambda, q$beta))

> q2= window(q1, start=201)

> varnames(q2)= c("lambda","beta")

> y

[1] 6 6 5 2 2 1 5 0 4 5 3 5 3 1 2 5 6 6 1 3

[26] 2 3 4 5 1 5 5 2 3 7 2 3 3 1 1 4 1 3 5 1

[51] 5 3 2 7 4 1 5 6 4 13 4 7 5 1 4 3 3 4 3 5

[76] 2 5 4 3 5 1 7 3 2 3 6 5 6 3 7 4 7 4 2 3

47

Iterations = 201:2000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 1800

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE Time-series SE

lambda 3.7393 0.1878 0.004426 0.003652

beta 0.2817 0.2775 0.006541 0.007670

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

lambda 3.390461 3.61014 3.7403 3.8625 4.113

beta 0.006326 0.08143 0.1972 0.3943 1.019

48

lambda beta

0 500 1000 1500 0 500 1000 1500

0.0

0.5

1.0

1.5

2.0

2.5

3.5

4.0

Traços das cadeias simuladas

49

beta

lambda

0 1 2 3 4

Distribuições a posteriori com medianas e intervalos de 95%

50

lambda beta

0 5 10 15 20 0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

51

Medias ergodicas ao longo das iteracoes.

3.6

03

.70

3.8

0

lam

bd

a

0.2

00

.30

0.4

0

0 500 1000 1500

be

ta

iteracoes

means

52

Evolucao dos quantis amostrais (2.5%, 50%, 97.5%).

500 1500

3.4

3.6

3.8

4.0

4.2

Iterations

lambda

500 1500

0.0

0.2

0.4

0.6

0.8

1.0

1.2

Iterations

beta

53

Exemplo. Os dados abaixo sao contagens anuais de casamentospor 1000 habitantes na Italia entre 1936 e 1951.

> y = c(7,8,9,7,7,6,6,5,5,7,9,10,8,8,8,7)

As contagens medias nao devem ser constantes ao longo dos anosdevido ao efeito do perıodo de guerra. Vamos assumir entao que,

Yi |λi ∼ Poisson(λi)

λi ∼ Exp(β), i = 1, . . . , n

β ∼ Gama(c , d)

54

p(β, λ1, . . . , λn | y) ∝n∏

i=1

λyii e

−λi

n∏

i=1

βe−βλi βc−1eβd

p(β|y, λ1, . . . , λn) ∝ βc+n−1e−β(d+∑n

i=1 λi )

p(λi |β, y, λ−i ) ∝ λyii e

−λi (β+1)

Portanto,

β|y, λ1, . . . , λn ∼ Gama(c + n, d +n∑

i=1

λi )

λi |β, y, λ−i ∼ Gama(yi + 1, β + 1)

55

> Gibbs3 <- function (c, d, y, niter){

+ N = length(y)

+ lambda = matrix(0, nrow=niter, ncol=N)

+ beta = matrix(0, nrow=niter)

+ lambda[1,] = rep(1,N)

+ beta[1] = 1

+ for (i in 2:niter){

+ for (j in 1:N) lambda[i,j]=rgamma(1,y[j]+1,beta[i-1]+1)

+ beta[i] = rgamma(1,c+1, d+sum(lambda[i,]))

+ }

+ return(list(lambda = lambda, beta = beta))

+ }

56

Iterations = 201:2000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 1800

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE Time-series SE

lambda 1 7.998055 2.835081 0.0668235 0.0668235

lambda 2 8.944898 3.120508 0.0735511 0.0735511

lambda 3 9.915417 3.216012 0.0758021 0.0758021

lambda 4 7.957833 2.832384 0.0667599 0.0667599

lambda 5 7.930075 2.799427 0.0659831 0.0659831

lambda 6 6.927021 2.657406 0.0626357 0.0626357

lambda 7 7.014190 2.710355 0.0638837 0.0692631

lambda 8 5.960430 2.408541 0.0567699 0.0567699

lambda 9 5.974878 2.455295 0.0578719 0.0631951

57

lambda 10 8.001614 2.798360 0.0659580 0.0743087

lambda 11 10.005084 3.177227 0.0748880 0.0748880

lambda 12 10.870986 3.229228 0.0761136 0.0761136

lambda 13 8.862042 2.986458 0.0703915 0.0634856

lambda 14 8.936886 2.984165 0.0703374 0.0625564

lambda 15 8.971401 2.971617 0.0700417 0.0700417

lambda 16 7.849945 2.746720 0.0647408 0.0625234

beta 0.008244 0.007924 0.0001868 0.0001868

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

lambda 1 3.5246480 5.900112 7.726475 9.6493 14.39759

lambda 2 3.9049885 6.710652 8.582586 10.7658 16.06745

lambda 3 4.7946997 7.552836 9.487644 11.8334 17.30265

lambda 4 3.5766547 5.918542 7.534403 9.6779 14.49540

lambda 5 3.4459195 5.918151 7.558955 9.5475 14.33402

lambda 6 2.6414691 4.991869 6.630721 8.3837 13.17473

lambda 7 2.8075146 5.037588 6.600702 8.7135 13.10404

58

lambda 8 2.2862922 4.169336 5.668539 7.4024 11.62166

lambda 9 2.2348913 4.213837 5.572444 7.3770 11.52448

lambda 10 3.4472962 6.004650 7.680049 9.6216 14.49164

lambda 11 4.8053440 7.745268 9.719038 11.8548 17.36491

lambda 12 5.5583188 8.558385 10.509884 12.8736 17.83346

lambda 13 4.1312262 6.623102 8.578227 10.6630 15.32376

lambda 14 4.0582237 6.780241 8.597522 10.7409 15.43769

lambda 15 4.1557576 6.852114 8.582123 10.7980 15.46722

lambda 16 3.3427246 5.828858 7.542555 9.5362 13.98021

beta 0.0003024 0.002647 0.005813 0.0117 0.02936

59

media erropadrao

1936 7.998055 2.835081

1937 8.944898 3.120508

1938 9.915417 3.216012

1939 7.957833 2.832384

1940 7.930075 2.799427

1941 6.927021 2.657406

1942 7.014190 2.710355

1943 5.960430 2.408541

1944 5.974878 2.455295

1945 8.001614 2.798360

1946 10.005084 3.177227

1947 10.870986 3.229228

1948 8.862042 2.986458

1949 8.936886 2.984165

1950 8.971401 2.971617

1951 7.849945 2.746720

60

1940 1945 1950

46

81

01

21

4

61

Boxplots dos valores simulados das variaveis latentes.

1936 1938 1940 1942 1944 1946 1948 1950

05

10

15

20

25

62

Exemplo. Em um processo de contagem no qual foram observadosY1, . . . ,Yn suspeita-se que houve um ponto de mudanca m tal que

Yi |λ ∼ Poisson(λ), i = 1, . . . ,m

Yi |φ ∼ Poisson(φ), i = m + 1, . . . , n.

Deseja-se estimar m, λ e φ.

Distribuicoes a priori independentes:

λ ∼ Gama(a, b)

φ ∼ Gama(c , d)

p(m) = 1/n.

63

A densidade a posteriori fica,

p(λ, φ,m|y) ∝m∏

i=1

e−λλyi

n∏

i=m+1

e−φφyi λa−1e−bλ φc−1e−dφ 1

n

∝ λa+t1−1e−(b+m)λφc+t2−1e−(d+n−m)φ 1

n

sendo

t1 =m∑

i=1

yi e t2 =n∑

i=m+1

yi .

.

64

Portanto, as densidades condicionais completas ficam,

p(λ|φ,m, y) ∝ λa+t1−1e−(b+m)λ

p(φ|λ,m, y) ∝ φc+t2−1e−(d+n−m)φ

p(m|λ, φ, y) ∝ λt1e−mλφt2e−(n−m)φ, m = 1, . . . , n.

ou seja,

λ|φ,m, y ∼ Gama(a+ t1, b +m)

φ|λ,m, y ∼ Gama(c + t2, d + n −m)

65

> Gibbs <- function(a,b,c,d,y,niter){

+ N = length(y)

+ lambda = phi = m = matrix(0, nrow=niter)

+ lambda[1] = phi[1] = 1; m[1] = 10

+ for (i in 2:niter) {

+ t1 = sum(y[1:m[i-1]]); t2 = 0; prob = NULL

+ if (m[i-1] < N) t2 = sum(y[(m[i-1]+1):N])

+ lambda[i] = rgamma(1,(a + t1), (b + m[i-1]))

+ phi[i] = rgamma(1,(c + t2), (d + N-m[i-1]))

+ for (j in 1:N){

+ t1 = sum(y[1:j])

+ t2 = 0

+ if (j < N) t2 = sum(y[(j+1):N])

+ aux=(lambda[i-1]^t1)*exp(-j*lambda[i-1])*(phi[i-1]^t2)*exp(

+ prob = c(prob,aux)

+ }

+ soma = sum(prob)

+ probm = prob/soma

+ m[i] = sample(x=N, size=1, prob=probm)

+ }

+ return(list(lambda=lambda, phi=phi, m=m))}66

Exemplo. Testando a funcao Gibbs com 40 dados simulados deprocessos com medias 2 e 5 e ponto de mudanca 23.

> set.seed(124)

> y= c(rpois(n=22, lambda=2),rpois(n=18, lambda=5))

> y

[1] 0 2 2 1 1 1 2 2 4 1 3 3 3 3 2 0 2 3 4 0

[26] 3 7 4 7 4 7 4 4 7 2 10 3 9 3 4

> x = Gibbs(a=0.1, b=0.1, c=0.1, d=0.1, y=y, niter=5000)

67

> theta = mcmc(cbind(x$lambda,x$phi,x$m))

> theta = window(theta, start=1001)

> colnames(theta) = names(x)

> summary(theta)

Iterations = 1001:5000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 4000

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE Time-series SE

lambda 2.025 0.3036 0.004801 0.005302

phi 5.068 0.5827 0.009214 0.009872

m 23.614 1.6418 0.025959 0.029750

68

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

lambda 1.470 1.817 2.011 2.218 2.653

phi 3.975 4.667 5.044 5.455 6.239

m 20.000 23.000 23.000 25.000 26.000

69

Probabilidades a posteriori do ponto de mudanca.

> tm= table(theta[,"m"])

> print(tm[1:10])

8 10 16 17 18 19 20 21 22 23

1 1 7 16 11 5 60 150 468 1444

> print(tm[11:length(tm)])

24 25 26 27 28 30

767 410 599 37 23 1

70

> plot(tm)

05

00

10

00

15

00

tm

8 10 16 18 20 22 24 26 28 30

71

m

lambda phi

0 1000 2000 3000 4000

0 1000 2000 3000 4000 0 1000 2000 3000 4000

3

4

5

6

7

1.5

2.0

2.5

3.0

3.5

10

15

20

25

30

Traços das cadeias simuladas

72

phi

lambda

2 4 6 8

Distribuições a posteriori com medianas e intervalos de 95%

73

lambda phi m

0 5 10 15 20 0 5 10 15 20 0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

74

Exemplo. Os dados a seguir referem-se ao numero de acidentespor ano em minas de carvao na Inglaterra (acidentes queenvolveram pelo menos 10 mortes) entre 1851 e 1962. Parecehaver uma mudanca em torno do ano 1900. Vamos usar osmesmos passos do exemplo anterior para fazer inferencias.

> yr= 1851:1962

> counts = c(4,5,4,1,0,4,3,4,0,6,3,3,4,0,2,6,3,3,5,4,5,3,1,4,4,1,5,5,3,4

+ 5,2,2,3,4,2,1,3,2,2,1,1,1,1,3,0,0,1,0,1,1,0,0,3,1,0,3,2,2,0,1,

+ 1,1,0,1,0,1,0,0,0,2,1,0,0,0,1,1,0,2,3,3,1,1,2,1,1,1,1,2,4,2,0,

+ 0,0,1,4,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1)

75

> plot(yr, counts)

1860 1880 1900 1920 1940 1960

01

23

45

6

yr

co

un

ts

76

> x = Gibbs(a=0.1,b=0.1,c=0.1,d=0.1,y=counts,niter=5000)

> theta = mcmc(cbind(x$lambda,x$phi,x$m))

> theta = window(theta, start=1001)

> colnames(theta) = names(x)

> summary(theta)

Iterations = 1001:5000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 4000

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE Time-series SE

lambda 3.1087 0.2910 0.004601 0.004896

phi 0.9223 0.1155 0.001826 0.001927

m 39.9940 2.4386 0.038558 0.043829

77

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

lambda 2.5656 2.9009 3.1040 3.301 3.708

phi 0.7086 0.8408 0.9188 0.996 1.160

m 36.0000 39.0000 40.0000 41.000 46.000

78

Probabilidades a posteriori do ponto de mudanca.

1885 1890 1895

02

00

40

06

00

80

01

00

0

yrs

fre

q

79

m

lambda phi

0 1000 2000 3000 4000

0 1000 2000 3000 4000 0 1000 2000 3000 4000

0.75

1.00

1.25

1.50

2.0

2.5

3.0

3.5

4.0

35

40

45

Traços das cadeias simuladas

80

phi

lambda

1 2 3 4

Distribuições a posteriori com medianas e intervalos de 95%

81

lambda phi m

0 5 10 15 20 0 5 10 15 20 0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

82

Exemplo. Seja X1, . . . ,Xn uma amostra aleatoria da distribuicaot-Student com parametros de locacao θ, escala σ (conhecido) egraus de liberdade ν > 0.

Funcao de verossimilhanca,

p(x|ν, θ, σ2) =n∏

i=1

Γ

(

ν + 1

2

)

Γ(ν

2

)√πν σ

[

1 +(x − θ)2

νσ2

]−(ν+1)/2

.

83

O modelo pode ser reescrito criando as variaveis latentes (naoobservaveis) λ1, . . . , λn,

Xi |θ, σ, λi ∼ N

(

θ,σ2

λi

)

λi |ν ∼ Gama(ν

2,ν

2

)

para i = 1, . . . , n. A funcao de verossimilhanca completa fica,

f (x,λ|θ, ν) = f (x|θ,λ)f (λ|ν).

84

Especificando distribuicoes a priori, θ ∼ N(µ0, τ20 ) e ν ∼ Exp(β)

tem-se a seguinte densidade a posteriori,

p(θ, ν,λ|x) ∝ f (x|θ,λ)f (λ|ν)f (θ)f (ν)

∝n∏

i=1

(2πσ2/λi )−1/2 exp

{

− λi

2σ2(xi − θ)2

}

n∏

i=1

(ν/2)ν/2

Γ(ν/2)λν/2−1i exp(−νλi/2)

(2πτ20 )−1/2 exp

{

− 1

2τ20(θ − µ0)

2

}

exp(−βν).

85

Densidades condicionais completas,

p(λ|θ, ν, x) ∝n∏

i=1

λ1/2i exp

{

− λi

2σ2(xi − θ)2

}

λν/2−1i exp(−νλi/2)

Portanto,

λi |λ−i , θ, ν, x ∼ Gama

(

ν + 1

2,ν

2+

(xi − θ)2

2σ2

)

86

p(θ|λ, ν, x) ∝ exp

{

− 1

2σ2

n∑

i=1

λi (xi − θ)2

}

exp

{

− 1

2τ20(θ − µ0)

2

}

∝ exp

{

− 1

2σ2

(

θ2n∑

i=1

λi − 2θn∑

i=1

λixi

)

− 1

2τ20

(

θ2 − 2θµ0

)

}

∝ exp

{

−1

2

[

θ2(σ−2n∑

i=1

λi + τ−20 )− 2θ(σ−2

n∑

i=1

λixi + τ−20 µ0)

]}

Portanto,θ|λ, ν, x ∼ N(µ1, τ

21 )

τ−21 = σ−2

n∑

i=1

λi + τ−20 µ1 =

σ−2∑n

i=1 λixi + τ−20 µ0

σ−2∑n

i=1 λi + τ−20

87

p(ν|θ,λ, x) ∝n∏

i=1

(ν/2)ν/2

Γ(ν/2)λν/2−1i exp(−νλi/2) exp(−βν).

que nao tem forma funcional conhecida.

88

Exemplo. Testando com 20 dados simulados da t com ν = 6 eσ2 = 1.

> options(width=50)

> round(x,3)

[1] -1.216 3.584 0.700 -1.358 0.850 0.339

[7] -0.034 -0.542 0.009 1.216 0.488 -1.028

[13] 0.982 -1.214 -1.755 0.243 -1.172 -2.216

[19] 2.775 1.008

89

> mu0 = 0

> tau0= 10

> sigma2= 1

> niter = 5000

> nburn = 1000

> theta = array(0,niter)

> lambda= matrix(0,nrow=niter, ncol= 20)

> theta[1] = mean(x)

> lambda[1,] = 1

> for (i in 2:niter) {

+ s1 = sum(lambda[i-1,] )

+ s2 = sum(lambda[i-1,] * x)

+ tau1= 1 / ((1/tau0) + s1/sigma2)

+ mu1 = (s2/sigma2 + mu0/tau0) * tau1

+ theta[i] = rnorm(1,mean=mu1, sd=sqrt(tau1))

+ for (j in 1:20) {

+ lambda[i,j]=rgamma(1,(nu+1)/2,nu/2+(x[j]-theta[i])^2/(2*sigma2))

+ }

+ }

90

0 1000 3000

−1

.0−

0.5

0.0

0.5

1.0

Iterations

Trace of var1

−1.0 0.0 1.0

0.0

0.5

1.0

1.5

Density of var1

N = 4000 Bandwidth = 0.05541

91

Boxplots dos valores simulados das variaveis latentes.

1 3 5 7 9 11 13 15 17 19

01

23

45

92

Autocorrelacoes

Os valores simulados segundo um cadeia de Markov sao pordefinicao correlacionados.

Autocorrelacoes amostrais

Considere um sequencia de valores simulados {θ1, . . . , θn}. Asautocorrelacoes de ordem k, ρ(θi , θi+k) podem ser estimadas como,

ρk =

n−k∑

t=1

(θt − θ)(θt−k − θ)

n−k∑

t=1

(θt − θ)2

sendo,

θ =1

n

n∑

t=1

θi .

93

Variancias dos estimadores

Deseja-se estimar uma funcao h(θ) associada a distribuicao alvocom base em uma sequencia de valores simulados {θ1, . . . , θn}.Para uma aproximacao de Monte Carlo,

h =1

n

n∑

i=1

h(θi)

a variancia amostral deve diminuir aumentando-se n.

As autocovariancias amostrais podem ser estimadas como,

γk =1

n

n−k∑

i=1

(h(θi )− h)(θi+k − h).

94

A variancia de Monte Carlo e dada por,

Var(h) =1

n

(

γ0 + 22δ+1∑

i=1

γi

)

sendo δ o menor inteiro tal que γ2δ + γ2δ+1 > 0.

O tamanho amostral efetivo mede o efeito das autocorrelacoes e edado por,

n =γ0

Var(h).

95

Um metodo simples para estimar o erro padrao

Dados os valores simulados θ1, . . . , θn da distribuicao de equilibrio,

1. Divida a amostra m lotes de tamanho b.

2. Calcule a media hj , j = 1, . . . ,m dentro de cada lote.

3. Estime o erro padrao como,

1

m

1

m − 1

m∑

j=1

(hj − h)2,

sendo h a media global.

96

• A ideia e considerar as medias dos lotes como sendoindependentes e identidamente distribuidas cujo valoresperado e E (h(θ)).

• O tamanho de cada lote e funcao do numero de valoressimulados. Uma recomendacao pratica e b = ⌊√n⌋.

97

Exemplo. Modelo com variaveis latentes. Lembrando que afuncao de verossimilhanca e dada por,

f (x|θ) =∫

f (x, z|θ)dz

x um vetor aleatorio observavel e z o vetor de variaveis latentes.Alem disso,

f (x, z|θ) = f (x|z, θ)f (z)e

f (z|x, θ) = f (x|z, θ)f (z)f (x|θ) ∝ f (x|z, θ)f (z)

As varıaveis x e z podem ser discretas ou continuas.

98

Se θ tem densidade f (θ) entao pelo teorema de Bayes,

f (θ|x, z) ∝ f (x|z, θ)f (z)f (θ).

Se for possivel simular valores de θ e z destas distribuicoescondicionais completas temos um amostrador de Gibbs.

99

Algoritmos Metropolis-Hastings

Os algoritmos de Metropolis-Hastings usam a mesma ideia dosmetodos de rejeicao. Um valor e gerado de uma distribuicaoauxiliar e aceito com uma dada probabilidade.

Este mecanismo de correcao garante a convergencia da cadeia paraa distribuicao de equilibrio.

100

Definicao

Suponha que a cadeia esteja no estado x e um valor x ′ e gerado deuma distribuicao proposta q(·|x). Note que a distribuicao propostapode depender do estado atual da cadeia, por exemplo q(·|x)poderia ser uma distribuicao normal centrada em x . O novo valorx ′ e aceito com probabilidade

α(x , x ′) = min

{

1,π(x ′) q(x |x ′)π(x) q(x ′|x)

}

. (1)

onde π e a distribuicao de interesse.

101

• Uma caracterıstica importante e que so precisamos conhecer πparcialmente, i.e. a menos de uma constante ja que nestecaso a probabilidade nao se altera.

• Fundamental em aplicacoes Bayesianas aonde naoconhecemos completamente densidade a posteriori.

• A cadeia pode permanecer no mesmo estado por muitasiteracoes e na pratica costuma-se monitorar isto calculando aproporcao media de iteracoes para as quais novos valores saoaceitos.

102

Em termos praticos, o algoritmo de Metropolis-Hastings pode serespecificado pelos seguintes passos,

1. Inicialize o contador de iteracoes t = 0 e especifique um valorinicial x (0).

2. Gere um novo valor x ′ da distribuicao q(·|x).3. Calcule a probabilidade de aceitacao α(x , x ′) e gere

u ∼ U(0, 1).

4. Se u ≤ α entao aceite o novo valor e faca x (t+1) = x ′, casocontrario rejeite e faca x (t+1) = x (t).

5. Incremente o contador de t para t + 1 e volte ao passo 2.

103

• A distribuicao proposta possa ser escolhida arbitrariamentemas na pratica deve-se tomar alguns cuidados para garantir aeficiencia do algoritmo.

• Em aplicacoes Bayesianas a distribuicao de interesse e adensidade a posteriori, π = p(θ|x) e a probabilidade deaceitacao assume uma forma particular,

α(θ, θ′) = min

{

1,p(x |θ′)p(x |θ)

p(θ′)

p(θ)

q(θ|θ′)q(θ′|θ)

}

. (2)

O algoritmo sera ilustrado nos exemplos a seguir.

104

Exemplo. Simulando valores de uma distribuicao Beta(0.7,0.7)usando a distribuicao U(0,1) como proposta. Neste caso,

α(x , x ′) = min

{

1,π(x ′) q(x |x ′)π(x) q(x ′|x)

}

= min

{

1,π(x ′)

π(x)

}

sendo π a densidade Beta(0.7,0.7).

105

> metr0 <- function(niter,a,b,start){

+ x = matrix(NA, nrow=niter)

+ x[1] = start

+ taxa = 0

+ for (i in 2:niter){

+ y = runif(1)

+ A = dbeta(y,a,b)/dbeta(x[i-1],a,b)

+ prob = min(1,A)

+ u = runif(1)

+ if (u < prob) {

+ x[i] = y

+ taxa = taxa + 1

+ }

+ else x[i] = x[i-1]

+ }

+ taxa = taxa/niter

+ return(list(x=x,taxa=round(taxa,2)))

+ }

106

0.00

0.25

0.50

0.75

1.00

0 1000 2000 3000 4000 5000

va

r1

Traços da cadeia simulada

107

0.00 0.25 0.50 0.75 1.00

var1

Histograma da cadeia simulada

108

Exemplo. Em uma certa populacao de animais sabe-se que cadaanimal pode pertencer a uma dentre 4 linhagens geneticas comprobabilidades,

p1 =1

2+

θ

4, p2 =

1− θ

4, p3 =

1− θ

4, p4 =

θ

4.

sendo 0 < θ < 1 desconhecido.

Para qualquer θ ∈ (0, 1) e facil verificar que pi > 0, i = 1, 2, 3, 4 e∑4

i=1 pi = 1.

109

Observando-se n animais dentre os quais yi pertencem a linhagemi entao o vetor aleatorio Y = (y1, y2, y3, y4) tem distribuicaomultinomial com parametros n, p1, p2, p3, p4 e portanto,

p(y|θ) =n!

y1!y2!y3!y4!py11 p

y22 p

y33 p

y44

∝ (2 + θ)y1(1− θ)y2+y3θy4 .

110

Atribuindo uma distribuicao θ ∼ U(0, 1) segue que a posteriori eproporcional a expressao acima,

p(θ|y) ∝ p(y|θ) ∝ (2 + θ)y1(1− θ)y2+y3θy4 .

Tomando a distribuicao U(0, 1) como proposta entao q(θ) = 1,∀ θ e a probabilidade de aceitacao se simplifica para,

α(θ, θ′) = min

{

1,p(x |θ′)p(x |θ)

}

= min

{

1,

(

2 + θ′

2 + θ

)y1(

1− θ′

1− θ

)y2+y3(

θ′

θ

)y4}

.

111

> p <- function(x,y) (2+x)^y[1] * (1-x)^(y[2]+y[3]) * x^y[4]

> metr <- function(n,y,p,start){

+ theta = matrix(NA, nrow=n)

+ theta[1] = start

+ taxa = 0

+ for (i in 2:n){

+ x = runif(1)

+ A = p(x,y)/p(theta[i-1],y)

+ prob = min(1,A)

+ u = runif(1)

+ if (u < prob) {

+ theta[i] = x

+ taxa = taxa + 1

+ }

+ else theta[i] = theta[i-1]

+ }

+ taxa = taxa/n

+ return(list(theta=theta,taxa=round(taxa,2)))

+ }

112

> m = metr(n=1000,y=c(125,18,20,34),p,start=0.05)

> theta = as.mcmc(m$theta)

> colnames(theta)="theta"

> summary(theta)

Iterations = 1:1000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 1000

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE

0.625057 0.059390 0.001878

Time-series SE

0.004933

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

0.5085 0.5939 0.6261 0.6643 0.7178113

0.2

0.4

0.6

0 200 400 600 800 1000

the

ta

Traços das cadeias simuladas

114

0

2

4

6

8

0.2 0.4 0.6

theta

theta

0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

115

Repetindo com 10000 simulacoes descartando as 5000 primeiras.

0.5

0.6

0.7

0 1000 2000 3000 4000 5000

the

ta

Traços das cadeias simuladas

116

0

2

4

6

8

0.5 0.6 0.7

theta

theta

0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

117

Obtendo uma amostra de probabilidades (p1, p2, p3, p4).

> p1 = 1/2+theta/4

> p2 = (1-theta)/4

> p3 = p2

> p4 = theta/4

> prob = as.mcmc(cbind(p1,p2,p3,p4))

> colnames(prob)=c("p1","p2","p3","p4")

118

> round(summary(prob)$statistics,6)

Mean SD Naive SE Time-series SE

p1 0.655299 0.013002 0.000184 0.000611

p2 0.094701 0.013002 0.000184 0.000611

p3 0.094701 0.013002 0.000184 0.000611

p4 0.155299 0.013002 0.000184 0.000611

> round(summary(prob)$quantile,6)

2.5% 25% 50% 75% 97.5%

p1 0.627293 0.647811 0.65554 0.664693 0.678274

p2 0.071726 0.085307 0.09446 0.102189 0.122707

p3 0.071726 0.085307 0.09446 0.102189 0.122707

p4 0.127293 0.147811 0.15554 0.164693 0.178274

119

Exemplo. No exemplo anterior o algoritmo pode ficar maiseficiente fazendo uma reparametrizacao para a reta. Usando atransformacao logito,

φ = log

(

θ

1− θ

)

∈ R

com transformacao inversa,

θ =exp(φ)

1 + exp(φ).

A distribuicao a priori tambem precisa estar na escalatransformada. Se θ ∼ U(0, 1) a funcao de densidade de φ e,

p(φ) =

=exp(φ)

(1 + exp(φ))2.

120

Valores de φ serao propostos na reta como φ′|φ ∼ N(φ, 1) entao,

q(φ|φ′)

q(φ′|φ) = 1

A probabilidade de aceitacao fica,

α(θ, θ′) = min

{

1,p(x |θ′)p(x |θ)

p(φ′)

p(φ)

}

sendo,

p(x |θ′)p(x |θ) =

[

2 + θ′

2 + θ

]y1[

1− θ′

1− θ

]y2+y3[

θ′

θ

]y4

p(φ′)

p(φ)=

exp(φ′)/(1 + exp(φ′))2

exp(φ)/(1 + exp(φ))2

121

> prior <- function(phi) exp(phi)/(1+exp(phi))^2

> metr1 <- function(niter,y,p,theta0,tau=1) {

+ phi = matrix(NA, nrow=niter)

+ phi[1] = log(theta0/(1-theta0)); taxa=0

+ for (i in 2:niter) {

+ z = exp(phi[i-1])/(1+exp(phi[i-1]))

+ old = p(z,y)*prior(phi[i-1])

+ x = rnorm(1,mean = phi[i-1], sd=tau)

+ z = exp(x)/(1+exp(x))

+ prob = min(1, p(z,y)*prior(x)/old)

+ u = runif(1)

+ if (u < prob) {

+ phi[i] = x

+ taxa = taxa + 1

+ } else {

+ phi[i] = phi[i-1]

+ }

+ }

+ theta = exp(phi)/(1+exp(phi))

+ taxa = taxa/niter

+ return(list(theta=theta,taxa=taxa))

+ }122

Iterations = 5001:10000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 5000

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE

0.6211405 0.0504233 0.0007131

Time-series SE

0.0016331

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

0.5227 0.5876 0.6220 0.6553 0.7157

123

0.5

0.6

0.7

0.8

0 1000 2000 3000 4000 5000

the

ta

Traços das cadeias simuladas

124

0

2

4

6

0.5 0.6 0.7

theta

theta

0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

125

Iterations = 1:5000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 5000

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE Time-series SE

p1 0.65529 0.01261 0.0001783 0.0004083

p2 0.09471 0.01261 0.0001783 0.0004083

p3 0.09471 0.01261 0.0001783 0.0004083

p4 0.15529 0.01261 0.0001783 0.0004083

2. Quantiles for each variable:

126

2.5% 25% 50% 75% 97.5%

p1 0.63068 0.64689 0.6555 0.6638 0.6789

p2 0.07108 0.08616 0.0945 0.1031 0.1193

p3 0.07108 0.08616 0.0945 0.1031 0.1193

p4 0.13068 0.14689 0.1555 0.1638 0.1789

127

Exemplo. No exemplo anterior se a distribuicao proposta forφ′|φ ∼ N(φ, τ2) podemos tentar ajustar τ . Para τ = 0.48,

Iterations = 5001:10000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 5000

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE

0.622837 0.051121 0.000723

Time-series SE

0.001686

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

0.5186 0.5898 0.6256 0.6571 0.7186

128

0.4

0.5

0.6

0.7

0 1000 2000 3000 4000 5000

the

ta

Traços das cadeias simuladas

129

0

2

4

6

8

0.5 0.6 0.7

theta

theta

0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

130

Exemplo. Suponha que queremos simular valores X ∼ N(0, 1)propondo valores Y ∼ N(x , σ2). A probabilidade de aceitacao fica,

α(x , y) = min

{

1,fN(y |0, 1)fN(x |0, 1)

fN(x |y , σ2)

fN(y |x , σ2)

}

= min

{

1,fN(y |0, 1)fN(x |0, 1)

}

= min

{

1, exp

(

−1

2(y2 − x2)

)}

.

131

> metrop <- function(n,sigma){

+ x = matrix(NA,nrow=n)

+ x[1] = taxa = 0

+ for (i in 2:n){

+ y = rnorm(1,x[i-1],sigma)

+ prob = min(1,exp(-0.5*(y^2-x[i-1]^2)))

+ u = runif(1)

+ if (u < prob) {x[i]=y; taxa=taxa+1} else x[i]=x[i-1]

+ }

+ return(list(x=x,taxa=taxa/n))

+ }

132

xy

0 200 400 600 800 1000

0 200 400 600 800 1000

−2

0

2

−2

−1

0

1

2

sigma = 0.5 e sigma = 10

Traços das cadeias simuladas

133

• Note que o valor de σ teve um grande impacto na taxa deaceitacao do algoritmo.

• Isto ocorre porque com σ = 0.5 a distribuicao proposta estamuito mais proxima da distribuicao alvo do que com σ = 10.

• Nos dois exemplos anteriores foram ilustrados casos especiaisdo algoritmo nos quais a distribuicao proposta nao dependedo estado atual ou a dependencia e na forma de um passeioaleatorio.

134

x y

0 5 10 15 20 0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

Autocorrelações das cadeias simuladas

135

Casos Especiais

Amostrador independente

Um caso particular e quando a distribuicao proposta nao dependedo estado atual da cadeia, i.e. q(x′|x) = q(x′). A probabilidade deaceitacao agora fica,

α(x, x′) = min

{

1,π(x′) q(x)

π(x) q(x′)

}

. (3)

• Em geral, q(·) deve ser uma boa aproximacao de π(·), mas emais seguro se q(·) tiver caudas mais pesadas do que π(·).

• A cadeia nao sera i.i.d. pois a probabilidade de aceitacaoainda depende de x.

136

Teorema

O amostrador independente produz uma cadeia ergodica se existeuma constante c tal que,

f (x)

q(x)≤ c , ∀x .

Lema

Neste caso, a probabilidade de aceitacao esperada e no mınimo1/c se a cadeia for estacionaria.

137

• O amostrador independente e mais eficiente do que o metodode aceitacao pois em media aceita mais valores propostos.

• No amostrador independente deseja-se uma taxa de aceitacaoalta.

138

Se x ∈ Rd uma distribuicao proposta muita usada e x′ ∼ N(x∗,Σ)

sendo x∗ a moda de π(·) e

Σ = τ

[

−∂2 log π(x)

∂x∂xT

]−1

avaliada em x∗.

Note que a distribuicao proposta e fixa.

139

Algoritmo de Metropolis

Outro caso particular e chamado algoritmo de Metropolis econsidera apenas propostas simetricas, i.e., q(x ′|x) = q(x |x ′) paratodos os valores de x e x ′.

Neste caso a probabilidade de aceitacao se reduz para

α(x , x ′) = min

{

1,π(x ′)

π(x)

}

.

Um algoritmo de Metropolis muito utilizado e baseado em umpasseio aleatorio de modo que a probabilidade da cadeia mover-sede x para x ′ depende apenas da distancia entre eles, i.e.q(x ′|x) = q(|x − x ′|).

140

Neste caso, se usarmos uma distribuicao proposta com variancia σ2

duas situacoes extremas podem ocorrer,

1. se σ2 for muito pequena os valores gerados estarao proximosdo valor atual e quase sempre serao aceitos. Mas levaramuitas iteracoes ate o algoritmo cobrir todo o espaco de x ;

2. valores grandes de σ2 levam a uma taxa de rejeicaoexcessivamente alta e a cadeia se movimenta muito pouco.

Nas duas situacoes o algoritmo fica ineficiente e na pratica temosque tentar varios valores de σ2, monitorando a taxa de aceitacao.

141

Se x ∈ Rd , uma possivel proposta e x′ ∼ N(x,Σ) sendo

Σ = τ

[

−∂2 log π(x)

∂x∂xT

]−1

,

avaliada em x∗.

Note que a distribuicao proposta pode mudar a cada iteracao.

142

Amostragem em Blocos

De um modo geral x = (x1, . . . , xd)′ sera um vetor de parametros

de dimensao d .

Neste caso, pode ser computacionalmente mais eficiente dividir xem k blocos {x1, . . . , xk} e dentro de cada iteracao teremos oalgoritmo aplicado k vezes.

Definimos o vetor x−i = (x1, . . . , xi−1, xi+1, . . . , xk) que contemtodos os elementos de x exceto xi .

143

Suponha que na iteracao t + 1 os blocos 1, 2, . . . , i − 1 ja foramatualizados, i.e.

x−i = (x(t+1)1 , . . . , x

(t+1)i−1 , x

(t)i+1, . . . , x

(t)k ).

Para atualizar a i-esima componente, um valor de xi e gerado dadistribuicao proposta q(·|xi , x−i ) e este valor candidato e aceitocom probabilidade,

α(xi , x′

i ) = min

{

1,π(x′i |x−i ) q(xi |x′i , x−i ))

π(xi |x−i ) q(x′

i |xi , x−i )

}

. (4)

π(xi |x−i ) e a distribuicao condicional completa de xi .

144

Portanto o amostrador de Gibbs e um caso especial do algoritmode Metropolis-Hastings, no qual os elementos de x sao atualizadosum de cada vez (ou em blocos), tomando a distribuicao condicionalcompleta como proposta e probabilidade de aceitacao igual a 1.

145

Exemplo. Seja X1, . . . ,Xn ∼ N(µ, 1/τ) sendo µ ∼ N(0, 1) eτ ∼ Exp(1).

p(x|µ, τ) ∝ τn/2 exp

{

−τ

2

n∑

i=1

(xi − µ)2

}

p(µ) ∝ exp(−µ2/2)

p(τ) = exp(−τ)

p(µ, τ |x) ∝ τn/2 exp

{

−τ

2

n∑

i=1

(xi − µ)2

}

exp(−µ2/2) exp(−τ).

146

Um possivel algoritmo Metropolis-Hastings,

1. gerar (µ′, τ ′),

2. aceitar com probabilidade,

min

{

1,p(x|µ′, τ ′)

p(x|µ, τ)p(µ′) p(τ ′)

p(µ) p(τ)

q(µ, τ |µ′, τ ′)

q(µ′, τ ′|µ, τ)

}

147

Fazendo propostas independentes temos que q(µ, τ) = q(µ)q(τ).

Por exemplo, usando as distribuicoes a priori como propostas,

1. gerar µ′ ∼ N(0, 1) e τ ′ ∼ Exp(1),

2. aceitar com probabilidades,

min

{

1,p(x|µ′, τ ′)

p(x|µ, τ)

}

.

148

> ll <- function(mu,tau,x) sum (dnorm(x,mean=mu,sd=1/sqrt(tau),lo

> metrop <- function(x,mu0,tau0,s.mu,s.tau,niter) {

+ mu.vec = tau.vec = numeric(niter)

+ mu = mu0; tau = tau0; taxa= 0

+ for (i in 1:niter) {

+ prop.mu = rnorm(1, mean=0, sd=1)

+ prop.tau= rexp (1, rate=1)

+ ratio = ll(prop.mu,prop.tau,x) - ll(mu,tau,x)

+ if (runif(1) < exp(ratio)) {

+ mu = prop.mu

+ tau = prop.tau

+ taxa= taxa + 1

+ }

+ mu.vec [i] = mu

+ tau.vec[i] = tau

+ }

+ cat("taxa de aceitacao:", taxa/niter,"\n")

+ return(cbind(mu=mu.vec,tau=1/tau.vec))}

149

Exemplo. Testando com dados simulados X1, . . . ,Xn ∼ N(2, 4),com n = 50, 10000 iteracoes e 5000 de aquecimento.

> x = rnorm(50, mean=2, sd=2)

> m = metrop(x,mu0=0,tau0=1,s.mu=0.1,s.tau=0.1,niter=10000)

taxa de aceitacao: 0.007

Esta taxa e muito baixa, uma possivel solucao vira no proximo exemplo.

150

Exemplo. No exemplo anterior, reparametrizar θ = (µ, log(τ))sendo

p(log(τ)) = exp(−τ)τ

e a densidade a posteriori e,

p(θ|x) ∝ p(x|µ, τ) p(µ) p(log(τ)).

Propor novos valores como θ′ ∼ N(θ∗,Σ) sendo θ∗ a moda dep(θ|x) e

Σ = τ

[

−∂2 log π(θ)

∂θ∂θT

]−1

avaliada em θ∗.

151

Obter moda e matriz Hessiana avaliada na moda usando a funcaooptim() do R.

> log.posterior <- function(theta,x) {

+ mu = theta[1]

+ tau = exp(theta[2])

+ log.prior = -tau + log(tau) - mu^2/2

+ log.likelihood=(length(x)/2)*log(tau)+sum(-tau*(x-mu)^2/2)

+ log.prior + log.likelihood

+ }

> out=optim(par=c(0,0),fn=log.posterior,control=list(fnscale=-1),

+ hessian=T,x=x)

152

Moda,

[1] 1.975109 -1.039458

matriz Hessiana,

[,1] [,2]

[1,] -18.682323 1.979328

[2,] 1.979328 -26.007433

matriz de variancias,

[,1] [,2]

[1,] 0.053961638 0.004106817

[2,] 0.004106817 0.038763100

153

Distribuicao Normal Multivariada

Seja X um vetor aleatorio d-dimensional com distribuicao normalmultivariada com vetor de medias µ e matriz de variancias ecovariancias Σ. Sua funcao de densidade e dada por,

f (x) =1

(2π)d |Σ|exp

(

−1

2(x− µ)′ Σ−1 (x− µ)

)

, x ∈ Rd

sendo µ ∈ Rd e Σ simetrica e positiva definida, i.e. x′Σx > 0 para

qualquer vetor x 6= 0.

154

Raız Quadrada de uma Matriz

Seja A uma matriz d × d positiva definida. A decomposicao deCholesky encontra uma matriz triangular superior U tal queU ′U = A.

O algoritmo abaixo pode ser utilizado para gerar os valores deX ∼ N(µ,Σ),

1. Calcule U tal que Σ = U ′U.

2. Simule d valores de Zi ∼ N(0, 1), i.e.Z = (Z1, . . . ,Zd)

′ ∼ N(0, Id)

3. Faca Y = U ′Z + µ.

155

O vetor aleatorio Y tem distribuicao normal multivariada com,

E (Y ) = U ′E (Z) + µ = µ

Var(Y ) = U ′ Var(Z) U = U ′U = Σ.

156

Funcoes do R para simular valores das distribuicoes normal et-Student multivariadas.

> library(mnormt)

> args(rmnorm)

function (n = 1, mean = rep(0, d), varcov, sqrt = NULL)

NULL

> library(MASS)

> args(mvrnorm)

function (n = 1, mu, Sigma, tol = 1e-06, empirical = FALSE, EISPACK = FALSE)

NULL

157

> metrop1 <- function(x,mu0,tau0,theta,Sigma,niter) {

+ mu.vec = tau.vec = numeric(niter)

+ mu = mu0; tau = log(tau0)

+ for (i in 1:niter) {

+ prop = rmnorm(n = 1, mean=theta,varcov=Sigma)

+ prop.mu = prop[1]

+ prop.tau= prop[2]

+ ratio = log.posterior(c(prop.mu,prop.tau),x)-

+ log.posterior(c(mu,tau),x)

+ if (runif(1) < exp(ratio)) {

+ mu = prop.mu

+ tau= prop.tau

+ }

+ mu.vec[i] = mu

+ tau.vec[i] = exp(tau)

+ }

+ return(cbind(mu=mu.vec,sigma2=1/tau.vec))

+ }

158

> m=metrop1(x,mu0=0,tau0=1,theta=theta,Sigma=Sigma,niter=10000)

> m=as.mcmc(m[5001:10000,])

> summary(m)

Iterations = 1:5000

Thinning interval = 1

Number of chains = 1

Sample size per chain = 5000

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE Time-series SE

mu 1.976 0.1629 0.002303 0.002944

sigma2 2.880 0.4052 0.005730 0.007093

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

mu 1.651 1.867 1.974 2.087 2.294

sigma2 2.193 2.593 2.837 3.125 3.769159

mu sigma2

0 1000 2000 3000 4000 5000 0 1000 2000 3000 4000 5000

2

3

4

5

1.6

2.0

2.4

Traços das cadeias simuladas

160

sigma2

mu

1 2 3 4 5

Distribuições a posteriori com medianas e intervalos de 95%

161

mu sigma2

0 5 10 15 20 0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

162

2

3

4

5

1.6 2.0 2.4

mu

sig

ma

2

163

Exemplo. Seja uma variavel aleatoria X cuja funcao de densidadee,

π(x) =1

2√2π

[

exp

(

−x2

2

)

+ exp

(

−(x − 10)2

2

)]

ou equivalentemente,

X ∼ N(0, 1), com probabilidade 0.5 ou,

X ∼ N(10, 1), com probabilidade 0.5,

164

> metrop4 <- function(sigma,niter) {

+ u= runif(1,0,1)

+ if (u < 0.5) x=rnorm(1,0,1) else x=rnorm(1,10,1)

+ for(i in 1:(niter-1)) {

+ y=rnorm(1,x[i],sd=sigma)

+ acc=(exp(-y^2/2)+exp(-(y-10)^2/2))/(exp(-x[i]^2/2)+ex

+ u=runif(1,0,1)

+ if (u<acc) x[i+1]=y else x[i+1]=x[i]

+ }

+ return(x)

+ }

165

> niter=10000

> nburn=5000

> m1= metrop4(sigma=1,niter)

> m1= as.mcmc(m1[(nburn+1):niter])

> m2= metrop4(sigma=10,niter)

> m2= as.mcmc(m2[(nburn+1):niter])

> m = cbind(m1,m2)

166

m1 m2

0 1000 2000 3000 4000 5000 0 1000 2000 3000 4000 5000

0

5

10

8

10

12

14

Traços das cadeias simuladas

167

• A primeira cadeia parece estacionaria mas explora somente aregiao em torno da moda 10.

• A segunda cadeia tem taxa de aceitacao menor mas exploraregioes em torno das 2 modas.

168

m2

m1

−5 0 5 10 15

169

Reparametrizacao

Dados Y1, . . . ,Yn e um parametro θ suponha que serao simuladosvalores de φ = g(θ) com inversa θ = g−1(φ) = h(φ).

A distribuicao alvo e p(φ|y) sendo que,

p(φ|y) = p(θ|y)∣

∂θ

∂φ

= p(θ|y)|J(φ)|

170

Portanto,

α(φ, φ′) = min

{

1,p(φ′|y) q(φ|φ′)

p(φ|y) q(φ′|φ)

}

= min

{

1,p(θ′|y)|J(φ′)| q(φ|φ′)

p(θ|y)|J(φ)| q(φ′|φ)

}

= min

{

1,p(y|θ′)p(θ′) q(φ|φ′)

p(y|θ)p(θ) q(φ′|φ)|J(φ′)||J(φ)|

}

171

Algoritmos de Langevin

Alternativa ao Metropolis-Hastings com passeio aleatorio baseadaem teoria da difusao.

Difusao de Langevin

dLt =1

2∇f (Lt)dt + dBt

sendo Bt um movimento Browniano e f (·) a distribuicaoestacionaria.

A ideia consiste em discretizar este processo e escrever a transicaocomo um tipo de passeio aleatorio.

172

Para um vetor aleatorio x ∈ Rd com densidade f (x),

x(t+1) = x(t) +σ2

2∇x log f (x

(t)) + σǫt (5)

sendo ǫt ∼ N(0, Id) e σ2 o parametro de discretizacao.

173

E preciso definir uma probabilidade de aceitacao para garantirconvergencia para a distribuicao de equilibrio.

1. Um valor x′ e gerado da distribuicao normal multivariada commedia,

µ(x(t), σ2) = x(t) +σ2

2∇x log f (x

(t))

e matrix de variancia-covariancia σ2Id .

2. Este valor e aceito com probabilidade,

min

{

1,f (x′)

f (x(t))

exp{−||x′ − µ(x(t), σ2)||2/2σ2}exp{−||x(t) − µ(x′, σ2)||2/2σ2}

}

pois a distribuicao proposta e N(µ(x(t), σ2), σ2Id).

174

• Este algoritmo e conhecido como MALA (Metropolis Adjusted

Langevin Algorithm).

• O uso do gradiente avaliado no valor atual da cadeia deve emprincipio tornar o algoritmo mais eficiente, mas isto nao egarantido na pratica.

• Em cenarios mais complicados pode-se usar derivadasnumericas como aproximacao.

Em aplicacoes Bayesianas,

∇x log f (x) =∂ log f (θ|x)

∂θ

=∂ log f (x|θ)

∂θ+

∂ log p(θ)

∂θ.

175

Exemplo. Suponha que a distribuicao de Y |θ e tal que,

p(y |θ) = f (y , θ)

Z (θ),

sendo Z (θ) uma constante normalizadora,

Z (θ) =

f (y , θ)dy , ou

Z (θ) =∑

y

f (y , θ).

Assume-se que Z (θ) nao tem forma analitica fechada ou nao podeser obtida com recursos computacionais finitos.

A funcao de verossimilhanca e dada por,

p(x|θ) =n∏

i=1

f (xi , θ)

Z (θ),

176

Dada uma distribuicao p(θ) e propondo um novo valor θ′ comdensidade q(·|θ), a probabilidade de aceitacao fica,

α(θ, θ′) = min

{

1,

∏ni=1 f (xi , θ

′)∏n

i=1 f (xi , θ)

p(θ′)

p(θ)

q(θ|θ′)q(θ′|θ)

Zn(θ)

Zn(θ′)

}

.

Note que esta probabilidade e impossivel de ser calculada.

177

Problemas de Dimensao Variavel

“One of the things we do not know is the number of things we donot know”Peter Green

Em muitas aplicacoes praticas e razoavel assumir que existeincerteza tambem em relacao ao modelo que melhor se ajusta aum conjunto de dados.

• Crie uma variavel aleatoria discreta k (o indicador de modelo)e atribua probabilidades p(k).

• Para cada k existe um vetor de parametros θ(k) ∈ Rnk com

• uma funcao de verossimilhanca: p(y|θ(k), k),

• uma distribuicao a priori: p(θ(k)|k).

178

A distribuicao de interesse agora e dada por,

π(θ, k|y) ∝ p(y|θ, k) p(θ|k) p(k)

e temos que simular valores desta distribuicao.

• A dimensao de θ pode variar ao longo dos modelos.Precisamos construir uma cadeia com espaco de estados quemuda de dimensao ao longo das iteracoes.

• Os algoritmos de Metropolis-Hastings e o amostrador deGibbs nao podem ser utilizados ja que sao definidos apenaspara distribuicoes com dimensao fixa.

• Embora existam outras possibilidades iremos estudar osalgoritmos MCMC com saltos reversıveis.

179

Exemplo. Sejam Y1, . . . ,Yn os tempos de vida de componenteseletronicos sorteados ao acaso e existe incerteza em relacao adistribuicao dos dados. Sabe-se que

Yi ∼ Exp(λ) (Modelo 1), ou

Yi ∼ Gama(α, β) (Modelo 2),

i = 1, . . . , n.

• k = 1 (Modelo 1), θ(1) = λ,

p(y|λ, k = 1) = λne−λ∑

yi

• k = 2 (Modelo 2), θ(2) = (α, β),

p(y|α, β, k = 2) =βnα

Γn(α)

yα−1i e−β

∑yi .

180

Seja M conjunto de todos os possıveis modelos.

• As probabilidades a posteriori de cada possıvel modelo saodadas por,

π(k|y) = p(k) p(y|k)∑

k∈M

p(k) p(y|k), k ∈ M

• p(y|k) e a verossimilhanca marginal obtida como,

p(y|k) =∫

p(y|θ, k)p(θ|k)dθ.

• Esta ultima integral so e analiticamente tratavel em algunscasos restritos.

• Se o numero de modelos candidatos for muito grande calcular(ou aproximar) p(y|k) pode ser inviavel na pratica.

181

• Se for especificada a distribuicao de interesse como,

π(θ, k|y) ∝ p(y|θ, k) p(θ|k) p(k)

e conseguirmos simular valores desta distribuicao entaoautomaticamente teremos uma amostra aproximada de π(k|y)e π(θ|k, y).

182

MCMC com Saltos Reversiveis (RJMCMC)

• Proponha um novo valor para a cadeia e defina umaprobabilidade de aceitacao.

• Os movimentos podem ser entre espacos de dimensoesdiferentes.

• Em cada iteracao atualize os parametros, dado o modelo,usando os metodos MCMC usuais.

• Atualize a dimensao.

183

Suponha que o estado atual da cadeia e (k,θ), i.e. estamos nomodelo k com parametros θ

Um novo modelo k ′ com parametros θ′ e proposto comprobabilidade rk,k ′ . Em geral isto significa incluir ou retirarparametros do modelo atual.

Vamos assumir inicialmente que o modelo proposto tem dimensaomaior, i.e. nk ′ > nk e que θ′ = g(θ,u) para uma funcaodeterministica g e um vetor aleatorio u ∼ q(u) com dimensaonk ′ − nk .

184

Entao o seguinte algoritmo e utilizado,

1. proponha (k,θ) → (k ′,θ′) com probabilidade rk,k ′

2. gere u ∼ q(u) com dimensao nk ′ − nk

3. faca θ′ = g(θ,u),

4. aceite (k ′,θ′) com probabilidade min(1,A) sendo

A =π(k ′,θ′)

π(k,θ)× rk ′,k

rk,k ′ q(u)

∂g(θ,u)

∂(θ,u)

.

185

Exemplo. Sejam Y1, . . . ,Yn os tempos de vida de componenteseletronicos sorteados ao acaso e existe incerteza em relacao adistribuicao dos dados. Sabe-se que,

Yi ∼ Exp(λ) (Modelo 1) ou Yi ∼ Gama(α, β) (Modelo 2),

i = 1, . . . , n. O objetivo e estimar qual modelo explica melhor osdados.

186

Distribuicoes a priori,

p(k) = 1/2

λ|k = 1 ∼ Gama(2, 1)

α|k = 2 ∼ Gama(4, 2)

β|k = 2 ∼ Gama(4, 2)

Funcoes de verossimilhanca,

p(y|λ, k = 1) = λne−λ∑

yi

p(y|α, β, k = 2) =βnα

Γn(α)

yα−1i e−β

∑yi

187

Distribuicoes condicionais completas,

p(λ|y, α, β, k = 1) ∝ p(y|λ, k = 1)p(λ)

∝ λne−λ∑

yiλe−λ

∝ λn+1e−λ(1+∑

yi )

Portanto,

λ|y, α, β, k = 1 ∼ Gama(n + 2, 1 +∑

yi )

p(β|y, α, λ, k = 2) ∝ p(y|α, β, k = 2)p(β)

∝ βnαe−β∑

yiβ3e−2β

∝ βnα+3e−β(2+∑

yi )

Portanto,

β|y, α, λ, k = 2 ∼ Gama(nα+ 4, 2 +∑

yi )

188

p(α|y, β, λ, k = 2) ∝ βnα

Γn(α)

yα−1i α3e−2α

A distribuicao condicional completa de α nao e conhecida entaovamos usar o algoritmo de Metropolis-Hastings propondo valoresα′ ∼ U[α− ǫ, α+ ǫ].

A probabilidade de aceitacao e,

min

{

1,p(y|α′, β, k = 2)

p(y|α, β, k = 2)

p(α′|k = 2)

p(α|k = 2)

}

ja que q(α′|α) = q(α|α′) = 1/2ǫ.

189

> mh.alpha <- function(y,n,alpha,beta,eps) {

+ z = runif(1, alpha - eps, alpha + eps)

+ if (z <= 0){

+ acc=0

+ } else {

+ t1=prod(y)

+ num = beta^(n*z) * t1^(z-1)/(gamma(z)^n)

+ den = beta^(n*alpha) * t1^(alpha-1)/(gamma(alpha)^n)

+ num = num * exp(-2*z)*z^3

+ den = den * exp(-2*alpha)*alpha^3

+ }

+ aceita = min(1,num/den)

+ u = runif(1)

+ newalpha = ifelse(u < aceita, z, alpha)

+ return(newalpha)

+ }

190

Suponha que o modelo atual e Exp(λ) e queremos propor omodelo Gama(α, β). Um possivel esquema de atualizacao e oseguine,

1. gere u ∼ Gama(a, b)

2. defina (α, β) = g(λ, u) = (u, λu)

3. calcule o Jacobiano,∣

0 1u λ

= u

4. aceite o novo modelo com probabilidade min(1,A) sendo

A =p(y | α, β, k = 2)

p(y | λ, k = 1)

p(α)p(β)

p(λ)

u

q(u)

191

• A transformacao no item (2) preserva a media, ou sejaE (Y ) = 1/λ sob o modelo exponencial eE (Y ) = u/λu = 1/λ sob o modelo gama.

• Se o modelo atual for Gama(α, β) e propomos o modeloExp(λ) o esquema reverso consiste em fazer

(λ, u) = g−1(α, β) = (β/α, α).

• A probabilidade de aceitacao e simplesmente min(1, 1/A)substituindo u = α,

A =p(y | λ, k = 1)

p(y | α, β, k = 2)

p(λ)

p(α)p(β)

q(α)

α.

192

> rj.modelo <- function(y,n,lambda,alpha,beta,model,a,b) {

+ if (model == 1) {

+ u = rgamma(1,a,b)

+ alpha1 = u

+ beta1 = lambda*u

+ lambda1 = lambda

+ } else {

+ lambda1 = beta/alpha

+ alpha1 = alpha

+ beta1 = beta

+ u = alpha

+ }

+ t1 = prod(y); t2 = sum(y)

+ num=beta1^(n*alpha1)*t1^(alpha1-1)*exp(-beta1*t2)/(gamma(alpha1)^n)

+ num=num * 2^4 * alpha1^3 * exp(-2*alpha1)/gamma(4)

+ num=num * 2^4 * beta1^3 * exp(-2* beta1)/gamma(4) * alpha1

+ den=(lambda1^n) * exp(-lambda1*t2)

+ den=den * lambda1 * exp(-lambda1)/gamma(2)

+ den=den * b^a * u^(a-1) * exp(-b*u)/gamma(a)

+ u = runif(1,0,1)

193

+ if (model == 1) {

+ aceita = min(1,num/den)

+ if (u < aceita) {

+ model = 2

+ alpha = alpha1

+ beta = beta1

+ }

+ } else {

+ aceita = min(1,den/num)

+ if (u < aceita) {

+ model = 1

+ lambda = lambda1

+ }

+ }

+ if (model == 1) return(list(model=model, lambda=lambda))

+ else return(list(model=model, alpha=alpha, beta=beta))

+ }

194

> rjmcmc <- function(niter,nburn,y,n,a,b,eps=0.25){

+ x = matrix(0, nrow=niter+1, ncol=3)

+ x1 = matrix(0, nrow=niter-nburn, ncol=3)

+ nv = nv1= array(0,2)

+ mod= array(0,niter-nburn)

+ x[1,] = c(1,1,1)

+ model = 1

+ t1 = prod(y)

+ t2 = sum(y)

+ for (i in 1:niter){

+ if (model==1){

+ x[nv[1]+1,1] = rgamma(1, n + 2, t2 + 1)

+ } else {

+ x[nv[2]+1,3] = rgamma(1, 4 + n*x[nv[2],2], t2 + 2)

+ x[nv[2]+1,2] = mh.alpha(y,n,x[nv[2],2],x[nv[2]+1,3],eps)

+ }

+ new = rj.modelo(y,n,x[nv[1]+1,1],x[nv[2]+1,2],x[nv[2]+1,3],model,a,b

+ model = new$model

+ if (i>nburn) mod[i-nburn]= model

+ if (model == 1) {

195

+ x[nv[1]+1,1] = new$lambda

+ nv[1] = nv[1] + 1

+ if (i > nburn) {

+ x1[nv1[1]+1,1] = new$lambda

+ nv1[1] = nv1[1] + 1

+ }

+ } else {

+ x[nv[2]+1,2] = new$alpha

+ x[nv[2]+1,3] = new$beta

+ nv[2] = nv[2] + 1

+ if (i > nburn) {

+ x1[nv1[2]+1,2] = new$alpha

+ x1[nv1[2]+1,3] = new$beta

+ nv1[2] = nv1[2] + 1

+ }

+ }

+ }

+ cat("Probabilidades a posteriori dos modelos","\n")

+ print(nv1/(niter-nburn))

+ cat("Medias a posteriori dos parametros","\n")

+ somas = apply(x1,2,sum)

196

+ print(somas/c(nv1[1],nv1[2],nv1[2]))

+ return(list(x=x,nv=nv, x1=x1, nv1=nv1, model=mod))

+ }

197

Exemplo. Testando o algoritmo com saltos reversiveis para oexemplo anterior. Os dados foram simulados como

Y1, . . . ,Yn ∼ Exp(3), com n = 10.

Total de 10000 iteracoes com 5000 de aquecimento.

Distribuicao proposta: u ∼ Gamma(1, 1).

Probabilidades de propor os saltos: rk,k ′ = rk ′,k = 1/2.

198

Probabilidades a posteriori dos modelos

[1] 0.7924 0.2076

Medias a posteriori dos parametros

[1] 3.514171 1.072862 3.306942

O modelo exponencial tem probabilidade a posteriori bem maiorque o modelo Gama.

199

Analise sob o modelo Exponencial.

Iterations = 1:3962

Thinning interval = 1

Number of chains = 1

Sample size per chain = 3962

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE

3.51417 1.00962 0.01604

Time-series SE

0.01604

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

1.797 2.790 3.407 4.136 5.704

200

2.5

5.0

7.5

0 1000 2000 3000 4000

va

r1

Traço da cadeia simulada

201

0.0

0.1

0.2

0.3

0.4

2 4 6 8

var1

var1

0 5 10 15 20

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

202

Analise sob o modelo Gama.

Iterations = 1:1038

Thinning interval = 1

Number of chains = 1

Sample size per chain = 1038

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE Time-series SE

alpha 1.073 0.2977 0.009239 0.009662

beta 3.307 1.0730 0.033304 0.031201

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

alpha 0.5659 0.8551 1.053 1.252 1.740

beta 1.6413 2.5053 3.175 3.955 5.717

203

alpha beta

0 200 400 600 800 1000 0 200 400 600 800 1000

2

4

6

0.5

1.0

1.5

2.0

Traço da cadeia simulada

204

beta

alpha

2 4 6

0.5 1.0 1.5 2.00.00

0.25

0.50

0.75

1.00

1.25

0.0

0.1

0.2

0.3

beta

alpha

0 5 10 15 20

0.0

0.5

1.0

0.0

0.5

1.0

Lag

Au

toco

rre

latio

n

205

Estimando os tempos medios de vida (E (Y )) sob o modelo 1(1/λ) e sob o modelo 2 (α/β).

Iterations = 1:3962

Thinning interval = 1

Number of chains = 1

Sample size per chain = 3962

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE

0.310509 0.099184 0.001576

Time-series SE

0.001576

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

0.1753 0.2418 0.2935 0.3584 0.5564

206

Iterations = 1:1038

Thinning interval = 1

Number of chains = 1

Sample size per chain = 1038

1. Empirical mean and standard deviation for each variable,

plus standard error of the mean:

Mean SD Naive SE

0.341420 0.096746 0.003003

Time-series SE

0.002866

2. Quantiles for each variable:

2.5% 25% 50% 75% 97.5%

0.1903 0.2749 0.3265 0.3961 0.5626

207

Outros exemplos

Exemplo. Sejam Y1, . . . ,Yn independentes tais que,

Yi ∼ Bernoulli(pi )

pi = F (α+ βxi), i = 1, . . . , n.

Poderiamos considerar diferentes funcoes de ligacao F (·): logito,probito, Gumbel, etc.

208

Exemplo. Sejam Y1, . . . ,Yn independentes tais que,

Yi ∼ N(µi , σ2), i = 1, . . . , n

sendo,

µi =

β0, (Modelo 0) ou,β0 + β1xi , (Modelo 1) ou,β0 + β1xi + β2x

2i , (Modelo 2)

para uma covariavel x .

209

Exemplo. Sejam Y1, . . . ,Yn independentes tais que,

Yi ∼ N(µi , σ2), i = 1, . . . , n

sendo,

µi = β0 +k∑

j=1

βjxij

Quais covariaveis devem entrar no modelo?

210

Para k = 3 e assumindo que β0 6= 0 temos 23 = 8 possiveismodelos: M0, M1, M2, M3, M12, M13, M23 e M123, sendo M0 omodelo sem convariaveis e M123 o modelo completo.

• Remover uma covariavel consiste em fazer seu coeficienteigual a zero.

• incluir uma covariavel consiste em gerar um novo coeficiente.Por exemplor, podemos propor um salto de M1 para M12

gerando u ∼ N(0, γ2) e fazendo a transformacao,

(β1, β2) = (β1, u)

• Neste caso a funcao g(·) e a identidade e o Jacobiano e iguala 1.

211

Exemplo. Velocidades de 82 galaxias em Km/seg na constelacaode Coroa Boreal.

0 10 20 30 40

0.0

00

.05

0.1

00

.15

0.2

0

velocity of galaxy (1000km/s)

de

nsity

212

• Podemos considerar o modelo k como uma mistura de k

distribuicoes normais.

• Se X representa a velocidade de uma galaxia em Km/segundo,

f (x |Θ) =k∑

j=1

pj fN(x |µj , σ2j ),

sendo

pj > 0 e

k∑

j=1

pj = 1.

e fN(x |µ, σ2) denota uma densidade normal com media µ evariancia σ2.

• Em geral nao e razoavel assumir um valor fixo para k.

213

Exemplo. Modelo autoregressivo de ordem p.

Xt = θ1pXt−1 + · · ·+ θppXt−p + ǫt

=

p∑

j=1

θjpXt−j + ǫt , ǫt ∼ N(0, σ2p).

O modelo pode ser reescrito como,

p∏

j=1

(1− λjB)Xt = ǫt , ǫt ∼ N(0, σ2p)

sendo λj as raizes inversas (reais ou complexas) e B o operador deretardo.

A condicao de estacionariedade e obtida se |λj | < 1, j = 1, . . . , p.

214

Distribuicao das raizes inversas.

• Se λj ∈ R, λj ∼ U(−1, 1).

• Se λj /∈ R,

λj = a+ bi = r cos θ + (r sin θ)i

sendo,

r ∼ U(0, 1)

θ ∼ U(0, π)

215

A funcao de densidade conjunta fica,

fp(λ1, . . . , λp) =1

Np

λj∈R

1

2I (|λj | < 1)

λj /∈R

1

πI (|λj | < 1)

sendo Np o numero de diferentes configuracoes das raizes,

Np =⌊p

2

+ 1.

Por exemplo, se p = 2 ha 2 raizes reais ou 2 complexas (Np = 2).Se p = 4 ha 4 raizes reais, ou 2 reais e 2 complexas, ou 4complexas (Np = 3).

Se a cadeia esta no modelo AR(p) e propomos um salto paraAR(p′) os termos Np e Np′ nao se cancelam na probabilidade deaceitacao.

216

Usando todos os modelos

• Assume-se que ∆ e uma quantidade de interesse bem definidaem todos os modelos.

• A distribuicao a posteriori de ∆ e,

p(∆|x) =k∑

i=1

p(∆|Mi , x)p(Mi |x)

com probabilidades a posteriori,

p(Mi |x) =p(x|Mi ) p(Mi)

p(x)

sendo

p(x|Mi) =

p(x|θi ,Mi)p(θi |Mi )dθi

217

Criterios de Informacao

Criterio de Informacao Deviance (DIC)

DIC (θi ,Mi ) = 2E [D(θi )|x]− D(E [θi |x])= −2 log p(x|θi ,Mi ) + 2pD

= D + pD

sendo

D(θi ) = −2 log p(x|θi ,Mi)

θi = E (θi |x)D = E (D(θi )|x)

O numero efetivo de parametros no modelo e,

pD = D − D(θi ).218

• Na pratica θi e D sao desconhecidos.

• Se θ1i , . . . ,θ

mi e uma amostra de p(θi |x) entao

D ≈ 1

m

m∑

k=1

D(θki ) e D(θi ) ≈ D

(

1

m

m∑

k=1

θki

)

• O DIC pode ser facilmente calculado durante as simulacoes dacadeia.

219

• O valor individual do DIC nao e relevante, somente diferencassao importantes.

• O DIC nao pode ser calculado se a verossimilhanca dependede algum parametro discreto (e.g. modelos de mistura).

220

top related