Diagnostik rantai Markov & reprodusibilitas

Pemodelan Bayesian dengan RJAGS

Alicia Johnson

Associate Professor, Macalester College

Keluaran rantai Markov

Pemodelan Bayesian dengan RJAGS

Pertanyaan untuk dipertimbangkan

  • Seperti apa rantai Markov yang "baik"?

  • Seberapa akurat pendekatan rantai Markov terhadap posterior?

  • Berapa banyak iterasi yang perlu dijalankan?

Pemodelan Bayesian dengan RJAGS

Diagnostik: trace plot

Pemodelan Bayesian dengan RJAGS

Diagnostik: trace plot

Baik: stabil!

Buruk: tidak stabil

Pemodelan Bayesian dengan RJAGS

Diagnostik: banyak rantai

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

Pemodelan Bayesian dengan RJAGS

Diagnostik: banyak rantai

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

Pemodelan Bayesian dengan RJAGS

Diagnostik: banyak rantai

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

Pemodelan Bayesian dengan RJAGS

Diagnostik: banyak rantai

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

Pemodelan Bayesian dengan RJAGS
summary(sleep_sim)
1. Empirical mean and standard deviation for each variable,
   plus standard error of the mean:

   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. Quantiles for each variable:

   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
  • Takssaran rataan posterior $m$ = 29,10 ms

  • Galat baku (naif) dari taksiran ini = 0,2836 ms
    SD / $\sqrt{\text{number of iterations}}$

Pemodelan Bayesian dengan RJAGS

Diagnostik: galat baku

  • Rataan taktera = 29,10 ms

  • Galat baku (naif) = 0,2836 ms

  • $29.10 \pm 2*0.2836$
Pemodelan Bayesian dengan RJAGS

Alur kerja rantai Markov

  • Definisikan, kompilasi, dan simulasikan model

  • Periksa diagnostik berikut:

    • Trace plot
    • Keluaran banyak rantai
    • Galat baku
  • Finalisasi simulasi

Pemodelan Bayesian dengan RJAGS

Memfinalisasi rantai Markov: Reprodusibilitas

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

Ayo berlatih!

Pemodelan Bayesian dengan RJAGS

Preparing Video For Download...