キーワード辞典
正規分布

登録日 08/12/05   更新日 22/11/09



正規分布

ヨノナカの様々な事象において、 その母集団の或る数値的な項目が「平均が μ、分散が σ2 である 正規分布(の各公式)に従う(当て嵌まる)と見做す」事で、 様々な統計分析を行う為の、確率分布の一つ。ガウス分布とも呼ばれる。 特に、平均 μ が0、分散 σ2 が1である分布を、標準正規分布と言い、 統計処理で「確からしさ」「信頼性」「誤差」などを調べる際に、よく使われる。 標準正規分布の確率の値の表や、正規分布の値から標準正規分布の値へ変換する公式も有る。


中央極限定理

元の母集団の分布が実際はどのような分布(一様分布、二項分布、ポアソン分布、指数分布、其の他色々) に従っていたとしても、抽出するサンプルサイズnの値が充分に大きければ、その標本平均の分布 (同じ母集団から全ての組み合わせでn個の抽出をして得られる標本の各々の平均の分布。 現実的には不可能な場合が殆どなので、充分な回数(サンプル数)で無作為に抽出する。)は、 近似的に、母集団の平均 μ と等しく、標本分散 σ2 母集団の分散 σ2 である正規分布(の公式)に従うと見做す事が出来る、 更に、もし母集団分布が正規分布であった場合は、nの大きさによらず、 近似的にでもなく、正規分布に従う、という理論(中心極限定理という)に基いている。


例えば、沢山のサイコロの中から無作為に1回を取り出し振る事を何度も繰り返す試行を行う場合、 理論の上の計算では、
1から6までの各々の目が出る確率は で一様分布となり、その期待値(平均)は 1+2+3+4+5+6 = 3.5、
分散は、 (1- 7 2 )2+(2- 7 2 )2+(3- 7 2 )2+(4- 7 2 )2+(5- 7 2 )2+(6- 7 2 )2 35 12 =2.91666...であるが、
サイコロを無作為に2個取り出し振る事を何度も繰り返す場合、2個の出た目の平均となる確率は、1と6が各々 36 で最も低く、3.5が 36 で、最も高くなる、山型の分布になる。 ( 分散は 35 12×2 35 24
サイコロを振る回数nを増やすほど、分布の平均が3.5、分布の分散が 35 12n の正規分布に近づく。

サイコロは、1回に出る目が6通りしかなく、その出方も一様な為に、 予め理論から上記の様な確率計算が出来るが、 ヨノナカの様々な事象は非常に複雑なので、 実際に何度も母集団から同様な標本の抽出を繰り返し、 正規分布に従うと見做す事で、様々な統計分析を行う事になる。


正規分布の特徴は、

などである。


pythonで、サイコロの例を乱数でシミュレーションしてグラフを描いてみる。
サンプルサイズnと、繰り返す回数(サンプル数)を入力すると、 サイコロの目の平均の分布のグラフが描かれる。
敢えて、判り易くしてある。 あくまでも乱数によるシミュレーションなので、誤差は出る。

# dice.py  by Ryn    Nov. 9, 2022

import random
import math
import matplotlib.pyplot as plt

cnt = []
cntlabel = []
total = 0
variance = 0

print()
n = int(input(' サンプルサイズ(n) --> '))
m = int(input(' サンプル数 --> '))

for i in range(6 * n - (n - 1)):
    cnt.append(0)
    cntlabel.append((i + n)/ n)

for i in range(m):
    dice = 0
    for j in range(n):
        dice += random.randint(0, 5)
    cnt[dice] += 1

for i in range(len(cnt)):
    print(' %1.2f : %6d' % (cntlabel[i], cnt[i]))
    total += cntlabel[i] * cnt[i]
average = total / m
print(' 平均 : %1.5f' % ( average ))

for i in range(len(cnt)):
    variance += (( average - cntlabel[i] ) ** 2) * cnt[i] 
variance /= m
print(' 分散 : %1.5f' % variance )
print(' 標準偏差 : %1.5f' % math.sqrt(variance) )

for i in range(len(cnt)):
    cnt[i] /= m

fig = plt.figure(dpi=150)
plt.title('「サイコロを' + str(n) + '回振って出た目の平均」の分布(' + str(m) + "回繰り返す)", fontname="MS Gothic")
plt.xlabel("目の平均", fontname="MS Gothic")
plt.ylabel("確\n率", fontname="MS Gothic", rotation=360)
plt.bar(cntlabel, cnt, width=0.5/n, align='center')
plt.xlim(0.5, 6.5) 
plt.ylim(0, max(cnt) * 1.2) 
plt.show()


実行例。
 
サンプルサイズn=1、サンプル数= 1,000,000
多くのサイコロの中から無作為に1個を取り出し振る事を繰り返す時の目の平均(出た目そのもの)の分布は、 サイコロや振った人がイカサマで無ければ、一様分布に近似する。


サンプルサイズn=2、サンプル数= 1,000,000
多くのサイコロの中から無作為に2個取り出し振った目の平均の分布。
平均値 μと最頻値と中央値が(ほぼ)一致する。


サンプルサイズn=3、サンプル数= 1,000,000
多くのサイコロの中から無作為に3個取り出し振った目の平均には 3.5 という値は存在せず、 また、その平均は、割り切れないものが多く有る為、 このプログラムでは、分布の平均、分散、標準偏差で誤差が出る可能性が有るが、 とりあえず、分布の平均は、3.5に近似する。


サンプルサイズn=10、サンプル数= 1,000,000
多くのサイコロの中から無作為に10個取り出し振った目の平均の分布。 乱数によるシミュレーションなので0回が有るが、決して1回未満で有ってもその確率は0%では無い。 つまり、絶対に出ない、という訳では無い。 正規分布ではx軸が漸近線である、というのは、このこと。









[ 赤い玉の画像 ] 「キーワード辞典」の目次へ

[ 黒板消しとチョーク受けの画像 ]