Python学習編65回目です。
ここんとこは不偏標準偏差のn-1で割ることへの疑問を調べてます。以下のコードでnで割るのとn-1で割るのでどっちが真に近いか検証してるところ。
import numpy as np
bo_syuudan = np.random.rand(200,5) #標本集団5個ずつ、母集団合計で要素1000の配列を作成
bo_hoyujunhensa = np.std(bo_syuudan) #母集団の標準偏差を計算
hyouhon_hoyujunhensa = np.zeros(200) #標本集団の標準偏差を記録するための配列を作成
huhen_hoyujunhensa = np.zeros(200) #標本集団の不偏標準偏差を記録するための配列を作成
for i in range(len(bo_syuudan)):
hyouhon_hoyujunhensa[i] = (np.std(bo_syuudan[i])) #標本集団の標準偏差を配列に格納
average_hyouhon_hoyujunhensa = hyouhon_hoyujunhensa.mean() #標本集団の標準偏差を格納した配列の平均を求める
for i in range(len(bo_syuudan)): #上と同じ操作を不偏昇順偏差で行う
huhen_hoyujunhensa[i] = (np.std(bo_syuudan[i], ddof = 1))
average_huhen_hyoujunhensa =huhen_hoyujunhensa.mean()
print(bo_hoyujunhensa)
print(average_hyouhon_hoyujunhensa)
print(average_huhen_hyoujunhensa)
この結果、
母標準偏差(サンプル数1000の標準偏差)は約0.29
標本標準偏差(サンプル数5の標準偏差)は約0.25
標本不偏標準偏差(サンプル数5の不偏標準偏差)は約0.28
と出ました。うーん、実際にn-1で割った方が性能が良いとなるとn-1で割る方が良いと認めざるを得ない。
とはいえ、不偏標準偏差でも母標準偏差より小さい。0~1の乱数の標準偏差は1/√12≒0.2887なので、サンプル数を5としたことで真の値より小さく出ていそうだ。これより正確にしたい場合はn-1で割る代わりにどういう操作になるんだ。
次回に続く