X の p への依存関係をシミュレートする
公職への立候補に向けて、あなたの選挙運動チームは有権者 10 人を対象に世論調査を行います。\(X\) をあなたへの支持者数とします。当然、\(X\) はサンプルごとに異なり、より広い母集団におけるあなたの支持率 \(p\) に依存します。\(X\) は、それぞれの試行で成功確率 \(p\) を持つ 10 回の独立した試行における成功数であるため、\(p\) への依存関係を二項分布 Bin(10, \(p\)) でモデル化できます。
ここでは、rbinom(n, size, prob) 関数を使って二項モデルのシミュレーションを行います。このベクトル化された関数は、Bin(size, prob) 分布から n 個のサンプルを生成します。prob にベクトルを渡した場合、最初の prob 値が 1 回目の抽出に、2 番目の値が 2 回目の抽出に使用される、という形で処理が進みます。
この演習はコースの一部です
RJAGS によるベイズモデリング
演習の手順
seq()を使って、0 から 1 の範囲で \(p\) の候補値を 1000 個生成し、p_gridに格納してください。rbinom()を使って、p_grid内の 1000 個の \(p\) それぞれに対して、調査結果 \(X\) を 1 つずつシミュレートしてください。結果をpoll_resultに割り当てます。likelihood_simデータフレームにはp_gridとpoll_resultがまとめられています。ggplot()にgeom_density_ridges()レイヤーを追加し、各poll_result(y軸)がシミュレートされたp_grid値の分布(x軸)を可視化してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define a vector of 1000 p values
p_grid <- seq(from = ___, to = ___, length.out = ___)
# Simulate 1 poll result for each p in p_grid
# Create likelihood_sim data frame
likelihood_sim <- data.frame(p_grid, poll_result)
# Density plots of p_grid grouped by poll_result
ggplot(likelihood_sim, aes(x = ___, y = ___, group = poll_result)) +
geom_density_ridges()