事後分布のシミュレーション
有効性率の事前分布として Beta(5, 2) を使うことに決めました。データのモデル化には二項分布を使います(病気の患者が治ることを「成功」とみなします)。ベータ分布は二項尤度に対する共役事前分布なので、事後分布はそのままシミュレーションできます。
事前分布が \(Beta(a, b)\) のとき、事後分布は \(Beta(x, y)\) となり、
$x = NumberOfSuccesses + a$、
\(y = NumberOfObservations - NumberOfSuccesses + b\) です。
事後分布をシミュレーションできますか?全体で 22 人の患者データがあり、そのうち 19 人が治癒していることを思い出してください。numpy と seaborn はそれぞれ np と sns としてインポート済みです。
この演習はコースの一部です
Pythonで学ぶBayesianデータ分析
演習の手順
- 治療した患者数と治癒した患者数を、それぞれ
num_patients_treatedとnum_patients_curedに代入してください。 - 適切な
numpyの関数を用いて事後分布からサンプリングし、結果をposterior_drawsに代入してください。 - 適切な
seabornの関数を使って事後分布をプロットしてください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define the number of patients treated and cured
num_patients_treated = ____
num_patients_cured = ____
# Simulate 10000 draws from the posterior distribuition
posterior_draws = ____(____ + ____, ____ - ____ + ____, 10000)
# Plot the posterior distribution
____(____, shade=True)
plt.show()