開始使用免費開始

計算後驗預測

你剛剛探討了在身高 (X = 180) 的成人中,體重 (Y) 的後驗「趨勢」:(m{180} = a + b * 180)。weight_chains 資料框包含 100,000 組你以相對應的 (a) 與 (b) 計算出的 (m{180}) 的後驗合理值:

> head(weight_chains, 2)
          a        b        s iter     m_180
1 -113.9029 1.072505 8.772007    1  79.14803
2 -115.0644 1.077914 8.986393    2  78.96014

先別管趨勢——如果你想要「預測」某一位身高 180 公分成人的「特定」體重呢?當然可以!為此,你必須納入相對於趨勢的個體差異,其模型為:

(Y{180} \sim N(m{180}, s^2))

用這個模型,你將在 weight_chains 中,針對每一組後驗合理參數來模擬體重的預測值。

本練習屬於課程

使用 RJAGS 的貝氏建模

檢視課程

練習說明

  • 使用 rnorm(),在 weight_chains 的第 1 列參數設定下,模擬一個體重預測值。
  • 以上步驟再做一次,但改用 weight_chains 的「第 2 列」參數設定。
  • weight_chains 的 100,000 組參數設定下,各模擬一個體重預測值。將結果存成新的變數 Y_180,放入 weight_chains
  • 列印 weight_chains 中前 6 列的參數值與預測值。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Simulate 1 prediction under the first parameter set
rnorm(n = 1, mean = ___, sd = ___)

# Simulate 1 prediction under the second parameter set
rnorm(n = 1, mean = ___, sd = ___)

# Simulate & store 1 prediction under each parameter set
weight_chains <- weight_chains  %>% 
    mutate(Y_180 = rnorm(n = 100000, mean = ___, sd = ___))

# Print the first 6 parameter sets & predictions
編輯並執行程式碼