今回は、統計学における重要なプロセスである区間推定について説明します。
そのなかでも平均値の区間推定をPythonを使用し、求める方法を紹介します。
推定
統計学における推定とは、標本データから母集団のデータを推測するプロセスのことです。
推定には2種類あります。
- 点推定
- 区間推定
以降で詳しく説明していきます。
点推定
点推定は母集団のパラメータをある値で推定する方法です。
例えば、標本平均を用いて母集団の平均を推定することなどがあります。
点推定は直感的に理解しやすいですが、一方で推定値が正確だと言い切れないことが欠点です。
標本の平均が母集団の平均と一致することは、確率が低いですよね。
この点推定の不確実性という欠点をカバーするのが区間推定です。
区間推定
区間推定とは、母集団のパタメータがある範囲内にあることを推定する方法です。
この範囲を信頼区間と呼びます。
95%の信頼区間などと言ったりしますが、この95%というのは100回区間推定を施行した内、
95回は推定した区間に母集団のパラータが含まれることを意味しています。
平均値の区間推定
平均値の区間推定は、標本データの標本平均から母集団の母平均の区間を推定する方法です。
例えば、製品の寿命を区間推定する方法です。
無作為に選んだいくつかの製品から平均寿命を求め、
このデータを使用して、製品の平均寿命を区間推定します。
Pythonで平均値の区間推定する方法
それでは、Pythonで平均値の区間推定を実装していきます。
今回は正規分布を使って平均値の区間推定をする方法を紹介します。
Pythonで区間推定をするにはSciPyライブラリのstatsモジュールの以下を使用します。
norm
が正規分布を指し、interval
が区間推定を指しています。
stats.norm.interval(alpha, loc, scale)
alpha
:信頼区間(0.95=95%など) loc
: 標本平均 scale
: 標準誤差
区間の下限値と上限値をタプルで返します。
tips
のデータセットを使用したサンプルコードは以下の通りです。
import numpy as np
import pandas as pd
import seaborn as sns
from scipy import stats
alpha = 0.95 # 信頼区間
n = 50 # 標本サイズ
# データセットをロード
df = sns.load_dataset('tips')
# 標本の抽出
sample_df = df.sample(n)
# 標本平均
sample_mean = sample_df['total_bill'].mean()
# 不偏分散
sample_var = stats.tvar(sample_df['total_bill'])
# 標準誤差
std_error = np.sqrt(sample_var / n)
lower, upper = stats.norm.interval(alpha, loc=sample_mean, scale=std_error)
print(f"total_billの95%信頼区間: ({lower}, {upper})")
# 母平均
population_mean = df['total_bill'].mean()
print(f"total_billの母平均: {population_mean}")
実行結果
total_billの95%信頼区間: (18.14, 23.18)
total_billの母平均: 19.79
これでtotal_bill
の平均値を95%の信頼区間で求めることができました。
母集団の平均が求めた区間に収まっていることがわかります。
理論上これを100回繰り返すと、95回は求めた区間に母集団の平均値が収まります。
まとめ
区間推定の説明、およびPythonを使用し平均値の区間推定をする方法を紹介しました。
区間推定は統計学でよく使用する手法です。
ぜひ区間推定のやり方をマスターしてみてください!
ここまで読んでくださりありがとうございます。
参考
おすすめ教材
米国データサイエンティストが教える統計学超入門講座【Pythonで実践】 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜他のUdemyの講座が気になる方はこちら