【NumPy】母分散の点推定

この記事では、Python言語とNumPyを用いて、母分散を点推定する方法をソースコード付きで解説します。

母分散の点推定

点推定とは、母集団の特性値(母平均・母分散など)を標本の特性値1つから推定することです。
母分散の点推定は、母集団から取り出した標本の不偏分散を計算するだけです。
点推定を何回も繰り返し、標本の不偏分散を複数回求めてその平均を取ってやれば、点推定で求めた母分散は本来の母分散の値に近づいていきます。
今回はそれを試してみました。

アルゴリズム

プログラムの処理手順は下記の通りです。
①数値計算モジュール「NumPy」をインポートする。
②サイズ100の母集団を生成する。
③母集団からサイズ5のデータをランダムに取り出し、標本を生成する。
④不偏分散を計算する。
⑤2-4の処理を100回繰り返す。
⑥100個の不偏分散の平均値を計算する。(母分散の推定)
⑦計算結果を表示する。

ソースコード

サンプルプログラムのソースコードです。

# -*- coding: utf-8 -*-
import numpy as np

def main():
    # 母集団の生成
    data = np.random.rand(50)
    # 母分散の点推定
    var = np.ndarray([])                        # 不偏分散を格納する配列
    # 点推定(100回繰り返し)
    for i in range(100):
        x = np.random.choice(data,5)            # 母集団からサイズ5の標本を抽出
        var = np.append(var, np.var(x, ddof=1)) # 不偏分散を計算して配列に格納

    sigma = np.average(var)                     # 100個の不偏分散の平均値:母集団の推定分散値
    # 結果を表示
    print("点推定で求めた母分散:", sigma) # 0.0601988023944
    print("実際の母分散:", np.var(data, ddof=1)) # 0.0634012522763

if __name__ == '__main__':
    main()

おすすめ記事

Python入門 サンプル集
NumPy入門 サンプル集

コメント