๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Statistics/Bayesian Statistics

MCMC(Markov Chain Monte-Carlo)์˜ ์ˆ˜๋ ด(Convergence)

MCMC(Markov Chain Monte-Carlo)๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ(Markov Chain)์ด ์ •์ƒ์ƒํƒœ(Stationary)์— ์ˆ˜๋ ด(Convergence)ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค.

 

1. Trace plot

2. ์ž๊ธฐ์ƒ๊ด€์„ฑ(Autocorrelation)

3. ์ดˆ๊ธฐ ๋‹จ๊ณ„(Burn-in period)

 

1. Trace plot

 

MCMC์˜ ์ˆ˜๋ ด์„ ํ™•์ธํ•˜๋Š” ๊ฐ€์žฅ ์ง๊ด€์ ์ธ ๋ฐฉ๋ฒ•์€ ๋ฐ์ดํ„ฐ์˜ ์ƒ์„ฑ ๊ณผ์ •์„ ์ง์ ‘ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์‹œํ–‰ํšŸ์ˆ˜์— ๋”ฐ๋ฅธ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

In:

log_g <- function(mu, n, ybar) {
  mu2 <- mu^2
  
  return(n * (ybar * mu - mu2 / 2.0) - log(1.0 + mu2))
}

mh_sampl <- function(n_data, ybar, n_iter, mu_init, prop_sd) {
  mu_out <- numeric(n_iter)
  accpt_cnt <- 0
  
  mu_now <- mu_init
  log_g_now <- log_g(mu_now, n_data, ybar)
  
  for (i in 1:n_iter) {
    mu_cand <- rnorm(1, mu_now, prop_sd)
    log_cand <- log_g(mu_cand, n_data, ybar)
    log_alpha <- log_cand - log_g_now
    alpha <- exp(log_alpha)
    
    if (runif(1) < alpha) {
      mu_now <- mu_cand
      accpt_cnt <- accpt_cnt + 1
      log_g_now <- log_cand
    }
    
    mu_out[i] <- mu_now
  }
  
  return(list(mu = mu_out, accpt_rate = accpt_cnt/n_iter))
}

y = c(-0.2, -1.5, -5.3, 0.3, -0.8, -2.2)

ybar = mean(y)
n = length(y)

library(coda)

post_sampl_1 = mh_sampl(n_data = n, ybar = ybar, n_iter = 1e3, mu_init = 0.0, prop_sd = 1.0)

traceplot(as.mcmc(post_sampl_1$mu))

post_sampl_2 = mh_sampl(n_data = n, ybar = ybar, n_iter = 1e3, mu_init = 0.0, prop_sd = 0.05)

traceplot(as.mcmc(post_sampl_2$mu))

post_sampl_3 = mh_sampl(n_data = n, ybar = ybar, n_iter = 1e4, mu_init = 0.0, prop_sd = 0.05)

traceplot(as.mcmc(post_sampl$mu_3))

 

Out:

 

โ–ท ์œ„์˜ ๊ทธ๋ฆผ์€ MCMC์˜ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ธ Metropolis-Hastings(์ดํ•˜ MH) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ๋‚˜ํƒ€๋‚œ ๊ฒฐ๊ณผ์ด๋‹ค. ์ด ํฌ์ŠคํŒ…์˜ ๋ชจ๋“  ๊ทธ๋ฆผ๊ณผ ๋ถ„์„์€ MH ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฒฐ๊ณผ๋กœ๋ถ€ํ„ฐ ๊ตฌํ•˜์˜€๋‹ค.

 

โ–ท ์ฒซ ๋ฒˆ์งธ ๊ทธ๋ฆผ๋ฅผ ๋ณด๋‹ค์‹œํ”ผ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๊ทœ๋ถ„ํฌ ํ˜•ํƒœ๋ฅผ ๋„๋ฉฐ ์ˆ˜๋ ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์ถ”์„ธ(Trend)๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ณ , ํ‰๊ท ์ด ์ผ์ •ํ•œ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์œผ๋ฉด ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์ด ์ˆ˜๋ ดํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

โ–ท ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฆผ์€ ์‹œํ–‰ํšŸ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜๋ก ๊ฐ์†Œํ•˜๋Š” ๊ฒฝํ–ฅ์„ ๋ณด์ด๊ณ  ์žˆ์œผ๋ฉฐ, ํ‰๊ท ์ด ์ผ์ •ํ•˜์ง€ ์•Š๋‹ค. ๋”ฐ๋ผ์„œ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์ด ์ˆ˜๋ ดํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์—†๋‹ค.

 

โ–ท ์„ธ ๋ฒˆ์งธ ๊ทธ๋ฆผ์€ ๋‘ ๋ฒˆ์งธ ๊ทธ๋ฆผ์˜ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ์กฐ๊ฑด(์ œ์•ˆ๋ถ„ํฌ์˜ ํ‰๊ท , ํ‘œ์ค€ํŽธ์ฐจ)๊ณผ ๊ฐ™๊ฒŒ ํ•œ ๋’ค, ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ ๊ฒฐ๊ณผ์ด๋‹ค. ์ดˆ๊ธฐ ์‹œํ–‰์—์„œ๋Š” ๊ฐ์†Œํ•˜๋Š” ๊ฒฝํ–ฅ์ด ๋‚˜ํƒ€๋‚˜์ง€๋งŒ, 2000๋ฒˆ ์‹œํ–‰ ์ดํ›„๋ถ€ํ„ฐ ์ถ”์„ธ๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ณ , ํ‰๊ท ์ด ์ผ์ •ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ œ์•ˆ ๋ถ„ํฌ์˜ ํ‘œ์ค€ํŽธ์ฐจ๊ฐ€ ๋‚ฎ์•„์„œ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์˜ ์ˆ˜๋ ด์†๋„๊ฐ€ ๋Š๋ ค์กŒ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜ํƒ€๋‚œ ๊ฒฐ๊ณผ์ด๋‹ค. ์ฆ‰, MH ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•œ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์˜ ์ˆ˜๋ ด์†๋„๋Š” ์ œ์•ˆ ๋ถ„ํฌ์˜ ํ‘œ์ค€ํŽธ์ฐจ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค.

 

2. ์ž๊ธฐ์ƒ๊ด€์„ฑ

 

์ž๊ธฐ์ƒ๊ด€์„ฑ์€ ๋ฐ์ดํ„ฐ์˜ ํ˜„์žฌ ์‹œ์ ๊ณผ ๊ณผ๊ฑฐ ์‹œ์ ์„ ๋น„๊ตํ•˜์—ฌ ์–ผ๋งˆ๋‚˜ ์„ ํ˜• ์˜์กด(Linearly dependent)์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ๋กœ -1๊ณผ 1์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ๋ฅผ ํ†ตํ•ด ์ž๊ธฐ์ƒ๊ด€์„ฑ์„ ํ™•์ธํ•ด๋ณด์ž.

 

In:

traceplot(as.mcmc(post_sampl_1$mu))

autocorr.plot(as.mcmc(post_sampl_1$mu))

traceplot(as.mcmc(post_sampl_2$mu))

autocorr.plot(as.mcmc(post_sampl_2$mu))

 

Out:

 

โ–ท ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ๊ทธ๋ฆผ์€ ์‹œ์ฐจ(Lag)๊ฐ€ 20์ธ ์ง€์ ์—์„œ ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด ๊ฑฐ์˜ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์ง€๋งŒ, ๋‘ ๋ฒˆ์งธ ์ค„์˜ ๊ทธ๋ฆผ์—์„œ๋Š” ์‹œ์ฐจ๊ฐ€ 30์ธ ์ง€์ ๊นŒ์ง€ ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด ๋†’๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. MCMC๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ์˜ ์ž๊ธฐ์ƒ๊ด€์„ฑ์€ ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์ง„ ์ •๋ณด๋Ÿ‰์œผ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด ๋‚ฎ์€ ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‘ ๋ฒˆ์งธ ์ค„์˜ ๊ฒฝ์šฐ๋ณด๋‹ค ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

โ–ถ ๋ฐ์ดํ„ฐ์— ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด์ „ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š” ์˜๋ฏธ์ด๋‹ค. MCMC์˜ ํŠน์„ฑ์ƒ ๊ฐ ์‹œ์ ์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์Œ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๊ธฐ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ๋‚˜ํƒ€๋‚  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ์˜ ESS(Effective Sample Size)๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๊ธฐ์ƒ๊ด€์„ฑ์„ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค.

 

โ–ถ ESS๋Š” MCMC๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ ์ค‘ ๋…๋ฆฝ์ธ ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ์˜ ์ž๊ธฐ์ƒ๊ด€์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ชฉ์  ๋ถ„ํฌ(Target distribution)์— ๋Œ€ํ•œ ESS(Effective Sample Size)๋ฅผ ๊ตฌํ•˜์—ฌ๋ณด์ž.

 

In:

post_sampl_4 = mh_sampl(n_data = n, ybar = ybar, n_iter = 1e6, mu_init = 0.0, prop_sd = 0.05)

traceplot(as.mcmc(post_sampl_4$mu))

autocorr.plot(as.mcmc(post_sampl_4$mu), lag.max = 2500)

thin_intverval = 300
thin_idx = seq(from = thin_intverval, 
               to = length(as.mcmc(post_sampl_4$mu)), 
               by = thin_intverval)

traceplot(as.mcmc(post_sampl_4$mu[thin_idx]))

autocorr.plot(as.mcmc(post_sampl_4$mu[thin_idx]), lag.max = 750)

 

Out:

 

 

โ–ท ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์ด ์ˆ˜๋ ดํ•˜๋Š” ๊ฒƒ๊ณผ ์‹œํ–‰ํšŸ์ˆ˜๊ฐ€ 300์ธ ์ง€์ ๋ถ€ํ„ฐ ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด ์ค„์–ด๋“ค์–ด ๊ฑฐ์˜ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ–ท ๋‘ ๋ฒˆ์งธ ์ค„์˜ ๊ทธ๋ฆผ์€ ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ์‹œํ–‰ํšŸ์ˆ˜๊ฐ€ 300๋‹จ์œ„์ธ ์ง€์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„๋‚ด์–ด ์ƒ์„ฑ๊ณผ์ •๊ณผ ์ž๊ธฐ์ƒ๊ด€์„ฑ์— ๋Œ€ํ•ด ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฐ ๊ฒƒ์ด๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ๊ทธ๋ฆผ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด์ „ ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ์™€ ๋…๋ฆฝ์ ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

In:

length(thin_idx)

effectiveSize(post_sampl_4$mu)

 

Out:

[1] 3333
    var1 
3366.361 

 

โ–ท ์ถ”์ถœํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜์™€ ESS๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ธ effectiveSize()์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค 3,300๋Œ€๋กœ ๋น„์Šทํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

In:

raftery.diag(post_sampl_4$mu)

 

Out:

Quantile (q) = 0.025
Accuracy (r) = +/- 0.005
Probability (s) = 0.95 
                                        
 Burn-in  Total  Lower bound  Dependence
 (M)      (N)    (Nmin)       factor (I)
 390      435500 3746         116      

 

โ–ถ raftery.diag()๋Š” ์ถ”์ •ํ•˜๊ณ ์ž ํ•˜๋Š” ์ถ”์ •์น˜์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜์— ๋Œ€ํ•ด Raftery and Lewis's diagnostic์„ ํ†ตํ•ด ์•Œ๋ ค์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

โ–ถ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์ด ์ˆ˜๋ ดํ•˜๊ธฐ๊นŒ์ง€ ํ•„์š”ํ•œ ์‹œํ–‰ํšŸ์ˆ˜๋Š” Burn-in, ์ถ”์ •์— ํ•„์š”ํ•œ ์ตœ์†Œ์˜ ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜๋Š” Total, ์ถ”์ •์— ํ•„์š”ํ•œ ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด 0์ธ ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๋Š” Lower bound๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. Dependence factor๋Š” Burn-in๊ณผ Total์˜ ํ•ฉ์„ Lower bound๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์œผ๋กœ ์–ผ๋งˆ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด ๋†’์€์ง€๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

โ–ท raftery.diag()๋ฅผ ์ด์šฉํ•œ ๊ฒฐ๊ณผ, ์œ„์˜ ์ถ”์ •์น˜๋ฅผ ์ถ”์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑํ•ด์•ผํ•˜๋Š” ์ตœ์†Œ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋Š” 435,500๊ฐœ์ธ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ๊ณ , ์ž๊ธฐ์ƒ๊ด€์„ฑ์ด 0์ธ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜ ์ตœ์†Œ 3,746๊ฐœ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ๋‹ค.

 

3. ์ดˆ๊ธฐ ๋‹จ๊ณ„

 

trace plot์„ ์ด์šฉํ•˜์—ฌ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์˜ ์ˆ˜๋ ด์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋Š” ์ •์„ฑ์ ์ธ ๋ฐฉ๋ฒ•์ด๊ธฐ์— ์ฃผ๊ด€์ ์ผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •๋Ÿ‰์ ์ธ ๋ฐฉ๋ฒ•์ด ์š”๊ตฌ๋˜๋Š”๋ฐ, Gelman-Rubin diagostic์„ ์ด์šฉํ•˜์—ฌ ์ •๋Ÿ‰์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Gelman-Rubin diagostic์„ ์ด์šฉํ•˜์—ฌ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์˜ ์ˆ˜๋ ด์„ ํ™•์ธํ•˜์—ฌ๋ณด์ž.

 

In:

post_sampl_1 = mh_sampl(n_data = n, ybar = ybar, n_iter = 1e3, mu_init = 50, prop_sd = 0.5)

post_sampl_2 = mh_sampl(n_data = n, ybar = ybar, n_iter = 1e3, mu_init = 25, prop_sd = 1.0)

post_sampl_3 = mh_sampl(n_data = n, ybar = ybar, n_iter = 1e3, mu_init = -25, prop_sd = 0.5)

post_sampl_4 = mh_sampl(n_data = n, ybar = ybar, n_iter = 1e3, mu_init = -50, prop_sd = 1.0)

idx = 1:length(post_sampl_1$mu)

list_post = mcmc.list(as.mcmc(post_sampl_1$mu), as.mcmc(post_sampl_2$mu), 
                      as.mcmc(post_sampl_3$mu), as.mcmc(post_sampl_4$mu))

traceplot(list_post)

gelman.diag(list_post)

 

Out:

Potential scale reduction factors:

     Point est. Upper C.I.
[1,]       1.01       1.03

 

โ–ท Gelman-Rubin diagostic์„ ํ†ตํ•ด ์ˆ˜๋ ด์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ดˆ๊ธฐ๊ฐ’์„ ๊ฐ€์ง„ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์„ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด๋Š” Gelman-Rubin diagostic์€ ์ดˆ๊ธฐ๊ฐ’์ด ์„œ๋กœ ๋‹ค๋ฅธ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์˜ ๋ณ€๋™์„ฑ(Variability)๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ดˆ๊ธฐ๊ฐ’์ด ๋‹ค๋ฅธ 4๊ฐœ์˜ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์„ ๋งŒ๋“ค์—ˆ๊ณ , ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ˆ˜๋ ด ๊ณผ์ •์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ–ท Gelman-Rubin diagostic์€ 1์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ๋ชจ๋“  ๋งˆ๋ฅด์ฝ”ํ”ผ ์ฒด์ธ์ด ์ˆ˜๋ ดํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ Galman-Rubin diagostic์˜ ์  ์ถ”์ •์น˜๊ฐ€ 1.01์ด๊ณ  ์‹ ๋ขฐ์ƒํ•œ์ด 1.03์ด๋ฏ€๋กœ, 4๊ฐœ์˜ ๋งˆ๋ฅด์ฝ”ํ”„ ์ฒด์ธ์€ ์ˆ˜๋ ดํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

In:

gelman.plot(list_post)

 

Out:

 

โ–ท gelmen.plat()์„ ํ†ตํ•ด ์‹œํ–‰ํšŸ์ˆ˜๊ฐ€ 500์ธ ์ง€์ ๋ถ€ํ„ฐ 1์— ๊ฐ€๊นŒ์›Œ์ง์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์‹œํ–‰ํšŸ์ˆ˜๊ฐ€ 500์ธ ์ง€์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„๋ฆฌ๊ณ , ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชฉ์ ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋กœ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 


Reference:

"Bayesian Statistics: From Concept to Data AnalysisTechniques and Models," Coursera, https://www.coursera.org/learn/bayesian-statistics/.