๋ฒ ์ด์ง์ ๋ชจ๋ธ์์๋ ๋ชจ๋ธ ์ ํ์ ์ํ ์ ๋ณด์ ๊ธฐ์ค์ผ๋ก์จ DIC(Deviance Information Criterion)์ ์ ์ํ๊ณ ์๋ค. DIC์ ๊ณต์์ ๋ค์๊ณผ ๊ฐ๋ค.
โท theta hat์ ๊ฐ ๋ชจ์์ ์ฌํํ๊ท ์ด๊ณ , ์ฌํ๋ถํฌ๋ก๋ถํฐ ์ป์ theta hat์ ๋ก๊ทธ ๊ฐ๋ฅ๋์ ์ค์ง์ ์ธ ๋ชจ์์ ๊ฐฏ์(Effective number of parameters)๋ฅผ ๊ณ ๋ คํ์ฌ DIC๋ฅผ ๊ตฌํ ์ ์๋ค.
โถ ์ค์ง์ ์ธ ๋ชจ์์ ๊ฐฏ์๋ ๋ชจ๋ธ์ ์ถ์ ์น ์ฌ์ด์ ์๊ด(Correlation)์ ๊ณ ๋ คํ๊ธฐ ์ํ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋ธ์ ์ถ์ ์น ์ฌ์ด์ 0.99์ ์๊ด์ด ์กด์ฌํ๋ค๋ฉด ์ด๋ฅผ ๋ ๋ฆฝ์ ์ธ ๋ชจ์๋ก ๊ฐ์ฃผํ๋ค๋ฉด ํฉ๋ฆฌ์ ์ด์ง ์์ ๊ฒ์ด๋ค.
R์ car ํจํค์ง์ Leihardt ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ ๋ ๋ชจ๋ธ์ DIC๋ฅผ ํตํด ๋น๊ตํ์ฌ๋ณด์.
In:
library(car)
library(rjags)
data('Leinhardt')
Leinhardt$log_infant = log(Leinhardt$infant)
Leinhardt$log_income = log(Leinhardt$income)
data = na.omit(Leinhardt)
###########
# model 1 #
###########
mod1_string = " model {
for (i in 1:n) {
y[i] ~ dnorm(mu[i], prec)
mu[i] = b[1] + b[2]*log_income[i]
}
for (i in 1:2) {
b[i] ~ dnorm(0.0, 1.0/1.0e6)
}
prec ~ dgamma(5/2.0, 5*10.0/2.0)
sig2 = 1.0 / prec
sig = sqrt(sig2)
} "
data1_jags = list(y = data$log_infant,
n = nrow(data),
log_income = data$log_income)
params1 = c('b', 'sig')
inits1 = function() {
inits = list('b' = rnorm(2, 0.0, 100.0), 'prec' = rgamma(1, 1.0, 1.0))
}
mod1 = jags.model(textConnection(mod1_string),
data = data1_jags,
inits = inits1,
n.chains = 3)
###########
# model 2 #
###########
mod2_string = " model {
for (i in 1:length(y)) {
y[i] ~ dnorm(mu[i], prec)
mu[i] = b[1] + b[2]*log_income[i] + b[3]*is_oil[i]
}
for (i in 1:3) {
b[i] ~ dnorm(0.0, 1.0/1.0e6)
}
prec ~ dgamma(5/2.0, 5*10.0/2.0)
sig = sqrt( 1.0 / prec )
} "
data2_jags = list(y = data$log_infant,
log_income = data$log_income,
is_oil = as.numeric(data$oil == 'yes'))
params2 = c('b', 'sig')
inits2 = function() {
inits = list('b' = rnorm(3, 0.0, 100.0),
'prec' = rgamma(1, 1.0, 1.0))
}
mod2 = jags.model(textConnection(mod2_string),
data = data2_jags,
inits = inits2,
n.chains = 3)
update(mod1, 1e3)
update(mod2, 1e3)
Out:
Compiling model graph
Resolving undeclared variables
Allocating nodes
Graph information:
Observed stochastic nodes: 101
Unobserved stochastic nodes: 3
Total graph size: 404
Initializing model
Compiling model graph
Resolving undeclared variables
Allocating nodes
Graph information:
Observed stochastic nodes: 101
Unobserved stochastic nodes: 4
Total graph size: 507
Initializing model
|**************************************************| 100%
|**************************************************| 100%
โท ์์ ๋ ๋ชจ๋ธ์ ์ฐ์ํ ๋ณ์์ธ infant๋ฅผ ์์ธกํ๊ธฐ ์ํ ์ ํํ๊ท ๋ชจ๋ธ์ด๋ค. ์ฒซ ๋ฒ์งธ ๋ชจ๋ธ์ ์ฐ์ํ ๋ณ์์ธ income๋ง์ ์ด์ฉํ์๊ณ , ๋ ๋ฒ์งธ ๋ชจ๋ธ์ income๊ณผ ๋ฒ์ฃผํ ๋ณ์์ธ oil์ ์ด์ฉํ์ฌ ๋ชจ๋ธ๋งํ์๋ค.
โท DIC๋ฅผ ๊ตฌํ๊ธฐ ์ , 1,000ํ ๋ฐ์ดํฐ ์์ฑ์ ํตํด ๋ง๋ฅด์ฝํ ์ฒด์ธ์ด ์๋ ดํ๋๋ก ํ์๋ค. ์๋ ด์ ํ์ธํ๋ ๊ณผ์ ์ ์๋์ ํฌ์คํ ์ ํตํด์ ํ์ธํ ์ ์๋ค.
In:
dic.samples(mod1, n.iter = 1e3)
dic.samples(mod2, n.iter = 1e3)
Out:
|**************************************************| 100%
Mean deviance: 231.4
penalty 2.945
Penalized deviance: 234.3
|**************************************************| 100%
Mean deviance: 225.5
penalty 3.999
Penalized deviance: 229.5
โท dic.samples()๋ ์ฌํ๋ถํฌ๋ก๋ถํฐ n.iter๋งํผ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ , ์ด ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ์ถ์ ์น๋ฅผ ๊ตฌํ๊ณ DIC๋ฅผ ๊ณ์ฐํ๋ค.
โท Mean deviance๋ ์ถ์ ์น์ ๋ก๊ทธ ๊ฐ๋ฅ๋์ -2๋ฅผ ๊ณฑํ ๊ฒ์ผ๋ก, ๋ฎ์์๋ก ๋ชจ๋ธ์ด ๋ฐ์ดํฐ์ ์ ์ ํฉํ๋ค๊ณ ๋ณผ ์ ์๋ค. ๋ฐ๋ฉด, penalty๋ ์ค์ง์ ์ธ ๋ชจ์์ ๊ฐฏ์๋ก, ์ฒซ ๋ฒ์งธ ๋ชจ๋ธ์ ๊ฒฐ๊ณผ๋ 2.945์ธ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค. ๋ชจ๋ธ์ ํ๋ผ๋ฏธํฐ b[1], b[2], prec๋๋ฌธ์ ์ฝ 3๊ฐ๋ก ๋ํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๋ ๋ฒ์งธ ๋ชจ๋ธ์ oil์ ๋ํ ํ๋ผ๋ฏธํฐ๊ฐ ์ถ๊ฐ๋์์ผ๋ฏ๋ก, ์ฝ 4๊ฐ์ธ ๊ฒ์ผ๋ก ๋ํ๋ ๊ฒ์ ์ ์ ์๋ค.
โถ Penalized deviance๋ Mean deviance์ penalty์ ํฉ์ผ๋ก DIC๋ฅผ ์๋ฏธํ๋ค.
โท ๋ชจ๋ธ ์ ํ์, DIC๊ฐ ๋ฎ์์๋ก ๋ ์ ํฉํ ๋ชจ๋ธ์์ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ DIC๊ฐ 229.5๋ก ๋ ๋ฎ์ ๋ ๋ฒ์งธ ๋ชจ๋ธ์ ์ต์ข ๋ชจ๋ธ๋ก ์ ์ ํ ์ ์์ ๊ฒ์ด๋ค.
Reference:
"Bayesian Statistics: From Concept to Data AnalysisTechniques and Models," Coursera, https://www.coursera.org/learn/bayesian-statistics/.
"DIC์ WAIC: ๋ฒ ์ด์ง์ ๋ชจํ์ ํ์ ์ํ ์ ๋ณด ๊ธฐ์ค๋ค," ๋ฐ์ค์, https://bayestour.github.io/blog/2019/07/12/DIC_WAIC.html.
'Statistics > Bayesian Statistics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฒ ์ด์ง์ ํฌ์์ก ํ๊ท(Bayesian poisson regression) (0) | 2020.08.21 |
---|---|
๋ฒ ์ด์ง์ ๋ก์ง์คํฑ ํ๊ท(Bayesian logistic regression) (0) | 2020.08.19 |
๋ฒ ์ด์ง์ ์ ํ ํ๊ท(Bayesian linear regression) (0) | 2020.08.17 |
MCMC(Markov Chain Monte-Carlo)์ ์๋ ด(Convergence) (0) | 2020.08.16 |
๊น์ค ์ํ๋ง(Gibbs sampling) (0) | 2020.08.14 |