RJAGS ile Bayesian regresyon

RJAGS ile Bayesçi Modelleme

Alicia Johnson

Associate Professor, Macalester College

Bayesian regresyon modeli

$Y_i$ = yetişkin $i$'nin ağırlığı (kg)
$X_i$ = yetişkin $i$'nin boyu (cm)

$\;$

Model

$Y_i \sim N(m_i, s^2)$
$m_i = a + b X_i$

$a \sim N(0, 200^2)$
$b \sim N(1, 0.5^2)$
$s \sim \text{Unif}(0, 20)$

RJAGS ile Bayesçi Modelleme

Öncelerden (prior) içgörü

RJAGS ile Bayesçi Modelleme

Gözlenen ağırlık ve boy verilerinden içgörü

$Y_i \sim N(m_i, s^2)$
$m_i = a + b X_i$

wt_mod <- lm(wgt ~ hgt, bdims)
coef(wt_mod)
(Intercept)         hgt 
-105.011254    1.017617 
summary(wt_mod)$sigma
9.30804
RJAGS ile Bayesçi Modelleme

Regresyon modelini TANIMLA

weight_model <- "model{
    # Y[i] için olabilirlik (likelihood) modeli





    # a, b, s için öncüller (prior)




}"  
RJAGS ile Bayesçi Modelleme

Regresyon modelini TANIMLA

weight_model <- "model{
    # Y[i] için olabilirlik (likelihood) modeli
    for(i in 1:length(Y)) {


    }

    # a, b, s için öncüller (prior)




}"  
  • $Y_i \sim N(m_i, s^2)$, $i$ 1'den 507'ye
RJAGS ile Bayesçi Modelleme

Regresyon modelini TANIMLA

weight_model <- "model{
    # Y[i] için olabilirlik (likelihood) modeli
    for(i in 1:length(Y)) {
      Y[i] ~ dnorm(m[i], s^(-2))

    }

    # a, b, s için öncüller (prior)




}"  
  • $Y_i \sim N(m_i, s^2)$, $i$ 1'den 507'ye
RJAGS ile Bayesçi Modelleme

Regresyon modelini TANIMLA

weight_model <- "model{
    # Y[i] için olabilirlik (likelihood) modeli
    for(i in 1:length(Y)) {
      Y[i] ~ dnorm(m[i], s^(-2))
      m[i] <- a + b * X[i]
    }

    # a, b, s için öncüller (prior)




}"  
  • $Y_i \sim N(m_i, s^2)$, $i$ 1'den 507'ye
  • $m_i = a + b X_i$
    • NOT: ~ değil <- kullan
RJAGS ile Bayesçi Modelleme

Regresyon modelini TANIMLA

weight_model <- "model{
    # Y[i] için olabilirlik (likelihood) modeli
    for(i in 1:length(Y)) {
      Y[i] ~ dnorm(m[i], s^(-2))
      m[i] <- a + b * X[i]
    }

    # a, b, s için öncüller (prior)
    a ~ dnorm(0, 200^(-2))
    b ~ dnorm(1, 0.5^(-2))
    s ~ dunif(0, 20)

}"  
  • $Y_i \sim N(m_i, s^2)$, $i$ 1'den 507'ye
  • $m_i = a + b X_i$

    • NOT: ~ değil <- kullan
  • $a \sim N(0, 200^2)$

  • $b \sim N(1, 0.5^2)$
  • $s \sim \text{Unif}(0, 20)$
RJAGS ile Bayesçi Modelleme

Regresyon modelini DERLE

# Modeli DERLE    
weight_jags <- jags.model(textConnection(weight_model), 
    data = list(X = bdims$hgt, Y = bdims$wgt),
    inits = list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = 2018))

dim(bdims)
507  25
head(bdims$hgt)

head(bdims$wgt)
174.0 175.3 193.5 186.5 187.2 181.5

65.6 71.8 80.7 72.6 78.8 74.8
RJAGS ile Bayesçi Modelleme

Regresyon modelini SİMÜLE ET

# Modeli DERLE    
weight_jags <- jags.model(textConnection(weight_model), 
    data = list(X = bdims$hgt, Y = bdims$wgt),
    inits = list(.RNG.name = "base::Wichmann-Hill", 
                 .RNG.seed = 2018))

# Artalan (posterior) dağılımdan SİMÜLE ET
weight_sim <- coda.samples(model = weight_jags, 
    variable.names = c("a", "b", "s"), 
    n.iter = 10000)
RJAGS ile Bayesçi Modelleme

RJAGS ile Bayesçi Modelleme

Markov zinciri kararsızlığını giderme

  • Boy kestiricisini standartlaştır (ortalama çıkar, standart sapmaya böl)

  • Zincir uzunluğunu artır

RJAGS ile Bayesçi Modelleme

RJAGS ile Bayesçi Modelleme

Artalan (posterior) içgörüleri

RJAGS ile Bayesçi Modelleme

Hadi pratik yapalım!

RJAGS ile Bayesçi Modelleme

Preparing Video For Download...