Regresja bayesowska z predyktorem kategorycznym

Modelowanie bayesowskie z RJAGS

Alicia Johnson

Associate Professor, Macalester College

Cele rozdziału 4

  • Włączanie predyktorów kategorycznych do modeli bayesowskich
  • Budowanie wielowymiarowych modeli regresji bayesowskiej
  • Rozszerzenie metodologii regresji normalnej na uogólnione modele liniowe: regresja Poissona
Modelowanie bayesowskie z RJAGS

Natężenie ruchu na ścieżce rowerowej

Cel:
Analiza dziennego natężenia ruchu na ścieżce rowerowej w Massachusetts.

1 Zdjęcie: commons.wikimedia.org
Modelowanie bayesowskie z RJAGS

Modelowanie natężenia ruchu

$Y_i$ = natężenie ruchu (# użytkowników) w dniu $i$ $ \; $
$ \;$

Model
$Y_i \sim N(m_i, s^2)$

Modelowanie bayesowskie z RJAGS

Modelowanie natężenia ruchu według dnia tygodnia

$Y_i$ = natężenie ruchu (# użytkowników) w dniu $i$
$X_i$ = 1 dla dni roboczych, 0 dla weekendów

Model
$Y_i \sim N(m_i, s^2)$

Modelowanie bayesowskie z RJAGS

Modelowanie natężenia ruchu według dnia tygodnia

$Y_i$ = natężenie ruchu (# użytkowników) w dniu $i$
$X_i$ = 1 dla dni roboczych, 0 dla weekendów

Model
$Y_i \sim N(m_i, s^2)$

Modelowanie bayesowskie z RJAGS

Modelowanie natężenia ruchu według dnia tygodnia

$Y_i$ = natężenie ruchu (# użytkowników) w dniu $i$
$X_i$ = 1 dla dni roboczych, 0 dla weekendów

Model
$Y_i \sim N(m_i, s^2)$
$m_i = a + bX_i$

Modelowanie bayesowskie z RJAGS

Modelowanie natężenia ruchu według dnia tygodnia

$Y_i$ = natężenie ruchu (# użytkowników) w dniu $i$
$X_i$ = 1 dla dni roboczych, 0 dla weekendów

Model
$Y_i \sim N(m_i, s^2)$
$m_i = a + bX_i$

  • $a$ = typowe natężenie ruchu w weekendy

Modelowanie bayesowskie z RJAGS

$Y_i$ = natężenie ruchu (# użytkowników) w dniu $i$
$X_i$ = 1 dla dni roboczych, 0 dla weekendów

Model
$Y_i \sim N(m_i, s^2)$
$m_i = a + bX_i$

  • $a$ = typowe natężenie ruchu w weekendy
  • $a + b$ = typowe natężenie ruchu w dni robocze

  • $b$ = różnica między typowym natężeniem ruchu w dni robocze i weekendy
  • $s$ = resztkowe odchylenie standardowe
Modelowanie bayesowskie z RJAGS

Priors dla $a$ i $b$

Typowe natężenie ruchu w weekendy wynosi najprawdopodobniej około 400 użytkowników dziennie, ale może sięgać od 100 do 700.

Natężenie ruchu w dni robocze w porównaniu z weekendami jest niepewne – może być wyższe lub niższe.

Modelowanie bayesowskie z RJAGS

Prior dla $s$

$\;$

Odchylenie standardowe natężenia ruchu z dnia na dzień (w dni robocze i weekendy) jest jednakowo prawdopodobne dla dowolnej wartości od 0 do 200 użytkowników.

Modelowanie bayesowskie z RJAGS

Bayesowski model natężenia ruchu według dnia tygodnia

$Y_i \sim N(m_i, s^2)$
$m_i = a + b X_i$
$a \sim N(400, 100^2)$
$b \sim N(0, 200^2)$
$s \sim \text{Unif}(0, 200)$

Modelowanie bayesowskie z RJAGS

DEFINIOWANIE modelu bayesowskiego w RJAGS

$Y_i \sim N(m_i, s^2)$
$m_i = a + b X_i$
$a \sim N(400, 100^2)$
$b \sim N(0, 200^2)$
$s \sim \text{Unif}(0, 200)$

rail_model_1 <- "model{
    # Likelihood model for Y[i]





    # Prior models for a, b, s




}"  
Modelowanie bayesowskie z RJAGS

DEFINIOWANIE modelu bayesowskiego w RJAGS

$Y_i \sim N(m_i, s^2)$
$m_i = a + b X_i$
$a \sim N(400, 100^2)$
$b \sim N(0, 200^2)$
$s \sim \text{Unif}(0, 200)$

rail_model_1 <- "model{
    # Likelihood model for Y[i]
    for(i in 1:length(Y)) {
        Y[i] ~ dnorm(m[i], s^(-2))

    }

    # Prior models for a, b, s
    a ~ dnorm(400, 100^(-2))
    s ~ dunif(0, 200)


}"  
Modelowanie bayesowskie z RJAGS

DEFINIOWANIE modelu bayesowskiego w RJAGS

m[i] <- a + b[X[i]]

  • X[1] = weekend, X[2] = dzień roboczy
  • b ma 2 poziomy: b[1], b[2]
  • trend weekendowy ($m_i = a$)
    m[i] <- a + b[1]
rail_model_1 <- "model{
    # Likelihood model for Y[i]
    for(i in 1:length(Y)) {
        Y[i] ~ dnorm(m[i], s^(-2))
        m[i] <- a + b[X[i]]
    }

    # Prior models for a, b, s
    a ~ dnorm(400, 100^(-2))
    s ~ dunif(0, 200)


}"  
Modelowanie bayesowskie z RJAGS

DEFINIOWANIE modelu bayesowskiego w RJAGS

m[i] <- a + b[X[i]]

  • X[1] = weekend, X[2] = dzień roboczy
  • b ma 2 poziomy: b[1], b[2]
  • trend weekendowy ($m_i = a$)
    m[i] <- a + b[1]
    b[1] <- 0
rail_model_1 <- "model{
    # Likelihood model for Y[i]
    for(i in 1:length(Y)) {
        Y[i] ~ dnorm(m[i], s^(-2))
        m[i] <- a + b[X[i]]
    }

    # Prior models for a, b, s
    a ~ dnorm(400, 100^(-2))
    s ~ dunif(0, 200)
    b[1] <- 0

}"  
Modelowanie bayesowskie z RJAGS

DEFINIOWANIE modelu bayesowskiego w RJAGS

m[i] <- a + b[X[i]]

  • X[1] = weekend, X[2] = dzień roboczy
  • b ma 2 poziomy: b[1], b[2]
  • trend weekendowy ($m_i = a$)
    m[i] <- a + b[1]
    b[1] <- 0
  • dzień roboczy ($m_i = a + b$)
    m[i] <- a + b[2]
rail_model_1 <- "model{
    # Likelihood model for Y[i]
    for(i in 1:length(Y)) {
        Y[i] ~ dnorm(m[i], s^(-2))
        m[i] <- a + b[X[i]]
    }

    # Prior models for a, b, s
    a ~ dnorm(400, 100^(-2))
    s ~ dunif(0, 200)
    b[1] <- 0
    b[2] ~ dnorm(0, 200^(-2))
}"  

b[2] ~ dnorm(0, 200^(-2))

Modelowanie bayesowskie z RJAGS

Czas na ćwiczenia!

Modelowanie bayesowskie z RJAGS

Preparing Video For Download...