マルコフ連鎖の診断と再現性

RJAGS によるベイズモデリング

Alicia Johnson

Associate Professor, Macalester College

マルコフ連鎖の出力

RJAGS によるベイズモデリング

検討すべき問い

  • 「良い」マルコフ連鎖とはどのようなものか?

  • マルコフ連鎖による事後分布の近似精度は?

  • 何回反復すればよいか?

RJAGS によるベイズモデリング

診断:トレースプロット

RJAGS によるベイズモデリング

診断:トレースプロット

良い例: 安定性!

悪い例: 不安定

RJAGS によるベイズモデリング

診断:複数チェーン

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

RJAGS によるベイズモデリング

診断:複数チェーン

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

RJAGS によるベイズモデリング

診断:複数チェーン

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

RJAGS によるベイズモデリング

診断:複数チェーン

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

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
  • $m$ の事後平均の推定値 = 29.10 ms

  • この推定値の(単純)標準誤差 = 0.2836 ms
    SD / $\sqrt{\text{number of iterations}}$

RJAGS によるベイズモデリング

診断:標準誤差

  • 推定平均 = 29.10 ms

  • (単純)標準誤差 = 0.2836 ms

  • $29.10 \pm 2*0.2836$
RJAGS によるベイズモデリング

マルコフ連鎖のワークフロー

  • モデルの定義・コンパイル・シミュレーション

  • 以下の診断を確認

    • トレースプロット
    • 複数チェーンの出力
    • 標準誤差
  • シミュレーションの確定

RJAGS によるベイズモデリング

マルコフ連鎖の確定:再現性

sleep_jags <- jags.model(textConnection(sleep_model), 
    data = list(Y = sleep_study$diff_3),
    inits = list(.RNG.name = "base::Wichmann-Hill",
                 .RNG.seed = 1989))
RJAGS によるベイズモデリング

練習しましょう!

RJAGS によるベイズモデリング

Preparing Video For Download...