「大数の法則」シミュレーション


東京大学出版会から出版されている「統計学入門(基礎統計学Ⅰ)」で解説されている「大数の法則」について、コンピューター・シミュレーションしている結果が掲載されています。どのようなシミュレーションをしたのか自分でも試してみたので結果を記載しておきます。

■ Pythonサンプルコード

# 統計学入門(東京大学出版会)の「大数の法則」シミュレーション
# [0,1)の乱数を発生させ、0.4未満なら成功(1)、0.4以上なら失敗(0)とする。
# (ベルヌーイ試行)
# 試行回数が増えた時に0.4に確率収束するかシミュレーションする。
import numpy as np

n = 20000
x, y , r = np.array([]), np.array([]), np.array([])

for i in range(n):
    r = np.append(r, (1 if np.random.rand(1)<0.4 else 0))
    if i%100 == 0:
        x = np.append(x, i)
        y = np.append(y, r.mean())

fig, ax = plt.subplots()
ax.set_title('Law of large numbers - Simulation', fontsize = 14)
ax.set_xlabel('Number of trials')
ax.set_ylabel('Probability')
ax.set_ylim(0.35, 0.45)
ax.grid()
plt.plot(x, y)
plt.show()

■ 結果

<1回目>

<2回目>

<3回目>

<4回目>

■ まとめ

1回目~3回目は試行回数が増加するにつれて、確かに収束しているのが見て取れます。
4回目は、まだ収束には至っていないようですが、この法則は試行回数を増やすと観測された値が理論上の期待値近傍に近づく「確率が高くなる」という意味なのでそのようになっていないケースということですね。それが「確率収束」の意味するところだと理解しました。