Regressão Bayesiana com preditor categórico

Modelagem Bayesiana com RJAGS

Alicia Johnson

Associate Professor, Macalester College

Objetivos do Capítulo 4

  • Incluir preditores "categóricos" em modelos Bayesianos
  • Projetar modelos de regressão Bayesiana "multivariada"
  • Estender a metodologia de regressão Normal para modelos lineares generalizados: regressão de Poisson
Modelagem Bayesiana com RJAGS

Volume na rail-trail

Objetivo:
Explorar o volume diário em uma rail-trail em Massachusetts.

1 Foto cortesia de commons.wikimedia.org
Modelagem Bayesiana com RJAGS

Modelando o volume

$Y_i$ = volume na trilha (nº de usuários) no dia $i$ $ \; $
$ \;$

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

Modelagem Bayesiana com RJAGS

Modelando o volume por dia da semana

$Y_i$ = volume na trilha (nº de usuários) no dia $i$
$X_i$ = 1 para dias de semana, 0 para fins de semana

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

Modelagem Bayesiana com RJAGS

Modelando o volume por dia da semana

$Y_i$ = volume na trilha (nº de usuários) no dia $i$
$X_i$ = 1 para dias de semana, 0 para fins de semana

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

Modelagem Bayesiana com RJAGS

Modelando o volume por dia da semana

$Y_i$ = volume na trilha (nº de usuários) no dia $i$
$X_i$ = 1 para dias de semana, 0 para fins de semana

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

Modelagem Bayesiana com RJAGS

Modelando o volume por dia da semana

$Y_i$ = volume na trilha (nº de usuários) no dia $i$
$X_i$ = 1 para dias de semana, 0 para fins de semana

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

  • $a$ = volume típico no fim de semana

Modelagem Bayesiana com RJAGS

$Y_i$ = volume na trilha (nº de usuários) no dia $i$
$X_i$ = 1 para dias de semana, 0 para fins de semana

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

  • $a$ = volume típico no fim de semana
  • $a + b$ = volume típico em dia de semana

  • $b$ = contraste entre volumes típicos de dia de semana vs fim de semana
  • $s$ = desvio-padrão residual
Modelagem Bayesiana com RJAGS

Priors para $a$ e $b$

O volume típico no "fim de semana" tende a ficar em torno de 400 usuários por dia, mas pode ser tão baixo quanto 100 ou tão alto quanto 700.

Não há certeza sobre como o volume em dias de semana se compara ao de fins de semana. Pode ser maior ou menor.

Modelagem Bayesiana com RJAGS

Prior para $s$

$\;$

O desvio-padrão do volume de um dia para o outro (seja em dias de semana ou fins de semana) é igualmente provável entre 0 e 200 usuários.

Modelagem Bayesiana com RJAGS

Modelo Bayesiano do volume por status de dia da semana

$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)$

Modelagem Bayesiana com RJAGS

DEFINIR o modelo Bayesiano no 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




}"  
Modelagem Bayesiana com RJAGS

DEFINIR o modelo Bayesiano no 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)


}"  
Modelagem Bayesiana com RJAGS

DEFINIR o modelo Bayesiano no RJAGS

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

  • X[1] = fim de semana, X[2] = dia de semana
  • b tem 2 níveis: b[1], b[2]
  • tendência no fim de semana ($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)


}"  
Modelagem Bayesiana com RJAGS

DEFINIR o modelo Bayesiano no RJAGS

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

  • X[1] = fim de semana, X[2] = dia de semana
  • b tem 2 níveis: b[1], b[2]
  • tendência no fim de semana ($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

}"  
Modelagem Bayesiana com RJAGS

DEFINIR o modelo Bayesiano no RJAGS

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

  • X[1] = fim de semana,X[2] = dia de semana
  • b tem 2 níveis: b[1], b[2]
  • tendência no fim de semana ($m_i = a$)
    m[i] <- a + b[1]
    b[1] <- 0
  • dia de semana ($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))

Modelagem Bayesiana com RJAGS

Vamos praticar!

Modelagem Bayesiana com RJAGS

Preparing Video For Download...