確率空間とは?標本空間・事象・確率測度をわかりやすく解説

確率空間は、確率論を厳密に定式化するための基礎となる概念です。確率空間は3つの要素からなり、$(\Omega, \mathcal{F}, P)$ と表記されます。

一見すると抽象的で難しそうですが、サイコロやコイン投げの具体例を通して考えれば、直感的に理解できます。

本記事の内容

  • 確率空間の3つの構成要素
  • 標本空間、シグマ加法族、確率測度の定義
  • コルモゴロフの公理
  • 具体例と Python でのシミュレーション

確率空間の構成要素

確率空間 $(\Omega, \mathcal{F}, P)$ は以下の3つから構成されます。

要素 記号 意味
標本空間 $\Omega$ 起こりうるすべての結果の集合
事象の集合 $\mathcal{F}$ 確率を割り当てることができる事象の集合(シグマ加法族)
確率測度 $P$ 各事象に確率を割り当てる関数

標本空間 $\Omega$

標本空間は、試行で起こりうるすべての結果(標本点)の集合です。

例1: サイコロ1回 $$ \Omega = \{1, 2, 3, 4, 5, 6\} $$

例2: コイン2回 $$ \Omega = \{HH, HT, TH, TT\} $$

例3: 待ち時間(連続) $$ \Omega = [0, \infty) $$

シグマ加法族 $\mathcal{F}$

シグマ加法族($\sigma$-加法族)は、確率を割り当てる対象となる事象の集合で、以下の3条件を満たします。

  1. $\Omega \in \mathcal{F}$(全事象が含まれる)
  2. $A \in \mathcal{F} \implies A^c \in \mathcal{F}$(補事象が含まれる)
  3. $A_1, A_2, \dots \in \mathcal{F} \implies \bigcup_{i=1}^{\infty} A_i \in \mathcal{F}$(可算和が含まれる)

例: サイコロの場合

最も大きなシグマ加法族は $\Omega$ のべき集合(すべての部分集合の集合)で、$2^6 = 64$ 個の事象を含みます。

$$ \mathcal{F} = \{\emptyset, \{1\}, \{2\}, \dots, \{1,2\}, \{1,3\}, \dots, \Omega\} $$

確率測度 $P$

確率測度は、事象に確率(0以上1以下の実数)を割り当てる関数 $P: \mathcal{F} \to [0, 1]$ で、コルモゴロフの公理を満たします。

コルモゴロフの公理

  1. 非負性: 任意の事象 $A \in \mathcal{F}$ に対して $P(A) \geq 0$
  2. 正規性: $P(\Omega) = 1$
  3. 可算加法性: 互いに排反な事象 $A_1, A_2, \dots$ に対して

$$ \begin{equation} P\left(\bigcup_{i=1}^{\infty} A_i\right) = \sum_{i=1}^{\infty} P(A_i) \end{equation} $$

公理から導かれる性質

$$ \begin{align} P(\emptyset) &= 0 \\ P(A^c) &= 1 – P(A) \\ A \subseteq B &\implies P(A) \leq P(B) \\ P(A \cup B) &= P(A) + P(B) – P(A \cap B) \end{align} $$

具体例: 公正なサイコロ

$$ \begin{align} \Omega &= \{1, 2, 3, 4, 5, 6\} \\ \mathcal{F} &= 2^\Omega \quad (\text{べき集合}) \\ P(\{k\}) &= \frac{1}{6} \quad (k = 1, 2, \dots, 6) \end{align} $$

偶数の目が出る事象: $A = \{2, 4, 6\}$

$$ P(A) = P(\{2\}) + P(\{4\}) + P(\{6\}) = \frac{1}{6} + \frac{1}{6} + \frac{1}{6} = \frac{1}{2} $$

確率変数との関係

確率変数 $X$ は、標本空間から実数への関数です。

$$ X: \Omega \to \mathbb{R} $$

例えば、サイコロの出目の2乗を確率変数とすると、$X(\omega) = \omega^2$ で、

$$ P(X \leq 9) = P(\{\omega \in \Omega : \omega^2 \leq 9\}) = P(\{1, 2, 3\}) = \frac{1}{2} $$

Python でのシミュレーション

import numpy as np
import matplotlib.pyplot as plt
from itertools import combinations

# 確率空間の具体例: サイコロ
Omega = [1, 2, 3, 4, 5, 6]

# シグマ加法族の一部の事象
events = {
    'empty': set(),
    '{1}': {1},
    '{2,4,6} (even)': {2, 4, 6},
    '{1,3,5} (odd)': {1, 3, 5},
    '{1,2,3}': {1, 2, 3},
    'Omega': set(Omega)
}

# 確率測度(公正なサイコロ)
P = {k: 1/6 for k in Omega}

def prob_event(event, P):
    return sum(P[w] for w in event)

# 事象の確率
fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 左: 各事象の確率
ax1 = axes[0]
event_names = list(events.keys())
event_probs = [prob_event(events[name], P) for name in event_names]
ax1.barh(event_names, event_probs, color='steelblue', alpha=0.7)
ax1.set_xlabel('P(A)', fontsize=12)
ax1.set_title('Probability of Events (Fair Die)', fontsize=13)
ax1.set_xlim(0, 1.1)
for i, v in enumerate(event_probs):
    ax1.text(v + 0.02, i, f'{v:.3f}', va='center', fontsize=11)
ax1.grid(True, alpha=0.3, axis='x')

# 右: モンテカルロシミュレーションによる検証
ax2 = axes[1]
np.random.seed(42)
n_trials_list = [10, 100, 1000, 10000, 100000]
event_even = {2, 4, 6}

estimated_probs = []
for n in n_trials_list:
    rolls = np.random.choice(Omega, size=n)
    est = np.mean([r in event_even for r in rolls])
    estimated_probs.append(est)

ax2.semilogx(n_trials_list, estimated_probs, 'bo-', linewidth=2, markersize=8,
             label='Monte Carlo estimate')
ax2.axhline(y=0.5, color='r', linestyle='--', linewidth=2, label='P(even) = 0.5')
ax2.set_xlabel('Number of trials', fontsize=12)
ax2.set_ylabel('Estimated P(even)', fontsize=12)
ax2.set_title('Convergence of P(even) by Simulation', fontsize=13)
ax2.legend(fontsize=10)
ax2.grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

左のグラフでは各事象の確率を示し、右のグラフではモンテカルロシミュレーションの試行回数を増やすと推定確率が理論値に収束していく様子を確認できます。

まとめ

本記事では、確率空間について解説しました。

  • 確率空間は標本空間 $\Omega$、シグマ加法族 $\mathcal{F}$、確率測度 $P$ の3つ組で定義される
  • コルモゴロフの公理(非負性、正規性、可算加法性)が確率論の基礎
  • 確率変数は標本空間から実数への関数として定義される
  • 公理的な定式化により、直感的な確率の概念を厳密に扱うことができる

次のステップとして、以下の記事も参考にしてください。