開始使用免費開始

條件化的捷徑

太好了,你剛剛在沒有做任何模擬的情況下完成了一些 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")
編輯並執行程式碼