馬可夫鏈診斷與可重現性

使用 RJAGS 的貝氏建模

Alicia Johnson

Associate Professor, Macalester College

馬可夫鏈輸出

使用 RJAGS 的貝氏建模

思考重點

  • 「良好」的馬可夫鏈應該長什麼樣?

  • 馬可夫鏈對後驗分佈的近似有多準確?

  • 應該跑多少次迭代?

使用 RJAGS 的貝氏建模

診斷:軌跡圖(trace plots)

使用 RJAGS 的貝氏建模

診斷:軌跡圖(trace plots)

好: 穩定!

差: 不穩定

使用 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...