การถดถอยแบบเบย์ด้วยตัวแปรพยากรณ์เชิงหมวดหมู่

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

Alicia Johnson

Associate Professor, Macalester College

เป้าหมายของบทที่ 4

  • นำตัวแปรพยากรณ์เชิงหมวดหมู่ เข้าสู่โมเดลแบบเบย์
  • สร้างโมเดลการถดถอยแบบเบย์แบบหลายตัวแปร
  • ขยายวิธีการจากโมเดลการถดถอยแบบ Normal ไปสู่โมเดลเชิงเส้นทั่วไป: การถดถอยแบบ Poisson
การสร้างแบบจำลอง Bayesian ด้วย RJAGS

ปริมาณการใช้งาน rail-trail

Goal:
Explore daily volume on a rail-trail in Massachusetts.

1 ภาพจาก commons.wikimedia.org
การสร้างแบบจำลอง Bayesian ด้วย RJAGS

การสร้างโมเดลปริมาณการใช้งาน

$Y_i$ = ปริมาณการใช้ trail (จำนวนผู้ใช้) ในวันที่ $i$ $ \; $
$ \;$

โมเดล
$Y_i \sim N(m_i, s^2)$

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

สร้างโมเดลปริมาณการใช้งานตามวันในสัปดาห์

$Y_i$ = ปริมาณการใช้ trail (จำนวนผู้ใช้) ในวันที่ $i$
$X_i$ = 1 สำหรับวันธรรมดา, 0 สำหรับวันหยุดสุดสัปดาห์

โมเดล
$Y_i \sim N(m_i, s^2)$

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

สร้างโมเดลปริมาณการใช้งานตามวันในสัปดาห์

$Y_i$ = ปริมาณการใช้ trail (จำนวนผู้ใช้) ในวันที่ $i$
$X_i$ = 1 สำหรับวันธรรมดา, 0 สำหรับวันหยุดสุดสัปดาห์

โมเดล
$Y_i \sim N(m_i, s^2)$

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

สร้างโมเดลปริมาณการใช้งานตามวันในสัปดาห์

$Y_i$ = ปริมาณการใช้ trail (จำนวนผู้ใช้) ในวันที่ $i$
$X_i$ = 1 สำหรับวันธรรมดา, 0 สำหรับวันหยุดสุดสัปดาห์

โมเดล
$Y_i \sim N(m_i, s^2)$
$m_i = a + bX_i$

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

สร้างโมเดลปริมาณการใช้งานตามวันในสัปดาห์

$Y_i$ = ปริมาณการใช้ trail (จำนวนผู้ใช้) ในวันที่ $i$
$X_i$ = 1 สำหรับวันธรรมดา, 0 สำหรับวันหยุดสุดสัปดาห์

โมเดล
$Y_i \sim N(m_i, s^2)$
$m_i = a + bX_i$

  • $a$ = ปริมาณการใช้งานทั่วไปในวันหยุดสุดสัปดาห์

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

$Y_i$ = ปริมาณการใช้ trail (จำนวนผู้ใช้) ในวันที่ $i$
$X_i$ = 1 สำหรับวันธรรมดา, 0 สำหรับวันหยุดสุดสัปดาห์

โมเดล
$Y_i \sim N(m_i, s^2)$
$m_i = a + bX_i$

  • $a$ = ปริมาณการใช้งานทั่วไปในวันหยุดสุดสัปดาห์
  • $a + b$ = ปริมาณการใช้งานทั่วไปในวันธรรมดา

  • $b$ = ความแตกต่างระหว่างปริมาณการใช้งานในวันธรรมดากับวันหยุดสุดสัปดาห์
  • $s$ = ส่วนเบี่ยงเบนมาตรฐานของส่วนที่เหลือ
การสร้างแบบจำลอง Bayesian ด้วย RJAGS

การแจกแจงก่อน (Prior) สำหรับ $a$ และ $b$

ปริมาณการใช้งานทั่วไปในวันหยุดสุดสัปดาห์ น่าจะอยู่ที่ประมาณ 400 คนต่อวัน แต่อาจต่ำสุดถึง 100 หรือสูงสุดถึง 700 คน

ยังไม่แน่ชัดว่าปริมาณการใช้งานในวันธรรมดาจะมากหรือน้อยกว่าวันหยุดสุดสัปดาห์ อาจมากกว่าหรือน้อยกว่าก็ได้

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

การแจกแจงก่อน (Prior) สำหรับ $s$

$\;$

ส่วนเบี่ยงเบนมาตรฐานของปริมาณการใช้งานจากวันหนึ่งไปอีกวัน (ทั้งวันธรรมดาและวันหยุดสุดสัปดาห์) มีโอกาสเท่ากันในช่วง 0 ถึง 200 คน

การสร้างแบบจำลอง Bayesian ด้วย 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)$

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

กำหนดโมเดลแบบเบย์ใน 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




}"  
การสร้างแบบจำลอง Bayesian ด้วย RJAGS

กำหนดโมเดลแบบเบย์ใน 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)


}"  
การสร้างแบบจำลอง Bayesian ด้วย RJAGS

กำหนดโมเดลแบบเบย์ใน RJAGS

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

  • X[1] = วันหยุดสุดสัปดาห์, X[2] = วันธรรมดา
  • b มี 2 ระดับ: b[1], b[2]
  • แนวโน้มวันหยุดสุดสัปดาห์ ($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)


}"  
การสร้างแบบจำลอง Bayesian ด้วย RJAGS

กำหนดโมเดลแบบเบย์ใน RJAGS

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

  • X[1] = วันหยุดสุดสัปดาห์, X[2] = วันธรรมดา
  • b มี 2 ระดับ: b[1], b[2]
  • แนวโน้มวันหยุดสุดสัปดาห์ ($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

}"  
การสร้างแบบจำลอง Bayesian ด้วย RJAGS

กำหนดโมเดลแบบเบย์ใน RJAGS

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

  • X[1] = วันหยุดสุดสัปดาห์, X[2] = วันธรรมดา
  • b มี 2 ระดับ: b[1], b[2]
  • แนวโน้มวันหยุดสุดสัปดาห์ ($m_i = a$)
    m[i] <- a + b[1]
    b[1] <- 0
  • วันธรรมดา ($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))

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

มาฝึกกันเถอะ!

การสร้างแบบจำลอง Bayesian ด้วย RJAGS

Preparing Video For Download...