技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

確率周りの勉強続き

大数の法則

完全に一様分布を持つデータは回数を重ねるほど平均値は期待値に近づく

import numpy as np
import matplotlib.pyplot as plt

times = 1000
sample_array = np.array([1, 2, 3, 4, 5, 6])
number_cnt = np.arange(1, times + 1)  # 1, 2, 3, ... 1000

for i in range(5):
    # ランダムで 1000 回サイコロを振った累積値 3, 1, 5... とサイコロの目が出るなら 3, 4, 9... というリストになる
    p = np.random.choice(sample_array, times).cumsum()
    # 試行回数で各値を割って表示する
    plt.plot(p / number_cnt)
    plt.grid(True)

f:id:white-azalea:20210915224558p:plain

中心極限定理

サイコロ等を投げる回数 N が増えれば増えるほどに標本平均が正規分布となっていく法則

def func_central(N):
    mean_array = np.array([])
    for i in range(1000):
        # ランダムで N 回サイコロを振った累積値リスト
        cum_var = np.random.choice(sample_array, N).cumsum() * 1.0
        # 累積値の最終値 / サイコロを振った回数 を平均に突っ込む
        mean_array = np.append(mean_array, cum_var[N-1] / N)
    # 平均値の出現回数をヒストグラムで表示
    plt.hist(mean_array)
    plt.grid(True)

func_central(4)

f:id:white-azalea:20210915224712p:plain f:id:white-azalea:20210915224732p:plain f:id:white-azalea:20210915224757p:plain f:id:white-azalea:20210915224816p:plain