Diagnósticos de cadeias de Markov e reprodutibilidade

Modelagem Bayesiana com RJAGS

Alicia Johnson

Associate Professor, Macalester College

Saída da cadeia de Markov

Modelagem Bayesiana com RJAGS

Perguntas para considerar

  • Como é uma cadeia de Markov "boa"?

  • Quão precisa é a aproximação da posterior?

  • Quantas iterações devemos rodar?

Modelagem Bayesiana com RJAGS

Diagnóstico: gráficos de trajetória

Modelagem Bayesiana com RJAGS

Diagnóstico: gráficos de trajetória

Bom: estabilidade!

Ruim: instabilidade

Modelagem Bayesiana com RJAGS

Diagnóstico: múltiplas cadeias

# COMPILE o modelo
sleep_jags <- jags.model(..., n.chains = 1)

Modelagem Bayesiana com RJAGS

Diagnóstico: múltiplas cadeias

# COMPILE o modelo
sleep_jags <- jags.model(..., n.chains = 2)

Modelagem Bayesiana com RJAGS

Diagnóstico: múltiplas cadeias

# COMPILE o modelo
sleep_jags <- jags.model(..., n.chains = 4)

Modelagem Bayesiana com RJAGS

Diagnóstico: múltiplas cadeias

# COMPILE o modelo
sleep_jags <- jags.model(..., n.chains = 4)

Modelagem Bayesiana com RJAGS
summary(sleep_sim)
1. Média empírica e desvio-padrão para cada variável,
   mais erro-padrão da média:

   Mean    SD Naive SE Time-series SE
m 29.10 8.968   0.2836         0.2820
s 40.07 7.887   0.2494         0.4227

2. Quantis para cada variável:

   2.5%   25%   50%   75% 97.5%
m 11.42 23.27 28.85 34.76 46.76
s 28.31 34.65 38.93 43.91 57.56
  • Estimativa da média a posteriori de $m$ = 29.10 ms

  • Erro-padrão (ingênuo) dessa estimativa = 0.2836 ms
    SD / $\sqrt{\text{número de iterações}}$

Modelagem Bayesiana com RJAGS

Diagnóstico: erro-padrão

  • Média estimada = 29.10 ms

  • Erro-padrão (ingênuo) = 0.2836 ms

  • $29.10 \pm 2*0.2836$
Modelagem Bayesiana com RJAGS

Fluxo de trabalho da cadeia de Markov

  • Definir, compilar, simular o modelo

  • Verificar os seguintes diagnósticos:

    • Gráficos de trajetória
    • Saída de múltiplas cadeias
    • Erros-padrão
  • Finalizar a simulação

Modelagem Bayesiana com RJAGS

Finalizando a cadeia de Markov: reprodutibilidade

sleep_jags <- jags.model(textConnection(sleep_model), 
    data = list(Y = sleep_study$diff_3),
    inits = list(.RNG.name = "base::Wichmann-Hill",
                 .RNG.seed = 1989))
Modelagem Bayesiana com RJAGS

Vamos praticar!

Modelagem Bayesiana com RJAGS

Preparing Video For Download...