大数の法則とは?弱法則と強法則をわかりやすく解説

サイコロを6回振ったとき、出た目の平均が 3.5 にならないことは珍しくありません。しかし、6000回、60000回と振る回数を増やしていけば、標本平均はほぼ確実に 3.5 に近づいていきます。

この「試行回数を増やせば増やすほど、標本平均は母平均に近づく」という直感を数学的に厳密に述べたものが 大数の法則(Law of Large Numbers) です。大数の法則は確率論の最も基本的な極限定理の一つであり、統計的推定やモンテカルロ法など、あらゆる応用の理論的基盤となっています。

大数の法則には 弱法則(Weak Law of Large Numbers, WLLN)強法則(Strong Law of Large Numbers, SLLN) の2種類があります。どちらも「標本平均が母平均に収束する」ことを主張しますが、「収束」の意味が異なります。本記事では、準備段階の不等式(マルコフの不等式、チェビシェフの不等式)の導出から丁寧に解説し、Python によるシミュレーションで収束の様子を可視化します。

本記事の内容

  • マルコフの不等式とチェビシェフの不等式の導出
  • 弱大数の法則の定義とチェビシェフの不等式による証明
  • 強大数の法則の定義と弱法則との違い
  • 具体例(サイコロの平均、コイン投げの相対頻度)
  • モンテカルロ法との関連
  • Pythonによるシミュレーションと可視化

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

確率変数、期待値、分散の定義を前提として進めます。

記号の準備

本記事を通して、以下の記号を使用します。

  • $X_1, X_2, \dots, X_n$:独立同分布(i.i.d.)の確率変数列
  • $\mu = E[X_i]$:共通の期待値(母平均)
  • $\sigma^2 = \text{Var}(X_i)$:共通の分散(母分散)
  • $\bar{X}_n = \frac{1}{n}\sum_{i=1}^{n} X_i$:標本平均

大数の法則が主張するのは、$n \to \infty$ のとき $\bar{X}_n$ が $\mu$ に「収束」するということです。この「収束」の意味を厳密にするために、まず準備としてマルコフの不等式とチェビシェフの不等式を導出します。

チェビシェフの不等式

チェビシェフの不等式は、弱大数の法則を証明するための中心的な道具です。まず、その前段階としてマルコフの不等式から導出します。

マルコフの不等式

マルコフの不等式は、非負の確率変数がある閾値を超える確率 の上界を与える不等式です。期待値さえ分かっていれば、分布の形状によらず確率の上限を評価できます。

定理(マルコフの不等式): $X$ を非負の確率変数とし、$a > 0$ とする。このとき、

$$ P(X \geq a) \leq \frac{E[X]}{a} $$

が成り立つ。

導出

非負の確率変数 $X$ に対し、指示関数を用いて不等式を構成します。$X \geq a$ のとき $a \leq X$ なので、

$$ a \cdot \mathbf{1}_{X \geq a} \leq X $$

が成り立ちます。ここで $\mathbf{1}_{X \geq a}$ は $X \geq a$ のとき 1、それ以外のとき 0 をとる指示関数です。

両辺の期待値をとります。期待値の単調性($Y \leq Z$ なら $E[Y] \leq E[Z]$)を用いると、

$$ \begin{align} a \cdot E[\mathbf{1}_{X \geq a}] &\leq E[X] \end{align} $$

指示関数の期待値は確率そのものですので、

$$ \begin{align} a \cdot P(X \geq a) &\leq E[X] \end{align} $$

両辺を $a > 0$ で割ると、

$$ \begin{align} P(X \geq a) &\leq \frac{E[X]}{a} \end{align} $$

これがマルコフの不等式です。

直感的には、「期待値が小さい非負の確率変数が大きな値をとる確率は低い」ということを定量的に述べています。たとえば、非負の確率変数 $X$ の期待値が 10 であれば、$X \geq 100$ となる確率は高々 $10/100 = 0.1$ です。

マルコフの不等式からチェビシェフの不等式へ

チェビシェフの不等式は、確率変数が期待値からどれだけ離れる確率があるか の上界を与えます。マルコフの不等式を分散に適用することで得られます。

定理(チェビシェフの不等式): 期待値 $\mu$ と分散 $\sigma^2$ をもつ確率変数 $X$ に対し、任意の $\varepsilon > 0$ に対して、

$$ P(|X – \mu| \geq \varepsilon) \leq \frac{\sigma^2}{\varepsilon^2} $$

が成り立つ。

導出

チェビシェフの不等式は、マルコフの不等式を巧妙に適用することで導けます。

まず、$|X – \mu| \geq \varepsilon$ と $(X – \mu)^2 \geq \varepsilon^2$ は同値であることに注目します。そこで、非負の確率変数 $Y = (X – \mu)^2$ に対してマルコフの不等式を適用します。

$$ \begin{align} P(|X – \mu| \geq \varepsilon) &= P\!\left((X – \mu)^2 \geq \varepsilon^2\right) \end{align} $$

右辺にマルコフの不等式を $a = \varepsilon^2$ として適用すると、

$$ \begin{align} P\!\left((X – \mu)^2 \geq \varepsilon^2\right) &\leq \frac{E[(X – \mu)^2]}{\varepsilon^2} \end{align} $$

ここで、$E[(X – \mu)^2]$ は分散 $\sigma^2$ の定義そのものです。したがって、

$$ \begin{align} P(|X – \mu| \geq \varepsilon) &\leq \frac{\sigma^2}{\varepsilon^2} \end{align} $$

これがチェビシェフの不等式です。$\square$

チェビシェフの不等式の直感的な意味

チェビシェフの不等式は「分散が小さければ、確率変数は期待値の近くに集中する」ことを定量的に保証します。$\varepsilon = k\sigma$(期待値から標準偏差の $k$ 倍だけ離れた範囲)とすると、

$$ P(|X – \mu| \geq k\sigma) \leq \frac{1}{k^2} $$

が得られます。いくつかの値を見てみましょう。

$k$ チェビシェフの上界 $1/k^2$
2 0.25
3 0.111
5 0.04
10 0.01

分布の形状が一切不明であっても、この上限が成り立つ点がチェビシェフの不等式の強力さです。ただし、特定の分布(たとえば正規分布)を仮定すれば、実際の逸脱確率はこの上界よりもはるかに小さくなります。チェビシェフの不等式はあくまで「最悪ケース」の評価です。

弱大数の法則(WLLN)

確率収束の定義

弱大数の法則を述べるために、まず 確率収束 を定義します。

定義(確率収束): 確率変数列 $\{Y_n\}$ が定数 $c$ に 確率収束する とは、任意の $\varepsilon > 0$ に対して、

$$ \lim_{n \to \infty} P(|Y_n – c| \geq \varepsilon) = 0 $$

が成り立つことを言い、$Y_n \xrightarrow{P} c$ と書きます。

確率収束とは、「$Y_n$ が $c$ から $\varepsilon$ 以上ずれる確率が $n \to \infty$ で 0 に近づく」ということです。どんなに小さい $\varepsilon > 0$ を指定しても、$n$ を十分大きくとれば、$Y_n$ が $c$ の $\varepsilon$-近傍の外に出る確率をいくらでも小さくできます。

弱大数の法則の定理

定理(弱大数の法則): $X_1, X_2, \dots$ を独立同分布(i.i.d.)の確率変数列とし、$E[X_i] = \mu$、$\text{Var}(X_i) = \sigma^2 < \infty$ とする。このとき、標本平均 $\bar{X}_n = \frac{1}{n}\sum_{i=1}^{n}X_i$ は母平均 $\mu$ に確率収束する。すなわち、任意の $\varepsilon > 0$ に対し、

$$ \lim_{n \to \infty} P\!\left(|\bar{X}_n – \mu| \geq \varepsilon\right) = 0 $$

が成り立つ。これを $\bar{X}_n \xrightarrow{P} \mu$ と書く。

チェビシェフの不等式による証明

弱大数の法則の証明は、チェビシェフの不等式を標本平均に適用するだけで完了します。非常にエレガントな証明です。

ステップ1:標本平均の期待値を計算する

$$ \begin{align} E[\bar{X}_n] &= E\!\left[\frac{1}{n}\sum_{i=1}^{n} X_i\right] \\ &= \frac{1}{n}\sum_{i=1}^{n} E[X_i] \quad (\because \text{期待値の線形性}) \\ &= \frac{1}{n}\sum_{i=1}^{n} \mu \\ &= \frac{1}{n} \cdot n\mu \\ &= \mu \end{align} $$

すなわち、標本平均の期待値は母平均 $\mu$ に一致します。標本平均は母平均の 不偏推定量 です。

ステップ2:標本平均の分散を計算する

$X_1, X_2, \dots, X_n$ は独立なので、

$$ \begin{align} \text{Var}(\bar{X}_n) &= \text{Var}\!\left(\frac{1}{n}\sum_{i=1}^{n} X_i\right) \\ &= \frac{1}{n^2} \sum_{i=1}^{n} \text{Var}(X_i) \quad (\because \text{独立なら分散は加法的}) \\ &= \frac{1}{n^2} \sum_{i=1}^{n} \sigma^2 \\ &= \frac{1}{n^2} \cdot n\sigma^2 \\ &= \frac{\sigma^2}{n} \end{align} $$

標本平均の分散は $\sigma^2 / n$ であり、$n$ が大きくなるほど 0 に近づきます。これが弱大数の法則の本質です。

ステップ3:チェビシェフの不等式を適用する

$\bar{X}_n$ にチェビシェフの不等式を適用します。$\bar{X}_n$ の期待値は $\mu$、分散は $\sigma^2/n$ ですので、

$$ \begin{align} P\!\left(|\bar{X}_n – \mu| \geq \varepsilon\right) &\leq \frac{\text{Var}(\bar{X}_n)}{\varepsilon^2} \\ &= \frac{\sigma^2 / n}{\varepsilon^2} \\ &= \frac{\sigma^2}{n\varepsilon^2} \end{align} $$

ステップ4:$n \to \infty$ で極限をとる

$$ \begin{align} 0 \leq P\!\left(|\bar{X}_n – \mu| \geq \varepsilon\right) &\leq \frac{\sigma^2}{n\varepsilon^2} \to 0 \quad (n \to \infty) \end{align} $$

はさみうちの原理により、

$$ \lim_{n \to \infty} P\!\left(|\bar{X}_n – \mu| \geq \varepsilon\right) = 0 $$

が得られます。これで弱大数の法則が証明されました。$\square$

この証明のポイントは、分散が有限であるという仮定のもとで、標本平均の分散が $\sigma^2/n$ で 0 に収束することです。チェビシェフの不等式がこの分散の減少を確率の収束に翻訳してくれます。

強大数の法則(SLLN)

概収束の定義

強大数の法則を述べるために、まず 概収束(almost sure convergence) を定義します。

定義(概収束): 確率変数列 $\{Y_n\}$ が定数 $c$ に 概収束する とは、

$$ P\!\left(\lim_{n \to \infty} Y_n = c\right) = 1 $$

が成り立つことを言い、$Y_n \xrightarrow{\text{a.s.}} c$ と書きます。

概収束とは、「確率1で数列 $Y_1(\omega), Y_2(\omega), \dots$ が $c$ に収束する」ということです。もう少し砕いて言えば、$Y_n$ が $c$ に収束しないような標本点 $\omega$ の集合は確率測度 0 であるという意味です。

強大数の法則の定理

定理(強大数の法則): $X_1, X_2, \dots$ を独立同分布(i.i.d.)の確率変数列とし、$E[|X_i|] < \infty$(期待値が存在する)とする。このとき、

$$ P\!\left(\lim_{n \to \infty} \bar{X}_n = \mu\right) = 1 $$

が成り立つ。これを $\bar{X}_n \xrightarrow{\text{a.s.}} \mu$ と書く。

弱法則との違い

弱法則と強法則の最も重要な違いは 確率 $P$ と極限 $\lim$ の順序 です。

弱法則(確率収束):

$$ \lim_{n \to \infty} P\!\left(|\bar{X}_n – \mu| \geq \varepsilon\right) = 0 $$

各 $n$ ごとに確率を計算し、その確率の列が 0 に収束する、という主張です。「$n$ が大きいときに $\bar{X}_n$ が $\mu$ から離れている確率は小さい」と言っていますが、無限個の $n$ にわたって同時に離れないことは保証していません。

強法則(概収束):

$$ P\!\left(\lim_{n \to \infty} \bar{X}_n = \mu\right) = 1 $$

まず各標本点 $\omega$ ごとに数列 $\bar{X}_1(\omega), \bar{X}_2(\omega), \dots$ の極限をとり、その極限が $\mu$ に等しいという事象の確率が 1 である、という主張です。各標本列に対して、途中で一時的にずれることがあっても 最終的には必ず $\mu$ に落ち着く ことを保証しています。

イメージとしては次のように考えるとわかりやすいでしょう。サイコロを無限回投げる実験を想像してください。1回の実験で無限個の値 $(x_1, x_2, x_3, \dots)$ が得られ、各段階で標本平均 $\bar{x}_n$ を計算します。強大数の法則は、「この実験をどんな結果になろうと(確率 0 の例外的ケースを除いて)、標本平均の列 $\bar{x}_1, \bar{x}_2, \bar{x}_3, \dots$ は必ず 3.5 に収束する」と言っています。

両法則の比較を表にまとめます。

項目 弱大数の法則 強大数の法則
収束の種類 確率収束 $\xrightarrow{P}$ 概収束 $\xrightarrow{\text{a.s.}}$
確率と極限の順序 外側に $\lim$、内側に $P$ 外側に $P$、内側に $\lim$
仮定 分散が有限(チェビシェフ証明の場合) 期待値が存在
結論の強さ 弱い 強い

一般に、概収束は確率収束を含意します。

$$ \bar{X}_n \xrightarrow{\text{a.s.}} \mu \implies \bar{X}_n \xrightarrow{P} \mu $$

逆は一般には成り立ちません。したがって、強大数の法則は弱大数の法則よりも強い主張をしています。

強大数の法則の仮定に注目すると、分散が有限であることを仮定していません。期待値の存在($E[|X_i|] < \infty$)だけで成り立ちます。弱法則のチェビシェフ不等式による証明では分散の有限性 $\sigma^2 < \infty$ を仮定しましたが、強法則はより弱い仮定で、より強い結論を導きます。ただし、証明にはボレル=カンテリの補題などの測度論的な道具が必要になるため、本記事では証明の詳細は割愛します。

具体例

サイコロの平均

公正なサイコロ(各面 $1, 2, 3, 4, 5, 6$ が等確率 $1/6$ で出る)を $n$ 回投げたとき、出た目の標本平均を考えます。

各 $X_i$ の期待値は、

$$ \begin{align} \mu &= E[X_i] = \sum_{k=1}^{6} k \cdot \frac{1}{6} \\ &= \frac{1}{6}(1 + 2 + 3 + 4 + 5 + 6) \\ &= \frac{21}{6} \\ &= 3.5 \end{align} $$

分散は、

$$ \begin{align} E[X_i^2] &= \sum_{k=1}^{6} k^2 \cdot \frac{1}{6} \\ &= \frac{1}{6}(1 + 4 + 9 + 16 + 25 + 36) \\ &= \frac{91}{6} \end{align} $$

$$ \begin{align} \sigma^2 &= E[X_i^2] – (E[X_i])^2 \\ &= \frac{91}{6} – \left(\frac{7}{2}\right)^2 \\ &= \frac{91}{6} – \frac{49}{4} \\ &= \frac{182 – 147}{12} \\ &= \frac{35}{12} \approx 2.917 \end{align} $$

弱大数の法則より、チェビシェフの不等式を適用すると、

$$ P\!\left(|\bar{X}_n – 3.5| \geq \varepsilon\right) \leq \frac{35/12}{n\varepsilon^2} = \frac{35}{12n\varepsilon^2} $$

たとえば、$\varepsilon = 0.1$(標本平均が 3.5 から 0.1 以上ずれる確率)の場合、

$$ P\!\left(|\bar{X}_n – 3.5| \geq 0.1\right) \leq \frac{35}{12n \cdot 0.01} = \frac{35}{0.12n} $$

  • $n = 100$: 上界は $35/(0.12 \times 100) \approx 2.92$(1を超えるので自明)
  • $n = 1000$: 上界は $35/(0.12 \times 1000) \approx 0.292$
  • $n = 10000$: 上界は $35/(0.12 \times 10000) \approx 0.029$

$n = 10000$ では、標本平均が 3.5 から 0.1 以上ずれる確率は高々 3% 程度であることがわかります。実際にはこの上界はかなり緩い評価であり、真の確率はさらに小さいです。

コイン投げの相対頻度

公正なコインを $n$ 回投げたとき、表が出た回数を $S_n$ とすると、表の相対頻度は $S_n / n = \bar{X}_n$ です(ここで $X_i$ はベルヌーイ確率変数で、表なら 1、裏なら 0)。

$$ \mu = E[X_i] = P(\text{表}) = 0.5, \quad \sigma^2 = \text{Var}(X_i) = 0.5 \times 0.5 = 0.25 $$

大数の法則より、$n \to \infty$ で相対頻度 $S_n / n$ は確率 $0.5$ に収束します。これは 頻度主義的確率の正当化 とも解釈できます。つまり、「確率 $p$ のイベントを何度も繰り返せば、相対頻度は $p$ に近づく」という日常的な確率の理解が、大数の法則によって数学的に裏付けられているのです。

モンテカルロ法との関連

大数の法則は モンテカルロ法(Monte Carlo method) の理論的基盤です。モンテカルロ法とは、確率的なシミュレーションを用いて数値計算(特に積分や期待値)を行う手法です。

ある関数 $g(x)$ の期待値 $E[g(X)]$ を計算したいとします。$X$ の分布から $n$ 個の独立な標本 $x_1, x_2, \dots, x_n$ を抽出すれば、大数の法則により、

$$ \frac{1}{n}\sum_{i=1}^{n} g(x_i) \xrightarrow{\text{a.s.}} E[g(X)] \quad (n \to \infty) $$

が成り立ちます。これがモンテカルロ法の原理です。

特に、定積分の計算に応用できます。区間 $[a, b]$ 上の積分

$$ I = \int_a^b f(x)\,dx $$

を計算したいとき、$X \sim U(a, b)$(一様分布)とすると、

$$ \begin{align} E[(b – a) f(X)] &= (b – a) \int_a^b f(x) \cdot \frac{1}{b-a}\,dx \\ &= \int_a^b f(x)\,dx \\ &= I \end{align} $$

なので、一様乱数 $x_1, \dots, x_n \sim U(a, b)$ を生成し、

$$ \hat{I}_n = \frac{b – a}{n}\sum_{i=1}^{n} f(x_i) $$

と計算すれば、大数の法則により $\hat{I}_n \to I$($n \to \infty$)が保証されます。

モンテカルロ積分の利点は、被積分関数の解析的性質(滑らかさなど)に依存せず、高次元の積分にも容易に拡張できることです。機械学習におけるベイズ推定やマルコフ連鎖モンテカルロ法(MCMC)など、計算困難な期待値を近似する場面で広く用いられています。

より詳しくは モンテカルロ積分を理解する もご覧ください。

Pythonでのシミュレーション

サイコロの標本平均の収束

サイコロ(1〜6の整数を等確率で出す)を $n$ 回振ったときの標本平均が、母平均 $\mu = 3.5$ にどのように収束するかを可視化します。複数の試行(パス)を重ねて描画することで、概収束の様子を確認します。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)

n_max = 10000  # 最大試行回数
n_paths = 10   # 異なるパス数

fig, ax = plt.subplots(figsize=(10, 5))

for path in range(n_paths):
    # サイコロをn_max回振る
    dice_rolls = np.random.randint(1, 7, size=n_max)
    # 累積平均を計算
    cumulative_mean = np.cumsum(dice_rolls) / np.arange(1, n_max + 1)
    ax.plot(np.arange(1, n_max + 1), cumulative_mean, alpha=0.6, linewidth=0.8)

# 母平均の水平線
ax.axhline(y=3.5, color='red', linestyle='--', linewidth=1.5, label=r'$\mu = 3.5$')

ax.set_xlabel('Number of trials $n$', fontsize=12)
ax.set_ylabel('Sample mean $\\bar{X}_n$', fontsize=12)
ax.set_title('Law of Large Numbers: Dice Roll', fontsize=14)
ax.set_xscale('log')
ax.set_ylim(1, 6)
ax.legend(fontsize=12)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

10本のパスがそれぞれ異なる道筋をたどりながらも、試行回数が増えるにつれて母平均 3.5 に収束していく様子が確認できます。横軸を対数スケールにすることで、初期の大きな振れと後半の収束が見やすくなっています。

コイン投げの相対頻度の収束

コイン投げ(ベルヌーイ試行)の相対頻度が $p = 0.5$ に収束する様子も可視化してみましょう。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(123)

n_max = 50000
n_paths = 8
p = 0.5  # 表が出る確率

fig, ax = plt.subplots(figsize=(10, 5))

for path in range(n_paths):
    # コインをn_max回投げる(表=1, 裏=0)
    coin_flips = np.random.binomial(1, p, size=n_max)
    # 相対頻度(累積平均)
    relative_freq = np.cumsum(coin_flips) / np.arange(1, n_max + 1)
    ax.plot(np.arange(1, n_max + 1), relative_freq, alpha=0.6, linewidth=0.8)

ax.axhline(y=p, color='red', linestyle='--', linewidth=1.5, label=f'$p = {p}$')

ax.set_xlabel('Number of trials $n$', fontsize=12)
ax.set_ylabel('Relative frequency of heads', fontsize=12)
ax.set_title('Law of Large Numbers: Coin Flip', fontsize=14)
ax.set_xscale('log')
ax.set_ylim(0.2, 0.8)
ax.legend(fontsize=12)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

サイコロの場合と同様に、コイン投げでも相対頻度が $p = 0.5$ に収束していきます。初期段階では大きく振れていても、試行を重ねるにつれ安定していく様子がわかります。

チェビシェフの上界 vs 実際の逸脱確率

チェビシェフの不等式が与える理論上の上界と、シミュレーションによる実際の逸脱確率を比較します。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)

n_trials = 100000  # シミュレーション回数
sigma2 = 35 / 12   # サイコロの分散
mu = 3.5

n_values = np.array([10, 30, 50, 100, 200, 500, 1000, 2000, 5000])
epsilon = 0.5  # |X_bar - mu| >= epsilon の確率を評価

prob_empirical = []
prob_chebyshev = []

for n in n_values:
    # n個のサイコロの標本平均をn_trials回繰り返す
    samples = np.random.randint(1, 7, size=(n_trials, n))
    sample_means = samples.mean(axis=1)
    # 実際の逸脱確率
    prob_emp = np.mean(np.abs(sample_means - mu) >= epsilon)
    prob_empirical.append(prob_emp)
    # チェビシェフの上界
    prob_cheb = sigma2 / (n * epsilon**2)
    prob_chebyshev.append(min(prob_cheb, 1.0))

fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(n_values, prob_empirical, 'o-', color='blue', linewidth=2,
        markersize=6, label='Empirical probability')
ax.plot(n_values, prob_chebyshev, 's--', color='red', linewidth=2,
        markersize=6, label='Chebyshev upper bound')

ax.set_xlabel('Sample size $n$', fontsize=12)
ax.set_ylabel(r'$P(|\bar{X}_n - \mu| \geq \varepsilon)$', fontsize=12)
ax.set_title(r'Chebyshev bound vs empirical probability ($\varepsilon = 0.5$)', fontsize=14)
ax.set_xscale('log')
ax.set_yscale('log')
ax.legend(fontsize=12)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

チェビシェフの不等式による上界(赤線)は実際の確率(青線)よりも常に上にあり、不等式が確かに成り立っていることが確認できます。ただし、チェビシェフの上界はかなり緩い評価であり、実際の確率はそれよりもはるかに小さいこともわかります。これは、チェビシェフの不等式が分布の形状を一切使わない「万能な」不等式であることの代償です。

確率収束と概収束の違いの可視化

最後に、弱法則(確率収束)と強法則(概収束)の違いを直感的に理解するためのシミュレーションを示します。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)

n_max = 10000
n_paths = 100
mu = 3.5

# 各パスの標本平均を記録
all_paths = np.zeros((n_paths, n_max))
for p in range(n_paths):
    dice = np.random.randint(1, 7, size=n_max)
    all_paths[p] = np.cumsum(dice) / np.arange(1, n_max + 1)

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 左: 全パスの表示(概収束の可視化)
for p in range(n_paths):
    axes[0].plot(np.arange(1, n_max + 1), all_paths[p],
                 alpha=0.15, linewidth=0.5, color='blue')
axes[0].axhline(y=mu, color='red', linestyle='--', linewidth=1.5)
axes[0].set_xlabel('Number of trials $n$', fontsize=12)
axes[0].set_ylabel('Sample mean $\\bar{X}_n$', fontsize=12)
axes[0].set_title('Almost sure convergence (all paths)', fontsize=13)
axes[0].set_xscale('log')
axes[0].set_ylim(2, 5)
axes[0].grid(True, alpha=0.3)

# 右: 各nでの逸脱確率(確率収束の可視化)
epsilon = 0.1
n_check = np.logspace(1, np.log10(n_max), 50, dtype=int)
n_check = np.unique(n_check)
prob_deviate = []
for n in n_check:
    deviate = np.mean(np.abs(all_paths[:, n - 1] - mu) >= epsilon)
    prob_deviate.append(deviate)

axes[1].plot(n_check, prob_deviate, 'o-', color='blue', markersize=3, linewidth=1)
axes[1].set_xlabel('Number of trials $n$', fontsize=12)
axes[1].set_ylabel(r'$P(|\bar{X}_n - \mu| \geq \varepsilon)$', fontsize=12)
axes[1].set_title(f'Convergence in probability ($\\varepsilon = {epsilon}$)', fontsize=13)
axes[1].set_xscale('log')
axes[1].set_ylim(-0.05, 1.05)
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

左のグラフ(概収束の可視化)では、100本のパスすべてが母平均 3.5 に収束していく様子が見えます。これは強大数の法則の主張、すなわち「ほとんどすべてのパスが収束する」ことの視覚的な確認です。

右のグラフ(確率収束の可視化)では、各 $n$ における逸脱確率 $P(|\bar{X}_n – \mu| \geq 0.1)$ が 0 に減少していく様子が見えます。これは弱大数の法則の主張に対応しています。

まとめ

本記事では、大数の法則について、準備となる不等式の導出から弱法則・強法則の違い、具体例、モンテカルロ法への応用までを解説しました。

  • マルコフの不等式 は、非負の確率変数が閾値を超える確率を期待値で上から抑える
  • チェビシェフの不等式 は、確率変数が期待値から逸脱する確率を分散で上から抑える
  • 弱大数の法則(WLLN)は、標本平均が母平均に 確率収束 することを主張する。チェビシェフの不等式から直接証明できる
  • 強大数の法則(SLLN)は、標本平均が母平均に 概収束(確率1で収束)することを主張する。より弱い仮定(分散の有限性が不要)で、より強い結論を導く
  • 弱法則と強法則の違いは「確率 $P$ と極限 $\lim$ の順序」にあり、概収束は確率収束を含意する
  • モンテカルロ法 は大数の法則を理論的基盤とし、確率的サンプリングによって期待値や積分を近似する手法である

大数の法則と並ぶ確率論のもう一つの重要な極限定理として 中心極限定理 があります。大数の法則が「標本平均はどこに収束するか」を述べるのに対し、中心極限定理は「標本平均が母平均の周りにどのようにばらつくか(分布の形がどうなるか)」を述べます。次のステップとして、以下の記事も参考にしてください。