條件化的捷徑
太好了,你剛剛在沒有做任何模擬的情況下完成了一些 Bayesian 計算!你產生的圖應該和第 3 章計算出的後驗分佈相似。不過,你也會發現這需要寫一大段程式碼。能不能再精簡一點?
可以!你可以直接對資料做條件化,就不必先建立聯合分佈。
本練習屬於課程
R 的 Bayesian 資料分析基礎
練習說明
- 直接把
n_visitors設為6,用它取代原本的seq敘述。 - 接著,你可以移除用來對資料做條件化的那一行,以及它後面用來將
pars$probability正規化的那一行。 - 最後再檢查一次整段程式碼,確認這個修改後的結果會與先前相同。:)
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Simplify the code below by directly conditioning on the data
n_ads_shown <- 100
proportion_clicks <- seq(0, 1, by = 0.01)
n_visitors <- seq(0, 100, by = 1)
pars <- expand.grid(proportion_clicks = proportion_clicks,
n_visitors = n_visitors)
pars$prior <- dunif(pars$proportion_clicks, min = 0, max = 0.2)
pars$likelihood <- dbinom(pars$n_visitors,
size = n_ads_shown, prob = pars$proportion_clicks)
pars$probability <- pars$likelihood * pars$prior
pars$probability <- pars$probability / sum(pars$probability)
pars <- pars[pars$n_visitors == 6, ]
pars$probability <- pars$probability / sum(pars$probability)
plot(pars$proportion_clicks, pars$probability, type = "h")