確率周りの勉強続き
大数の法則
完全に一様分布を持つデータは回数を重ねるほど平均値は期待値に近づく
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)
中心極限定理
サイコロ等を投げる回数 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)