以下の統計検定2級対策動画で用いられているスライドの一部です。
今日のゴール
ベイズの定理 の概念と使い方を、具体例を通してマスターします。
- ある 結果 が観測されたとき…
- その 原因 が何であるかの確率を計算する
このパワフルなツールを身につけましょう!
ステップ1:具体例で考えてみよう
まず、具体的な問題に挑戦しながら、ベイズの定理がどのように使われるかを見ていきます。
問題設定
ある電子部品は、工場Xと工場Yの2箇所で生産されています。
| 工場 | 生産シェア | 製品不良率 |
|---|---|---|
| 工場X | 60% | 2% |
| 工場Y | 40% | 5% |
問題:
ある日、市場から抜き取った製品が 不良品 でした。
この不良品が 工場Xで生産された確率 はいくらでしょうか?
解法①:情報を整理しよう
まず、問題文に出てくる事象を記号で整理し、確率を書き出します。
$X$: 製品が工場Xで生産されたという事象
$Y$: 製品が工場Yで生産されたという事象
$E$: 製品が不良品であったという事象
分かっている確率
- $P(X) = 0.60$ (製品が工場X産である確率)
- $P(Y) = 0.40$ (製品が工場Y産である確率)
- $P(E|X) = 0.02$ (工場X産だった場合に、不良品である確率)
- $P(E|Y) = 0.05$ (工場Y産だった場合に、不良品である確率)
用語①:事前確率
「不良品を見つける」という情報を得る前の段階で、私たちが知っている確率を 事前確率 と呼びます。
- 製品が工場X産である確率: $P(X) = 0.60$
- 製品が工場Y産である確率: $P(Y) = 0.40$
この時点では、どの製品も60%の確率で工場Xから来ていると考えられます。
事前確率の可視化
import matplotlib.pyplot as plt
import seaborn as sns
# Data
labels = ['Factory X', 'Factory Y']
probabilities = [0.60, 0.40]
# Plot
plt.figure(figsize=(8, 6))
sns.barplot(x=labels, y=probabilities, palette='viridis')
plt.title('Prior Probabilities of Production')
plt.ylabel('Probability')
plt.ylim(0, 1)
plt.show()
解法②:ゴールを確認しよう
私たちが求めたいのは、
「製品が 不良品だった (結果) という条件のもとで、それが 工場Xで生産された (原因) 確率」です。
- これは、条件付き確率 $P(X|E)$ として表現できます。
用語②:事後確率
「不良品だった」という新しい情報を得た 後 の確率を 事後確率 と呼びます。
- 今回のゴールは、事後確率 $P(X|E)$ を求めることです。
ベイズの定理は、この 事前確率 を 事後確率 に更新するための計算ルールです。
解法③:分母 $P(E)$ を計算する
事後確率 $P(X|E)$ を求めるには、まず分母となる「製品が不良品である全体の確率 $P(E)$」が必要です。
不良品であるケースは、以下の2パターンが考えられます。
- 工場X で生産され、 かつ 不良品である場合
- 工場Y で生産され、 かつ 不良品である場合
$P(E)$ は、この2つの確率の合計になります( 全確率の定理 )。
解法④:各パターンの確率を計算
それぞれのパターンの確率は、 乗法定理 を使って計算できます。
-
工場X産かつ不良品 の確率 $P(E \cap X)$
$P(E \cap X) = P(E|X)P(X) = 0.02 \times 0.60 = 0.012$ -
工場Y産かつ不良品 の確率 $P(E \cap Y)$
$P(E \cap Y) = P(E|Y)P(Y) = 0.05 \times 0.40 = 0.020$
よって、製品が不良品である全体の確率 $P(E)$ は、
$P(E) = P(E \cap X) + P(E \cap Y) = 0.012 + 0.020 = 0.032$
解法⑤:最終的な確率を計算!
全ての材料が揃いました。ベイズの定理を使って事後確率 $P(X|E)$ を計算します。
$$
P(X|E) = \frac{P(E|X)P(X)}{P(E)}
$$
値を代入すると…
$$
P(X|E) = \frac{0.02 \times 0.60}{0.032} = \frac{0.012}{0.032} = 0.375
$$
答え: 発見された不良品が工場Xで生産された確率は 37.5% です。
考察:確率の変化
計算結果を比べてみましょう。
-
事前確率 $P(X)$: 60%
(情報を得る前は、工場X産である可能性が高かった) -
事後確率 $P(X|E)$: 37.5%
(「不良品だった」という情報を得て、確率は下がった)
なぜでしょうか?
工場Xの不良率(2%)は工場Y(5%)より低いため、「不良品が見つかった」という事実は、相対的に不良率の高い工場Yが原因である可能性を高め、工場Xが原因である可能性を低下させたと解釈できます。
確率の変化を可視化
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# Data
data = {
'Probability Type': ['Prior', 'Posterior'],
'Probability': [0.60, 0.375]
}
df = pd.DataFrame(data)
# Plot
plt.figure(figsize=(8, 6))
ax = sns.barplot(x='Probability Type', y='Probability', data=df, palette='coolwarm')
plt.title('Probability of Being from Factory X\n(Before and After Finding a Defect)')
plt.ylabel('Probability')
plt.ylim(0, 1)
# Add text labels
for p in ax.patches:
ax.annotate(f'{p.get_height():.3f}', (p.get_x() + p.get_width() / 2., p.get_height()),
ha='center', va='center', fontsize=15, color='black', xytext=(0, 10),
textcoords='offset points')
plt.show()
ステップ2:一般化と定義
ここまでの例を踏まえて、ベイズの定理を一般化し、用語を整理します。
ベイズの定理とは
ある事象 $B$ (結果) が発生したという条件下で、事象 $A$ (原因) が発生する確率 $P(A|B)$ を求めるための定理です。
ベイズの定理の公式
$$
P(A|B) = \frac{P(B|A)P(A)}{P(B)}
$$
| 項 | 名称 | 意味 | 例題の対応 |
|---|---|---|---|
| $P(A|B)$ | 事後確率 | 結果Bの後での、原因Aの確率 | $P(X|E)$ |
| $P(A)$ | 事前確率 | 結果Bを知る前の、原因Aの確率 | $P(X)$ |
| $P(B|A)$ | 尤度 | 原因Aの下で結果Bが起こる尤もらしさ | $P(E|X)$ |
| $P(B)$ | 周辺尤度 | 原因に関わらず結果Bが起こる確率 | $P(E)$ |
定理の導出①:すべては「条件付き確率」から
ベイズの定理は、条件付き確率の定義式から簡単に導けます。
事象Aが起きた条件で事象Bが起きる確率 $P(B|A)$ は、以下で定義されます。
$$
P(B|A) = \frac{P(A \cap B)}{P(A)}
$$
$P(A \cap B)$ はAとBが同時に起こる確率です。
この式を変形すると、 乗法定理 が得られます。
$$
P(A \cap B) = P(B|A)P(A) \quad \cdots (1)
$$
定理の導出②:式をつなぎ合わせる
同様に、$P(A|B)$ の定義式からも乗法定理が導けます。
$$
P(A \cap B) = P(A|B)P(B) \quad \cdots (2)
$$
(1)と(2)は左辺が同じ $P(A \cap B)$ なので、右辺同士を等号で結べます。
$$
P(A|B)P(B) = P(B|A)P(A)
$$
最後に、両辺を $P(B)$ で割ると、ベイズの定理が完成します。
$$
P(A|B) = \frac{P(B|A)P(A)}{P(B)}
$$
まとめ
- ベイズの定理は、ある 結果 からその 原因 の確率を求める際に使います。
- 事前確率 が、新しい情報(観測結果)によって 事後確率 へと更新されるプロセスをモデル化します。
- 公式は、条件付き確率の定義から簡単に導出できます。
- 迷惑メールフィルタ、医療診断、機械学習など、幅広い分野で応用される非常に重要な定理です。

