##はじめに
統計検定2級では様々な確率分布が出てきます。今回はそのうちの離散型確率分布について簡単にまとめました。また、Pythonで実際にそれぞれの確率分布を描画して理解を深めます。(コードの解説は省略します。)
※この記事の中の記号は以下の意味に対応しています。
記号 | 意味 |
---|---|
$P(A)$ | 事象$A$の確率 |
$X$ | 確率変数 |
$E[X]$ | 確率変数 $X$ の期待値 |
$V[X]$ | 確率変数 $X$ の分散 |
n | 試行回数 |
##二項分布
成功確率が$p$であり、$n$回のベルヌーイ試行を行ったとき、成功の回数が$x$回である確率、すなわち成功の回数$X=x$が従う分布のことを二項分布と言います。その確率関数は、
P(X=x)≡f(x)={}_n C_{x}p^x(1-p)^{n-x}\\
となります。
また、二項分布の期待値と分散は定義に基づいて計算すると
E[X]=np\\
V[X]=E[X^2]-μ^2=np(1-p)\\
となります。
特に、$n=1$のときの分布をベルヌーイ分布といいます。
Pythonのscipyというライブラリを使って二項分布($n=40, p=0.25,0.5,0.75$)を描画します。
from scipy.stats import binom
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 40, 1)
y1= [binom.pmf(i, 40, 0.25) for i in x]
y2= [binom.pmf(i, 40, 0.5) for i in x]
y3= [binom.pmf(i, 40, 0.75) for i in x]
plt.bar(x, y1, width=0.5, color="r" ,alpha=0.5, label="Binom p= {}".format(0.25))
plt.bar(x, y2, width=0.5, color="g" ,alpha=0.5, label="Binom p= {}".format(0.5))
plt.bar(x, y3, width=0.5, color="b",alpha=0.5, label="Binom p= {}".format(0.75))
plt.legend(loc=8)
plt.show()
ポアソン分布
二項分布において期待値$np=λ$を固定し、試行回数と成功確率について$n→∞, p→0$の極限をとったときに得られる確率分布のことをポアソン分布と言います。その確率関数は、
P(X=x)≡f(x)=\frac{e^{-λ}λ^x}{x!}\\
となります。
この分布の期待値と分散は
E[X]=λ\\
V[X] = λ\\
となります。これは二項分布の期待値と分散が$np$と$np(1-p)$なので、これらの極限を考えるとすぐに分かります。
$λ=10, 20, 30$のポアソン分布を描画してみます。
from scipy.stats import poisson
fig, ax = plt.subplots(1, 1)
x = np.arange(1, 50, 1)
y1= [poisson.pmf(i, 10) for i in x]
y2= [poisson.pmf(i, 20) for i in x]
y3= [poisson.pmf(i, 30) for i in x]
plt.bar(x, y1, width=0.5, color="r", alpha=0.5, label="Poisson λ= {}".format(10))
plt.bar(x, y2, width=0.5, color="g", alpha=0.5, label="Poisson λ= {}".format(20))
plt.bar(x, y3, width=0.5, color="b", alpha=0.5, label="Poisson λ= {}".format(30))
plt.legend()
plt.show()
ポアソン分布は二項分布のパラメータである$n$と$p$の極限を考えたときに得られる分布です。実際にどれくらい$n$が大きいと2つの分布が重なるかを見てみましょう。
$λ=10$で固定し、$n$と$p$を変えて分布の変化を見てみます。
from scipy.stats import poisson
fig, axes = plt.subplots(1, 3, figsize=(15,5))
x = np.arange(1, 30, 1)
y1= [poisson.pmf(i, 10) for i in x]
y2 = [binom.pmf(i, 10**1, 10**0) for i in x]
y3 = [binom.pmf(i, 10**2, 10**-1) for i in x]
y4 = [binom.pmf(i, 10**3, 10**-2) for i in x]
axes[0].bar(x, y1, width=0.5, color="r", alpha=0.3, label="Poisson λ= {}".format(10))
axes[0].bar(x, y2, width=0.5, color="b", alpha=0.3, label="Binom n= {}".format(10))
axes[0].set_title('n=10')
axes[0].legend()
axes[1].bar(x, y1, width=0.5, color="r", alpha=0.3, label="Poisson λ= {}".format(10))
axes[1].bar(x, y3, width=0.5, color="b", alpha=0.3, label="Binom n= {}".format(100))
axes[1].set_title('n=100')
axes[1].legend()
axes[2].bar(x, y1, width=0.5, color="r", alpha=0.3, label="Poisson λ= {}".format(10))
axes[2].bar(x, y4, width=0.5, color="b", alpha=0.3, label="Binom n= {}".format(1000))
axes[2].set_title('n=1000')
axes[2].legend()
グラフを見比べると、n=10ではうまく近似できているとは言えませんが、n=100, 1000となってくるとほとんど同じ分布になっていることが分かります。つまり試行回数が3桁以上のベルヌーイ試行はポアソン分布に従うと言って良さそうです。
##幾何分布
成功確率が$p$であるベルヌーイ試行を初めて成功するまで繰り返したときの試行回数Xの確率分布を幾何分布と言います。この分布の確率関数は、
P(X=x)≡f(x)=p(1-p)^{x-1}\\
となります。
期待値、分散は、
E[X]=\frac{1}{p}\\
V[X]=\frac{1-p}{p^2}\\
となります。
Pythonで$p=0.1$の幾何分布を描画すると以下のようになります。
from scipy.stats import geom
fig, axes = plt.subplots(1, 1)
x = np.arange(1, 30, 1)
y = [geom.pmf(i, 0.1) for i in x]
plt.bar(x, y, width=0.5, color="g", alpha=0.5, label="Geom p= {}".format(0.1))
plt.legend()
plt.show()
##最後に
次は連続型の確率分布についてもまとめようと思います。
2週間後に統計検定に申し込んだので勉強頑張ります!
##参考
改訂版 日本統計学会公式認定 統計検定2級対応 「統計学基礎」
ポアソン分布を丁寧に理解してPythonで描画する