λ¨μ λ‘μ§μ€ν± νκ·(Simple logistic regression) λͺ¨λΈμ λ€μκ³Ό κ°λ€.
β· κ°λ₯λλ λ² λ₯΄λμ΄ λΆν¬λ‘ μ νκ³ , κ°λ₯λ λͺ¨μμ λ‘μ§(Logit)μ λ 립λ³μμ μ νκ²°ν©μΌλ‘ μ μνλ€. μ΄λ, μμ μμμλ νλμ λ 립λ³μμ λν μ νκ²°ν©μΌλ‘ νννμμ§λ§, λ 립λ³μκ° μ¬λ¬κ°μ΄λ©΄ μ΄ λ 립λ³μλ€μ μ νκ²°ν©μ ν΅ν΄ λ‘μ§μ μ μνλ€.
β· λ‘μ§μ€ν± νκ·μ μμΈ‘μ κ°λ³ λ°μ΄ν°μ κ°λ₯λμ νκ· , μ¦ κ°λ₯λμ λͺ¨μλ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§λ€.
βΆ λ² μ΄μ§μ λ‘μ§μ€ν± νκ·(Bayesian logistic regression)λ λ‘μ§μ λνλ΄λ λ 립λ³μμ μ νκ²°ν©λ λͺ¨μμ μ¬μ λΆν¬λ₯Ό μ μνλ€λ μ μμ λ‘μ§μ€ν± νκ·μ μ°¨μ΄κ° μλ€.
Rμ boot ν¨ν€μ§μ urine λ°μ΄ν°λ₯Ό μ΄μ©νμ¬ λ² μ΄μ§μ λ‘μ§μ€ν± νκ· λΆμμ μνν κ²μ΄λ€. μν κ³Όμ μ λ€μκ³Ό κ°λ€.
1. λ°μ΄ν° νμΈ
2. λͺ¨λΈλ§
3. λͺ¨λΈ νμΈ
4. λͺ¨λΈ μμΈ‘
1. λ°μ΄ν° νμΈ
In:
library(boot)
data('urine')
pairs(urine)
Out:
β· λ²μ£Όν λ³μλ r, μ΄μΈμ 6κ°μ λ³μλ μ°μν λ³μλ‘ λ°μ΄ν°κ° ꡬμ±λμ΄ μλ€.
β· κ·Έλ¦Όμμ 보λ€μνΌ λͺ κ°μ μ°μν λ³μλ κ°ν μ νκ΄κ³λ₯Ό λνλ΄κ³ μλ κ²μ νμΈν μ μλ€.
2. λͺ¨λΈλ§
rμ μ’ μλ³μλ‘, μ΄μΈμ λ³μλ₯Ό λ 립λ³μλ‘ λμ΄ λ² μ΄μ§μ λ‘μ§μ€ν± νκ· λΆμμ ν κ²μ΄λ€. μμ λ°μ΄ν°λ₯Ό μ΄μ©νμ¬ λͺ¨λΈμ ν κ²½μ°, λ 립λ³μ κ°μ κ΄κ³λ‘λΆν° λ€μ€κ³΅μ μ±(Multicollinearity)λ₯Ό μμν μ μλ€. λ€μ€κ³΅μ μ±μ λͺ¨λΈλ§μ ν΅ν μμΈ‘λ§μ λ€λ£¨κ³ μ νλ€λ©΄ μκ΄μ΄ μμ§λ§, λͺ¨λΈμ κ²°κ³Όλ₯Ό ν΅ν ν΄μμ νκ³ μ νλ€λ©΄ λ¬Έμ κ° λ°μνκ² λλ€. μλνλ©΄ λ€μ€κ³΅μ μ±μΌλ‘ μΈν λΆμμ ν(Unstable) μΆμ μΉλ₯Ό μ»μ΄, μ’ μλ³μμμ κ΄κ³μ λν μλͺ»λ κ²°λ‘ μ μ΄λμ΄ λΌ μ μκΈ° λλ¬Έμ΄λ€.
λ€μ€κ³΅μ μ± λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λͺ¨μμ μ¬μ λΆν¬λ‘ λΌνλΌμ€ λΆν¬(Laplace distribution)λ₯Ό κ°μ ν κ²μ΄λ€. λΌνλΌμ€ λΆν¬λ 0μΈ μ§μ μ μ νΈ(Favor)νκΈ° λλ¬Έμ λ³μ μ νμ΄ κ°λ₯νλ€λ νΉμ§μ΄ μλ€.
In:
library(rjags)
X = scale(data[, -1], center = T, scale = T)
mod_string = " model {
for (i in 1:length(y)) {
y[i] ~ dbern(p[i])
logit(p[i]) = b0 + b[1]*gravity[i] + b[2]*ph[i] + b[3]*osmo[i] + b[4]*cond[i] + b[5]*urea[i] + b[6]*calc[i]
}
b0 ~ dnorm(0.0, 1.0/25.0)
for (j in 1:6) {
b[j] ~ ddexp(0.0, sqrt(2.0)) # has variance 1.0
}
} "
data_jags = list(y = data$r,
gravity = X[,'gravity'],
ph = X[,'ph'],
osmo = X[,'osmo'],
cond = X[,'cond'],
urea = X[,'urea'],
calc = X[,'calc'])
params = c('b0', 'b')
mod = jags.model(textConnection(mod_string), data = data_jags, n.chains = 3)
update(mod, 1e3)
mod_sim = coda.samples(model = mod,
variable.names = params,
n.iter = 5e3)
mod_comb_sim = as.mcmc(do.call(rbind, mod_sim))
Out:
Compiling model graph
Resolving undeclared variables
Allocating nodes
Graph information:
Observed stochastic nodes: 77
Unobserved stochastic nodes: 7
Total graph size: 1085
Initializing model
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100%
|**************************************************| 100%
|**************************************************| 100%
β· κ°λ³ λͺ¨μμ λνμ¬ κ°μ μ¬μ λΆν¬λ₯Ό μ¬μ©νκΈ° μνμ¬ λ 립λ³μλ₯Ό νμ€ν(Standardization)νμλ€.
β· μ΄μΈμ μ½λμ λν λ΄μ©μ μλ΅νλλ‘ νκ² λ€. JAGSμ μ¬μ©λ²μ λν΄ μμλ³΄κ³ μ νλ€λ©΄, λ€μμ ν¬μ€ν μ μ°Έκ³ νκΈΈ λ°λλ€.
3. λͺ¨λΈ νμΈ
λ§λ₯΄μ½ν 체μΈμ μλ ΄ κ³Όμ μ trace plotμ ν΅ν΄ νμΈνμ¬ λ³΄μ.
In:
plot(mod_sim)
Out:
β· λͺ¨λ λ§λ₯΄μ½ν 체μΈμ΄ μΆμΈ(Trend)λ₯Ό 보μ΄μ§ μμΌλ©°, μλ ΄νκ³ μλ κ²μ νμΈν μ μλ€.
β· b[1], b[4], b[6]μ λΆν¬λ 0μΌλ‘λΆν° λ²μ΄λ ννλ₯Ό 보μ΄κ³ μκ³ , μ΄μΈμ λͺ¨μλ 0μΌλ‘λΆν° ν¬κ² λ²μ΄λμ§ λͺ»ν κ²μ νμΈν μ μλ€. λͺ¨μμ λΆν¬κ° 0μΌλ‘λΆν° ν¬κ² λ²μ΄λμ§ λͺ»νλ€λ μλ―Έλ ν΄λΉ λͺ¨μμ λ³μκ° μ’ μλ³μμ ν¬κ² μν₯μ μ£Όμ§ μλ κ²μΌλ‘ ν΄μν μ μλ€. λ°λΌμ μ΄λ¬ν λ³μλ€μ μ μΈν μλ‘μ΄ λͺ¨λΈμ λν΄ μκ°ν΄λ³Ό μ μλ€.
Gelman-Rubin diagosticμ ν΅ν΄ λ§λ₯΄μ½ν 체μΈμ΄ μλ ΄νμλμ§ νμΈνμ¬ λ³΄μ.
In:
gelman.diag(mod_sim)
Out:
Potential scale reduction factors:
Point est. Upper C.I.
b[1] 1 1.00
b[2] 1 1.00
b[3] 1 1.01
b[4] 1 1.00
b[5] 1 1.00
b[6] 1 1.00
b0 1 1.00
Multivariate psrf
1
β· λͺ¨λ λͺ¨μμ κ²°κ³Όκ° 1λ‘ μλ ΄νκ³ μλ€λ κ²μ νμΈν μ μλ€.
4. λͺ¨λΈ μμΈ‘
μμ λͺ¨λΈμ ν΅ν΄ μμΈ‘μ νκ³ , μ€μ κ²°κ³Όμ λΉκ΅ν΄λ³΄μ.
In:
post_coef = colMeans(mod_comb_sim)
post_Xb = post_coef['b0'] + X %*% post_coef[-7]
phat = 1.0 / (1.0 + exp(-post_Xb))
plot(phat, jitter(data$r))
sum((data$r[phat >= 0.5] == 1), (data$r[phat < 0.5] == 0))/nrow(data)
Out:
[1] 0.8311688
β· μ€μ κ²°κ³Όκ° 0μΈ κ²½μ°μ phatμ 0 κ·Όμ²μ λͺ¨μ¬μκ³ , 1μΈ κ²½μ°μ p hatμ 1κ·Όμ²μ λͺ¨μ¬μλ κ²μ νμΈν μ μλ€. λ°λΌμ λΆλ₯κ° μ΄λ μ λ λκ³ μμμ νμΈν μ μλ€.
β· κ²½κ³κ°μ 0.5λ‘ λκ³ λΆλ₯ν κ²°κ³Ό, λΆλ₯μ μ νλκ° 83%μΈ κ²μΌλ‘ λνλ¬λ€.
βΆ κ²½κ³κ°μ μ΄λ»κ² μ€μ νλλμ λ°λΌ λͺ¨λΈμ μμΈ‘ κ²°κ³Όκ° λ¬λΌμ§λ€. λ°λΌμ λͺ¨λΈμ μμΈ‘ κ²°κ³Όμ λ°λ₯Έ μ±λ₯ μ΅μ νλ λ°λ‘ λ€λ£¨μ§ μκ² λ€.
Reference:
"Bayesian Statistics: From Concept to Data AnalysisTechniques and Models," Coursera, https://www.coursera.org/learn/bayesian-statistics/.
'Statistics > Bayesian Statistics' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
κ³μΈ΅μ λͺ¨λΈ(Hierarchical model) (0) | 2020.08.22 |
---|---|
λ² μ΄μ§μ ν¬μμ‘ νκ·(Bayesian poisson regression) (0) | 2020.08.21 |
DIC(Deviance Information Criterion) (0) | 2020.08.18 |
λ² μ΄μ§μ μ ν νκ·(Bayesian linear regression) (0) | 2020.08.17 |
MCMC(Markov Chain Monte-Carlo)μ μλ ΄(Convergence) (0) | 2020.08.16 |