条件付けのショートカット
ここまで、シミュレーションを使わずにベイズ計算を行いました。作成したプロットは、第3章で計算した事後分布と似ているはずです。ただ、コードがかなり長くなってしまいましたね。もう少し短くできないでしょうか?
実はできます!データに直接条件付けすることで、結合分布を先に作成する必要がなくなります。
この演習はコースの一部です
RによるベイズデータAnalysisの基礎
演習の手順
seq文を置き換えて、n_visitorsに直接6を設定しましょう。- データへの条件付けを行っている行と、その次の
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")