はじめに
コインのトスを繰り返し行った場合、表がでる確率の平均値は$1/2$に収束する。これは、二回トスをすれば必ず表は一回でるという意味ではない。一般的に、膨大な試行回数を行えた場合、ある事象の平均的な確率は一定の値に収束するはずである。これを大数の法則という。そこで、今回はコイントスに対応する試行をPythonのRandomで再現することで、表がでる平均確率は0.5に収束することを確かめる。
二項分布と大数の法則
上記のような試行における分布は、試行回数を$n$とすると平均$\mu=np$、分散$\sigma^2=np(1-p)$の二項分布に従う。ただし、確率変数を$X=0,1$とする。
ここで、平均確率を以下のように定義する。
P(n)=\frac{1}{n}\sum^{n}_{k=1} X_k
ここで、
V(X)=np(1-p)
より、
V(P(n))=\frac{1}{n^2}V(X)=\frac{p(1-p)}{n}
となる。また期待値は、
E(P(n))=\frac{np}{n}=p
となる。$n \rightarrow \infty$ のとき、
V(P(n))=\frac{1}{n^2}V(X)=\frac{p(1-p)}{n}\rightarrow 0
となる。したがって、平均確率は$p$に収束する。
プログラム
そこで、以下のようなプログラムを作成した。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
import math
import random
#試行の繰り返し回数N
N=1000
X_ary=[]
X_sum=0
i_ary=[]
X_ideal=0.5
X_ideal_ary=[]
for i in range(N):
X=random.random()
if X>0.5:
X=1
else:
X=0
i_ary.append(i)
X_sum=X_sum+X
X_ary.append(X_sum/(i+1))
X_ideal_ary.append(X_ideal)
#グラフの描画
plt.plot(i_ary,X_ary,color="red",label="実際の確率")
plt.plot(i_ary,X_ideal_ary,color="blue",label="理想の確率")
plt.legend()
plt.xlabel("試行回数")
plt.ylabel("表が出る平均確率")
plt.savefig("確率収束"+str(N)+".png")
plt.show()
結果
以下のようなグラフが出力される。
試行回数が100以下の場合は、平均確率は$1/2$を大きく上下していた。しかし、それ以降ではそのような振動は少なくなりほぼ$1/2$となった。
まとめ
今回は、コイントスを題材として大数の法則をシミュレーションした。結果、試行数を増やすほど平均確率は一定の値に収束するということが分かった。このような膨大な試行を扱う確率・統計の分野においては、計算機の力を借りることが望ましいといえる。
参考文献