始める無料で始める

条件付けのショートカット

ここまで、シミュレーションを使わずにベイズ計算を行いました。作成したプロットは、第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")
コードを編集して実行