ベイズ推定で未知の確率を推定しながらディシジョンツリー分析する方法

2023年10月7日

Photo by Thomas Lardeau on Unsplash

【ゆっくり解説】Youtubeはじめました!

予想が的中する確率には2通りある

プロ野球のシーズンが開幕する直前の3月下旬には、多くの解説者による様々な優勝チーム予想が出回ります。

多くは外れますが、誰の予想が一番当たるのでしょうか?

管理人は元千葉ロッテ里崎の予想が一番当たると思っているのですが、同意してくれる人は少ないでしょう。

 

この場合の確率には2通りあります。

  1. 里崎が「今年はロッテ優勝!」と言って本当にロッテが優勝する確率
  2. シーズンが終わってロッテが優勝した時に、シーズン前に里崎が「今年はロッテ優勝!」と言っていた確率

です。

この2つの確率は異なります。

例えば、里崎は自分の出身チームであるロッテに強い思い入れがあるため、かなりの高確率で「今年はロッテ優勝!」と言います。

でも、そのシーズンのオリックスの戦力が飛びぬけて高いと思えば、さすがの里崎も「今年の優勝はオリックス!」と予想するでしょう。

ところがそのシーズンに限ってロッテが奇跡的に優勝するかもしれません。

 

ここで過去10年間で2回ロッテが優勝し、そのうちの1回は順当に(里崎は予想していた)、もう1回は奇跡の優勝(里崎は予想していなかった)だったとします。

すると上記2の確率は1/2になりますね。

ロッテの2回の優勝のうち、里崎予想が的中したのは1回だけですので。

一方で上記1の確率は、里崎が10年間のうちで9回も「ロッテ優勝!」と予想していたとすると1/9ですね。

 

このように予想が的中する確率と言う時には2通りの確率があり、これらは本質的に異なります。

 

ベイズ推定とは?

ベイズ推定とは、2の確率から1の確率を推定する手法です。

ここで話しを簡単にするため、パ・リーグにはロッテとオリックスの2チームしかないとします。

すると、里崎がロッテ優勝を予想して、その通りにロッテが優勝する確率は、

クリックすると拡大します

で計算できます。

このように、ロッテ/オリックスがそれぞれ優勝する確率は分かっている必要がありますが、2の確率から1の確率を計算することができます

別の言い方では、「逆確率」を求めるとも言います。

 

なぜこのように計算できるのかについては下記の記事で解説しています。

「ベイズの定理」の導出とその適用例をわかりやすく解説【初心者向け】

 

エッセンスだけをまとめると次のようになります。

P(A|B)=P(AB)/P(B)   P(AB)=P(A|B)P(B)

P(B|A)=P(BA)/P(A)   P(BA)=P(B|A)P(A)

P(A⋂B)= P(B⋂A)=P(B|A)P(A) =P(A|B)P(B)

更に、

ののように、全体集合Wが互いに排他な集合Aと集合Bとで成り立っている時、

W=A+B=WA+WB

P(W)=P(WA)+P(WB)

=P(W|A)P(A)+P(W|B)P(B)

 

ベイズ推定が必要なディシジョンツリー分析の事例

問題設定

FMCGメーカーはESGの観点から、ある区間のトラック輸送鉄道輸送に切り替えることを検討しています。

大まかな傾向としては、原油価格が安いとトラック輸送の方が安く、原油高になれば鉄道輸送の方が安くなります。

輸送料金が安くなれば、会社としての利益は増えます。

具体的には次のことが分かっています。

 

トラック輸送&原油安 ⇒ 利益10億円

トラック輸送&原油高 ⇒ 利益4億円

鉄道輸送&原油安 ⇒ 利益8億円

鉄道輸送&原油高 ⇒ 利益6億円

 

また、過去20年間には原油安の年が60%原油高の年は40%ありました。

そして、ここに国際原油マーケットに詳しい腕利きのアナリストがいます。

このアナリストは、原油安の年には90%の確率で、また原油高の年には80%の確率で予想を的中させることが分かっていますが、このアナリストに依頼するには8千万円のコストがかかります。

このFMCGメーカーはトラック輸送にするか鉄道輸送にするかを決めるのに、原油アナリストに相場予想を聞くべきでしょうか?

 

ディシジョンツリーを描く

この問題をディシジョンツリーに描くと、次のようになります。

 

例えば一番右上の計算は、トラック輸送を選択して原油高になったので4億円の利益、しかし原油アナリストに頼んで0.8億円のコストがかかっているため、合計では4億円-0.8億円の利益となります。

 

可能性ノードの確率を計算する

ディシジョンツリー分析では決定者にとってアンコントローラブルな事象の分岐を可能性ノードで表しますが、この例では7つあります。

それぞれの分岐の確率を確率論の表記で書くと、次のようになります。(青字)

 

それぞれの確率はいくつになるでしょうか?

問題設定から分かる確率は次の通りです。

 

その年が原油安になる確率は60%で、原油高になる確率は40%なので、原油安になる事象をL、原油高になる事象をHで表すと、

P(L)=60%

P(H)=40%

になります。

また、原油アナリストは原油安の年には90%の確率で、原油高の年には80%の確率で予想を的中させていることが分かっているので、原油アナリストが原油安と予想する事象をAL、原油高と予想する事象をAHで表すと、

P(AL|L)=90%

P(AH|H)=80%

という条件付き確率で表すことができます。

また原油安の年に90%の確率で原油安と予想するということは、10%の確率で原油高と予想(つまり予想を外す)確率は10%となるため、

P(AH|L)=10%

ということも分かっています。

同様に、

P(AL|H)=20%

ということも分かっています。

 

ところが、先のディシジョンツリーに青字で書いた確率は、すべてこれらとは異なります

例えば、一番右上の確率はP(H|AH)ですね。

P(AH|H)=80%ということは分かっていますが、P(H|AH)は分かりませんね。

同様に①から④までの可能性ノードの分岐確率はすべて未知ですが、それらの逆確率は分かっているわけです。

従って、これらはすべてベイズ推定を使って求められます。

 

それではまずP(H|AH)を計算してみましょう。

P(H|AH)=P(HAH)/P(AH)

ここで、

P(HAH)=P(AH|H)P(H)=0.8×0.4=0.32

P(AH)=P(AHH)+P(AHL)

=P(AH|H)P(H)+P(AH|L)P(L)

=0.8×0.4+0.1×0.6

=0.38

よって、

P(H|AH)=0.32/0.38=0.84

P(L|AH)=1-0.84=0.16

と計算できました。

 

同様にP(L|AL)P(H|AL)も計算してみましょう。

P(L|AL)=P(LAL)/P(AL)

ここで、

P(LAL)=P(AL|L)P(L)=0.9×0.6=0.54

P(AL)=1-P(AH)=1-0.38=0.62

よって、

P(L|AL)=0.54/0.62=0.87

P(H|AL)=1-0.87=0.13

となります。

 

以上で、未知だったすべての確率が求まりました。

ディシジョンツリーに書き入れると、次のようになります。(青字)

 

ディシジョンツリーを解く

ここまでこれば、後は【ディシジョンツリー分析】テスト販売にかけるコストはいくらが妥当か?で解説したやり方で解いていくだけです。

例えば、可能性ノード①の期待金額価値の計算は次のようになります。

(4億-0.8億)×0.84+(10億-0.8億)×0.16

=4.16億円

 

同様に②から⑥までの可能性ノードについて計算すると、次のようになります。

 

決定ノードについては大きい方の分岐の値を取るだけですので、更に次のように簡略化できます。

 

可能性ノード⑦の期待金額価値を計算すると、更に次のように簡略化できます。

 

最後に残った決定ノードでは、7.3億よりも7.6億の方が大きいため、アナリストに頼まない方がお得ということが分かります。

しかしこれはアナリストに頼むと8千万円もかかるためです。

もしアナリストが5千万円以下にディスカウントしてくれれば、アナリストに頼む方がお得になるということも分かります。

 

まとめ

  1. ベイズ推定を使えば逆確率を求めることができる
  2. ディシジョンツリー分析で確率が分からなくても焦ることはない。ベイズ推定で逆確率を求めることにより分かることもある
  3. ディシジョンツリー分析では、どちらの選択がお得かを求めるだけでなく、お得になるための条件も求めることができる

 

Udemyの関連講座

実戦力主義。の統計学 Excel統計学で見えなかったものが見えてくる。

Excelというツールが与えられたとき、統計学は「最強」を超えた学問になった。興味深いデータで楽しく学んでみませんか?統計学が身近なツールであることを実感していただけます。

 

NumPyro で学ぶ ベイズ統計モデリング 【基礎編】

Google Colaboratory で実践する統計モデリング

 

【PythonとStanで学ぶ】仕組みが分かるベイズ統計学入門

確率の基礎から出発し、ベイズ統計学の基礎およびMCMCの原理を学びます。概念の理解とPythonでのプログラミングへの実装を合わせる事で、動かしながら原理を理解できます

 

はじめてのベイズ統計【PyMC3+Colab】-確率・統計の基礎からベイズ推定のPython実装まで-

機械学習と親和性の高い、ベイズ統計の初心者向けコースです。確率・統計の基礎から初めて、ベイズ推定によるA/Bテスト、線形回帰などを学びます。Google Colaboratory環境でライブラリPyMC3を使い、ベイズ推定を実装します。