事後予測の計算
ここまでは、身長 \(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_chainsの 2 行目のパラメータ設定を使って繰り返してください。 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