Pythonプログラミングイントロダクション(20章) まで読みました。 20章はベイズ統計についです。
スパムフィルターでおなじみベイズフィルターですが、ベイズ統計を理解する上で重要な条件付き確率に関して問題が出ていました。
本書ではベイズ統計に関する例を取り上げつつ、Pythonで実装を提示してくれています。 そこは本書をみていただくとして、条件付き確率の問題について取り上げたいと思います。
条件付き確率
本書掲載の問題は下記になります。
あなたは森の中を歩き回り,美味しそうなキノコの群生を見つけた.
カゴいっぱいにキノコを採り,家に帰って旦那様のために,キノコ料理の準備を始める.
しかし,調理を始める前に,彼はあなたに,野生のキノコが毒キノコかどうかを本で調べるようにお願いした.
本によると,おしなべて野生キノコの80%は毒キノコとのことだ.
あなたは手元のキノコを本の中の写真と見比べ,95%の割合でそれが安心して食べられるキノコと判断した.
あなたはどの程度安心して,キノコ料理を旦那様に作ってあげられるだろうか.
採ってきたキノコが毒キノコの確率は80%になります。なので毒キノコで無い確率は20%です。これをP(B)とします。
写真をみて95%の確率で毒キノコで無いと判断していますが、実際採ってきたキノコが毒キノコの場合とそうで無い場合で、写真から判定される確率は異なると思います。 つまり写真と見比べて毒キノコで無いと判断した際の確率P(A)は毒キノコを採ってきたかそうで無いかという確率P(B)と独立でないと考えます。
仮に独立だとしても P(A) = P(A|B)です。
仮に、とってきたキノコが毒キノコで無いという条件のもと、写真と見比べた結果毒キノコで無い確率を95%とした場合、 採ってきたキノコが毒キノコでなく、写真で判断しても毒キノコで無い確率はいくらになるでしょうか。
写真判定シロ かつ 採ってきたキノコは毒でないを求めたいわけです。式で表すと
\( P(写真判定シロ \cap 採ってきたキノコは毒でない) = P(採ってきたキノコは毒でない) \times P(写真判定シロ|採ってきたキノコは毒でない) \\\ \)
P(A)とかP(B)を使うと
P(A ∩ B) = P(B) × P(A|B)
P(A ∩ B) = (0.2 × 0.95) × 100
P(A ∩ B) = 19
つまり19%の確率で毒キノコではないということになります。
あなたは食べますか?
僕は食べません。
まとめ
条件付き確立の問題について取り上げてみました。 ここまでの章で学んできた頻度統計学とは一線を画するベイズ統計について興味を持たせてくれる章でした。