正規分布から確率を求める方法はいくつか書きましたが、今回は確率を勉強するうえで覚えておきたい言葉があります。
それは「中心極限定理」ですね。
中心極限定理とは
確率を正規分布を使って求めるのですが、その時に知っておきたいのが「中心極限定理」です。
面倒くさそうな文字ですが、知っておくと確率の考え方を理解するのに役に立ちますので、ざっくりと覚えましょう。
簡単に言うと「母集団から取り出した標本の平均は、標本数を十分大きくしたとき正規分布に近づく(演習で身につける統計学より)」という定理です。
ではなぜ正規分布が都合がいいのかというと、以下の3点があるから(プログラミングのための確率統計)。
- ある値
を中心として
- その付近の値は出やすく
- そこから外れた値ほど出にくくなる
世の中はそんな正規分布にあふれているので、使い勝手がいいんですね。
とりあえず、中心極限定理の数式を載せておきます。
1.標本平均の期待値は母平均に等しい
2. 標本平均の分散は母分散を標本数 n で割ったものに等しい。
というわけで、標本採集の回数を増やすとどうなるか見てみましょう。
標本採取の数を増やすシミュレーションを行う
下のコードは、6,7,8,9,10という数字の中から4個をランダムに取り出し、その平均を求める操作を40000回繰り返すものです。
import numpy as np from matplotlib import pyplot as plt t = list() for i in range(40000): s = np.random.randint(6, 11, 4) t+= [sum(s)/len(s)] plt.hist(t, bins=16)
この操作を行って得られた平均をグラフ化すると、以下のようなきれいな正規分布になりますね。
中心極限定理と標準化を使って確率を求める
では、実際に中心極限定理の概念と標準化を使って、確率を求めてみたいと思います。
例えば以下のような場合。
果物店の果物一個当たりの重量が平均257g で分散が63の場合、35個取り出した時の標本平均が260g以上になる確率を求めてみます。
Pythonにはこのような計算を簡単に行うためのパッケージが用意されていて、scipyもその一つになります。
以下コードになります。
from scipy.stats import norm # scipyのstatsからnorm(正規分布)読み込む。
p = norm.cdf(x = 260, loc = 257, scale = ((63/35)**0.5))
print(1-p)
0.0126736593387341
以上より、果物が260g以上になる確率は0.0126、つまり1.26%ですね。
もう一つやってみましょう。
英語の成績が平均が67点で分散が28の場合、40人を無作為に取り出した時の平均が65点から69点の範囲にある確率を求める。
この場合、65点のまでの確率と69点までの確率を求め、69点までの確率から65点までの確率を引くと、その範囲にある確率を求めることができます。
from scipy.stats import norm p1 = norm.cdf(x = 65, loc = 67, scale = ((28/40)**0.5)) p2 = norm.cdf(x = 69, loc = 67, scale = ((28/40)**0.5)) print(p2-p1) 0.9831725905172433
以上の計算により、確率は98%になります。
では以下のような場合は別のやり方が必要になります。
例えば、
英語の試験を受けた生徒の中から無作為に選んだ37人の平均と分散は63と36。
この時、母集団の平均が60未満になる確率を求める。
この場合、母分散 には以下の関係があります。
これを使って、中心極限定理に当てはめ標準化すると以下のようになります。
といっても、scipyを使っても計算できるので、サクッと計算してしまいましょう。
と、その前に、標本データの平均は母集団の平均と違う可能性が大きいです。
そのため、母集団の分散は標本データの分散よりも大きくなるので、補正する必要があるんですね。
それが(n – 1)の意味になり、今回の問いの場合は(37-1)というわけです。
scipyでも同じ考え方で、確率を求めます。
from scipy.stats import norm
p3 = norm.cdf(x = 60, loc = 63, scale = ((36/(37-1))**0.5))
print(p3)
0.0013498980316300933
計算してみると確率は0.0013、つまり0.13%ということになります。
関連記事↓↓↓


コメント