コンピュータサイエンス系勉強ノート

計算機科学に限らず日々学んだことを色々まとめていきます

中心極限定理を確かめてみる(Python)

大数の法則はある分布からN個のサンプルを拾ってきたときNが無限大になればサンプル平均が期待値に収束するというものでした.それの上位版のような法則に中心極限定理があります.中心極限定理とは簡単に言えば,ある分布からサンプルをN個拾ってくることを繰り返すと,サンプル平均と期待値との差もしくは分散の分布が正規分布に従うという定理です.具体的には,

 W_N = \frac{(X_1 + X_2 + ... + X_N) - Nμ}{\sqrt{N}σ}

のようにサンプルの総和を正規化した確率変数 W_Nに置き換えてあげるとこの確率変数が正規分布に従うそうです.

中心極限定理を確かめる

実際にプログラムを書いて中心極限定理が成立することを確かめてみます.

#encoding:utf-8
import numpy as np
import matplotlib.pyplot as plt
import math

#カイ二乗分布で確かめる
def CentralLimitTheorem_ki():
    N = 10000
    Z = []
    for i in range(N):
        x = np.random.chisquare(2, 500)
        Z.append(np.sum(x) / math.sqrt(N) / np.std(x))
    nbins = 50
    plt.hist(Z, nbins, normed=True)
    plt.show()

#ポワソン分布で確かめる
def CentralLimitTheorem_poisson():
    N = 10000
    Z = []
    for i in range(N):
        x = np.random.poisson(2, 500)
        Z.append(np.sum(x) / math.sqrt(N) / np.std(x))
    nbins = 50
    plt.hist(Z, nbins, normed=True)
    plt.show()

def main():
    CentralLimitTheorem_ki()
    CentralLimitTheorem_poisson()

main()

f:id:clientver2:20151110170248p:plain

f:id:clientver2:20151110170250p:plain

確かにどちらのカイ二乗とポワソンのどちらの分布でも正規分布っぽくなってることが分かります.