「天気の子」を題材にゼロから学ぶ「ベイズの定理」


# はじめに

映画「天気の子」を題材に「ベイズの定理」について丁寧に解説してみます。離散分布を考えた場合のベイズの定理を導出して、ベイズ更新まで解説します。映画のネタバレはありません。

# 設定

>現代において「晴れ女」を自称する女性のうち、85%が「ニセモノの晴れ女」、15%が「本物の晴れ女」であるという。「本物の晴れ女」の祈りは90%の割合で晴天を呼び出し、一方で「ニセモノ」の祈りは60%の割合でしか晴天を呼びだすことができない。
>
>6月5日、僕は天野陽菜（あまのひな）という自称「晴れ女」に出会った。
>
>そして、僕は、7月7日の午前が晴れになるように彼女に祈ってもらった。
>
>7月7日の午前は快晴だった。
>
>天野陽菜が「本物の晴れ女」である可能性は何パーセントなのだろうか。

# 情報を整理

情報を整理しておきます。

- 「晴れ女」を自称する女性のうち、$85\\%$ が「ニセモノ」、$15\\%$ が「本物」である。
- 「本物の晴れ女」の祈りは $90\\%$ の確率で晴天を呼ぶことができる。
- 「ニセモノの晴れ女」の祈りは $60\\%$ の確率で晴天を呼ぶことができる。
- 「晴れ女」を自称する天野陽菜が祈ると晴天になるという出来事（事象）を 1回だけ 確認した。

ここから、求めたいことは次のことです。

- 彼女が祈ると晴天になるという1回分の事象を踏まえたうえで、彼女が「本物の晴れ女」であるという確率


ベイズの世界では、このように何らかの事象を観測した後の確率（**可能性**・**確信の度合い**）を <font color='red'>**事後確率**</font> といいます。「何らかの事象」とは、いまの場合であれば「彼女が祈って7月7日が晴れた」という事象です。ベイズの定理は基本的に、この <font color='red'>**事後確率**</font> を求めるために使います。

ところで、<font color='red'>**事後確率**</font> を考えるのだから <font color='blue'>**事前確率**</font> というものも考えます。

<font color='blue'>**事前確率**</font> とは、事象を観測する前の確率です。いまの場合であれば、出会いがあった6月5日の段階において、彼女が「本物の晴れ女」であると考えられる確率です。これは、問題設定のなかで明示されているように $15\\%$ です。


整理すると「本物の晴れ女」である <font color='blue'>**事前確率**</font> が $15\\%$ のとき「晴天」という事象を1回観測すると、「本物の晴れ女」であるという確率（<font color='red'>**事後確率**</font>）はどのようになるのか？を考える問題です。これを解くための材料が <font color='orange'>**条件付き確率**</font> です。

<font color='orange'>**条件付き確率**</font> とは「ある事象が起こるという条件のもとで、別のある事象が起こる確率」のことです。いまの場合であれば「**仮定 '本物の晴れ女' が成立する条件のもとで**、晴れる確率（$90\\%$）」や「**仮定 'ニセモノの晴れ女' が成立する条件のもとで**、晴れる確率（$60\\%$）」が、<font color='orange'>**条件付き確率**</font>です。

# 各確率の関係を図に表現

ここで、一度、各種確率を整理して図として表現してみたいと思います（この図は、**ベイズの定理**の解説でよく利用されるものです）。

![天気の子をベイズ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152805/bb73de83-5506-0d88-2781-1d0235034c24.png)

上図は、**事象が観測される以前**の「世界の可能性」を表したものです。7月7日に**実際に天気を確認するまで**は、まだ「晴れ」の可能性も、「晴れ以外」の可能性も存在しています。また、彼女が「本物」である可能性も「ニセモノ」である可能性もあります。そして、それらの**全ての組合せの可能性**の**合計**は $1.0=100\\%$ になります。

図中の①から④の四角形の面積は、それぞれの可能性の高さ、つまり確率を表しています。例えば、①の「ニセモノで晴れ以外となる確率 $34\\%$」が「ニセモノである確率 $85\\%$」×「（ニセモノの祈りが）晴れ以外を起こす確率 $40\\%$」で計算できることは、直感と一致するのではないでしょうか？

ところで、この関係を一般化した数式にすると次式のように「事象 $D$ と 事象 $H$ の **同時確率** $P(D\cap H)$」は「事象 $H$ が起こる確率 $P(H)$ 」と「 $H$ を仮定したときに 事象 $D$ が起こるという<font color='orange'>**条件付き確率**</font> $P(D|H)$ 」の積として表現できます。

$$ P(D\cap H) = P(H) \cdot P(D|H) $$

### 補足

ちょっと寄り道して（後半の解説への伏線として）この段階で、7月7日が「晴れ」となる確率を計算してみます。この確率は、図から分かるように「②と④の面積」の合計で求められます。つまり、$0.51+0.135=0.645=64.5\\%$ です。

このことを少し一般化した式で表してみます。

天気を $D$ 、彼女が「ニセモノ」であることを $H_{0}$、「本物」であることを $H_{1}$ という記号で表すと、天気 $D$ の可能性を構成する2つの四角形の面積は、それぞれ、次のようになります。

```math:
P(D\cap H_{0}) = P(H_{0})  \, P(D|H_{0})  \\
P(D\cap H_{1}) = P(H_{1})  \, P(D|H_{1})
```

これら面積の合計が天気 $D$ となる確率 $P(D)$ なので、$P(D)$ は次のように書けます。

$$ P(D) = P(H_{0})  \, P(D|H_{0}) + P(H_{1})  \, P(D|H_{1})$$

この式を **式(1)** として、後半で利用します。

## 晴れた！

7月7日を迎えて「晴れ」という事象が観測されます。すると「晴れ以外」の可能性の世界は消滅して、次のように「ニセモノで晴れ」と「本物で晴れ」の可能性だけが世界に残ります。

![天気の子をベイズ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152805/4e8a10e8-71ac-bfb3-fcb1-812bc624a87a.png)


この状態では、面積 $=$ 確率では**ありません**。なぜなら、ありえる可能性（ここでは ①' と ②'）の総和をとっても $1.0=100\\%$ にならないからです。

2つの面積の比率を保ったまま、合計面積が $1.0$ となるようにします。この作業を **正規化** といいます。正規化すると「面積 $=$ 確率」となる図になります。

![天気の子をベイズ3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152805/412c4fe4-976c-4476-4e1f-66906119d627.png)


これで、彼女が「本物」である可能性についての答えがでました。

「晴れ」という事象は**実際に起きた事実**なので、この世界において「晴れで本物の確率」は「（彼女が）本物の確率」そのものです（「晴れ以外でXXの確率」は $0\\%$ なのだから）。その確率（面積）は図の ②' から明らかです。よって・・・

<font color='red'>**天野陽菜が「本物の晴れ女」である可能性は $21\%$ である**</font> という結論を得ます。

これを一般化してみます。図の ②' の面積は、天気$D$（ここでは「晴れ」）が観測されたときに彼女が「本物」である確率 $P(H_{1}|D)$ を表します（「本物」であることを $H_{1}$ という記号であらわしていたのを思い出してください）。

図中に書いてあるように確率 $P(H_{1}|D)$ は次の計算で求めました。

$$ P(H_{1}|D) =0.21 = \frac{0.135}{0.51+0.135}　$$

この式の要素である $0.51$ と $0.135$ は次の計算で得たものでした。

```math:
0.51 = 0.85 \times 0.6 = P(H_{0})\, P(D|H_{0}) \\
0.135 = 0.15 \times 0.9 =  P(H_{1})\, P(D|H_{1}) 
```

ということは、$P(H_{1}|D)$ は次のように書けるわけです。

$$ P(H_{1}|D) =\frac{ P(H_{1})\, P(D|H_{1}) }{ P(H_{0})\, P(D|H_{0}) + P(H_{1})\, P(D|H_{1})  }　$$

ここで、先に導いておいた **式(1)** を利用すると次のようになります。

$$ P(H_{1}|D) =\frac{ P(H_{1})\, P(D|H_{1}) }{ P(H_{0})\, P(D|H_{0}) + P(H_{1})\, P(D|H_{1})  }= \frac{ P(H_{1})\, P(D|H_{1})}{ P(D) }$$

$H_{1}$ を $H$ と書き換えて、右辺の分子の掛け算の順番を入れ替えると次のようになります。

$$  P(H|D) =  \frac{ P(D|H)\,  P(H)}{ P(D) }$$

この式が「**ベイズ定理**」とよばれるものになります。$D$ が観測されたときに $H$ である可能性（<font color='red'>**事後確率**</font>）は、この**ベイズの定理**を使って簡単に求めることができます。

## ベイズの定理を利用して簡単計算

ここまでは、<font color='red'>**事後確率**</font> を求めるために図を描いたり、ごちゃごちゃと説明をしましたが、**ベイズの定理**を利用すれば機械的に確率計算ができます。

ここでは **「7月7日の午前が雨だった」というパラレルワールド** を想定して、天野陽菜が「本物の晴れ女」の可能性を求めます。このパラレルワールドでは $D$ は「雨（晴れではない）」を表すことに注意してください。

```math:
\begin{align}
P(H_{1}|D) & = \frac {P(D|H_{1})\, P(H_{1})}{P(D)} \\
            & = \frac {P(D|H_{1})\, P(H_{1})}{P(H_{0})\, P(D|H_{0}) + P(H_{1})\, P(D|H_{1}) } \\
            & =\frac{0.1 \times 0.15}{ 0.4 \times 0.85 + 0.1 \times 0.15}\\
            & = 0.042
\end{align}
```

7月7日の午前が雨だと、天野陽菜が「本物の晴れ女」の可能性は $4.2\\%$ まで落ち込みます。

# 2回目の晴れ依頼（ベイズ更新）

7月7日が「晴れ」だった世界に戻ります。つづいて、次のような設定を考えます。

> 7月7日の午前は快晴だった。
>
> 天野陽菜は「本物の晴れ女」なのかもしれない。
>
> 僕は、もう一度、彼女にお願いをした。7月26日の夕方を晴れにして欲しい、と。
> 
> 彼女の祈りは通じた。

つまり、2回目も「晴れ」となりました。この事実を受けて、彼女が「本物の晴れ女」である可能性はどのように変化するかを考えています。ここでも**ベイズの定理**を利用します。

$$  P(H|D) =  \frac{ P(D|H)\,  P(H)}{ P(D) }$$

ただし、この際に、<font color='blue'>**事前確率**</font> $P(H)$ には「晴れ女を自称する女性のうち、85%が「ニセモノの晴れ女」、15%が「本物の晴れ女」であるという・・・」という最初の情報ではなく、**7月7日の結果によって更新された確率**を使います。

具体的には、彼女が「本物」である可能性 $21\\%$、「ニセモノ」である可能性 $79\\%$ です。このように、以前に求めた <font color='red'>**事後確率**</font> を次の推定における <font color='blue'>**事前確率**</font> として使うことを **ベイズ更新** といいます。

7月7日に引き続き、7月26日の夕方も晴れにした天野陽菜が「本物の晴れ女」である可能性（確信の度合い）は・・・

```math:
\begin{align}
P(H_{1}|D) & = \frac {P(D|H_{1})\, P(H_{1})}{P(D)} \\
            & = \frac {P(D|H_{1})\, P(H_{1})}{P(H_{0})\, P(D|H_{0}) + P(H_{1})\, P(D|H_{1}) } \\
            & =\frac{0.9 \times 0.21}{ 0.6 \times 0.79 + 0.9 \times 0.21}\\
            & = 0.285
\end{align}
```

$28.5\\%$ になりました。最初は $15\\%$、1回目に晴れを呼んで $21\\%$、2回目に晴れを呼んで $28.5\\%$ と「本物の晴れ女」である可能性が徐々に高くなってきていることが分かります。

このあと、彼女が何度も晴れを呼び出すことで、「本物の晴れ女」である可能性（確信の度合い）はどんどん高くなっていくのです。そして・・・（つづきは映画館で！）

# 関連

- [コイン投げを例題にPythonを使ってベイズ統計学の勉強](https://qiita.com/code0327/items/00876d65007473da9135) @ Qiita
 - 連続分布の場合のベイズの定理について書いています。


# 参考資料
- [1] 涌井貞美 著「図解・ベイズ統計「超」入門」**おすすめ**
- [2] 一石賢 著「意味がわかるベイズ統計学」
- [3] 小島寛之 著「完全独習ベイズ統計学入門」