始める無料で始める

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_gridpoll_result がまとめられています。ggplot()geom_density_ridges() レイヤーを追加し、各 poll_resulty 軸)がシミュレートされた 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()
コードを編集して実行