ベイズ推定の適用例を公式を使わずに解いてみて、直感的に理解する

2022年11月20日

【円安の今こそチャンス!】

親日国カンボジアであなたの会社の商品を販売してみませんか?

食品/飲料ヘルスケアコスメ流通のスモールスタートを管理人がサポートします。

Royal Palace in Phnom Penh (2015)

ベイズ推定は公式を使わなくても解ける

顧客の指定する商品をミスなく出荷することは倉庫業務における基本ですが、出荷単位が細かくなるほどミスは起こりやすくなります。

そして国によってはミス率が高く、これが結構大きな問題になったりします。

 

A社は物流業者B社に倉庫業務を委託していますが、誤出荷があまりに多いため、配送トラックに載せる前の出荷前検品をB社に依頼しました。

しかし誤出荷はなかなか減りません。

A社はB社が本当に出荷前検品をしているのか疑念を持っています。

 

このような状況のもとで、B社の嘘をベイズ推定で暴いてみましょう。

しかし、ただベイズの定理に当てはめるだけでは実感が湧きにくいため、公式はあえて使わずに。

ベイズ推定の考え方は意外と簡単なのだということが分かると思います。

 

問題設定する

B社が出荷前検品を行う前の誤出荷率は30%でした。

この誤出荷率は出荷前検品を行うことで5%まで下がることが分かっています。

またA社はB社のことを信頼しており、B社が出荷前検品をやると約束してくれたので、90%の確率で本当にやってくれているものだと考えています。

このような状況のもと、出荷前検品を開始してから2回連続で誤出荷が発生しました。

A社は、B社が嘘をついている確率を何%だと考えればよいでしょうか?

 

公式を使わずにベイズ推定してみる

最初から嘘をついていると考えられる初期確率

A社は今までの付き合いから、B社は90%の確率で出荷前検品をしているだろうと信用していたので、嘘をつく確率は10%だと考えていました。

 

1回目の誤出荷を見て嘘をついていると考えられる確率

誤出荷を起こしたということは、

  • 出荷前検品をしたのに誤出荷だった
  • 出荷前検品をさぼって誤出荷になった

のうちのどちらかです。

 

ですので、下記のように2つの比率を求めればB社が嘘をついた(出荷前検品をさぼって誤出荷になった)確率が分かります。

 

2回目の誤出荷を見て嘘をついていると考えられる確率

以上のように1回目の誤出荷を見たA社は、40%の確率でB社が嘘をついていると思うようになりました。

 

そうしたら、2回目も誤出荷でした。

先ほどと同じように、誤出荷を起こしたということは、

  • 出荷前検品をしたのに誤出荷だった
  • 出荷前検品をさぼって誤出荷になった

のうちのどちらかです。

 

ですので、これも先ほどと同様にB社が嘘をついている確率は次のように求められます。

 

さすがに2回連続して誤出荷になれば、B社が嘘をついている確率は80%にまで上がりました。

 

嘘をついていると考えられる確率の推移

以上をまとめると、B社が嘘をついていると考えられる確率は、誤出荷が起こる度に次のように変化したことが分かります。

 

最初の初期確率10%はA社の主観ですが、誤出荷が2回起こったことでベイズ推定によりその確率が40%、80%と変化しました。

このように新しい出来事が起こる度(誤出荷が起こる度)、確率が更新されるためベイズ更新とも呼ばれます。

 

初期確率が1%の場合のベイズ更新

先ほどは初期確率(B社が嘘をついていると考えられる確率)が10%でしたが、これが1%の場合はどのように確率が更新されるでしょうか?

同じように計算すると次のようになります。

 

仏の顔も3度まで、B社は嘘をつくなんて99%あり得ないと思っていたA社でも、さすがに3度も誤出荷が続けば嘘の確率の方が高いとベイズ推定では判断するということです。

 

ベイズ推定として一般化する

以上がベイズ推定の方法ですが、これを一般化してみましょう。

嘘をついている(検品していない)という事象をAとし、嘘をついていない(検品している)という事象をBとします。

すると、嘘をついていると考えている初期確率が10%の場合、初期確率P(A)、P(B)は

P(A) = 10%

P(B) = 90%

と表すことができます。

 

このP(A)=10%がベイズ推定における事前確率です。

10%というのは、B社が嘘をついているとA社が考えている確率ですね。

あくまでA社の主観でそう思っているだけですので、主観確率です。

 

次にA社は誤出荷という事実を観察しました。

誤出荷が起こるのは

  1. 出荷前検品をしたのに誤出荷だった
  2. 出荷前検品をさぼって誤出荷になった

のうちのどちらかです。

ここで誤出荷という事象をXとすると、誤出荷が起こる確率はP(X)です。

そして問題設定の中にある

「この誤出荷率は出荷前検品を行うことで5%まで下がることが分かっています」

というのは

「検品あり(B)という条件の下で誤出荷(X)が5%の確率で起こる」

ということなので、条件付き確率P(X|B)で表すことができ、

P(X|B)=5%

と書けます。

「条件付き確率」の使い方を具体例を使ってわかりやすく解説【初心者向け】

従って、

検品をしたのに誤出荷になった確率は

=P(X|B)P(B)

=5%✕90%

=4.5%

になります。

これが先の1)の確率です。

 

次に2)の確率も同じように考えることができます。

問題設定の中にある

「B社が出荷前検品を行う前の誤出荷率は30%でした」

というのは

「検品なし(A)という条件の下で誤出荷(X)が30%の確率で起こる」

ということなので、条件付き確率P(X|A)で表すことができ、

P(X|A)=30%

と書けます。

 

従って、

検品をせずに誤出荷になった確率は

=P(X|A)P(A)

=30%✕10%

=3%

になります。

 

次にP(X|A)P(A)P(X|B)P(B)を全体とした時のP(X|A)P(A)の割合が、検品なしで誤出荷になった確率なので、

検品なしで誤出荷になった確率

=B社が嘘をついた確率

=P(X|A)P(A)/{P(X|A)P(A)+P(X|B)P(B)}

=3%/(4.5%+3%)

=40%

になります。

図で描くと次のようになります。

 

これが事後確率です。

A社の主観に過ぎなかった事前確率P(A)がXという事象(誤出荷)が起こったことで、

P(X|A)P(A)/{P(X|A)P(A)+P(X|B)P(B)}

に更新されたということです。

これが正にベイズ推定の公式です。

分母にあるP(X|A)P(A)+P(X|B)P(B)は周辺確率と呼ばれ、他の事象(AやB)によらずXが起こる確率のことです。

この場合は、B社が嘘をついているか否かにかかわらず、誤出荷が起こる確率です。

 

【Udemyの関連講座】

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

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

 

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

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

 

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

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

 

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

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