この記事では、Python言語とScipyを用いて、母平均を区間推定(t分布)で求める方法をソースコード付きで解説します。
母平均の区間推定(t分布)
区間推定とは、母集団の特性値(母平均・母分散など)が存在する範囲(区間)を推定することです。
数値計算モジュールScipyの「scipy.stats.t.ppf」を使えば母分散が既知な場合の母平均の信頼区間を計算できます。
今回はそれを試してみました。
処理手順
プログラムの処理手順は下記の通りです。
①数値計算モジュール「NumPy」をインポートする。
②正規分布に従う母集団の平均を10, 標準偏差を1に設定する。
③信頼区間の信頼係数を95[%]に設定する。
④正規分布(10, 1)に従う正規分布からサイズ10の標本を抽出する。(np.random.normal)
⑤標本のサイズnを取得する。
⑥t分布を用いて確率変数tを計算する。(区間推定:stats.t.ppf)
⑦確率変数t、既知の母分散sigma^2、標本のサイズnから95%信頼区間を計算する。
⑧結果を表示する。
ソースコード
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- import numpy as np from scipy import stats def main(): (mu, std) = (10, 1) # 正規分布に従う母集団の平均10, 母分散1 sigma = np.sqrt(std) # 母集団の標準偏差 alpha = 0.95 # 信頼係数95[%] ok = 0 x = np.random.normal(mu, sigma, 50) # 正規分布(mu, sigma)に従う正規分布からサイズ50の標本抽出 n = len(x) # 標本サイズnの取得 t = stats.t.ppf(1-(1-alpha)/2, n-1) # t分布を用いて確率変数tを計算 xa, sigma = np.average(x), np.std(x) # 標本の平均と分散を計算 t_min = xa - t * sigma / np.sqrt(n-1) t_max = xa + t * sigma / np.sqrt(n-1) print("信頼区間の下限:", t_min) # 9.53954697142 print("信頼区間の上限:", t_max) # 10.1222771569 if __name__ == '__main__': main()
95%の確率で、母平均が9.53334278382~10.1336948921の間に収まることを意味します。
母平均の真値は10なので確かに収まりました。
コメント