始める無料で始める

事後予測の計算

ここまでは、身長 \(X = 180\) の成人における体重 \(Y\) の事後トレンド \(m\)180 \(= a + b * 180\) を確認しました。データフレーム weight_chains には、\(a\) と \(b\) の対応する値から計算された \(m\)180 の事後妥当値が 100,000 件格納されています。

> head(weight_chains, 2)
          a        b        s iter     m_180
1 -113.9029 1.072505 8.772007    1  79.14803
2 -115.0644 1.077914 8.986393    2  78.96014

トレンドだけでなく、身長 180 cm の特定の成人の体重を予測したい場合はどうすればよいでしょうか。実は、それも可能です。そのためには、次のモデルで表されるトレンドからの個人差を考慮する必要があります。

\(Y\)180 \(\sim N(m\)180\(, s^2)\)

このモデルを使って、weight_chains 内の各事後妥当パラメータセットのもとで体重の予測値をシミュレートしましょう。

この演習はコースの一部です

RJAGS によるベイズモデリング

コースを見る

演習の手順

  • rnorm() を使って、weight_chains の 1 行目のパラメータ設定のもとで体重の予測値を 1 つシミュレートしてください。
  • 同様に、weight_chains2 行目のパラメータ設定を使って繰り返してください。
  • weight_chains 内の 100,000 件のパラメータ設定それぞれについて、体重の予測値を 1 つずつシミュレートしてください。結果は weight_chains の新しい変数 Y_180 として保存してください。
  • weight_chains のパラメータ値と予測値の最初の 6 行を表示してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Simulate 1 prediction under the first parameter set
rnorm(n = 1, mean = ___, sd = ___)

# Simulate 1 prediction under the second parameter set
rnorm(n = 1, mean = ___, sd = ___)

# Simulate & store 1 prediction under each parameter set
weight_chains <- weight_chains  %>% 
    mutate(Y_180 = rnorm(n = 100000, mean = ___, sd = ___))

# Print the first 6 parameter sets & predictions
コードを編集して実行