以下の統計検定2級対策動画で用いられているスライドの一部です。
1. 具体例から考えてみよう
あるWebサービスの 全有料会員 の月間平均利用時間(母平均 $\mu$)を推定したいとします。
- 全員のデータを集計するのは大変…
- そこで、 150人 を無作為に抽出し、利用時間を調査しました。
その結果、標本平均は $\bar{x} = 15.4$ 時間でした。
この 「手元のデータ(標本)」 から 「全体の傾向(母集団)」 を推測することが 「推定」 です。
2. もっとも単純な推定方法:「点推定」
先ほどの結果から、シンプルにこう考えてみます。
「抽出した150人の平均が15.4時間だった。
よって、 全会員の平均時間もたぶん15.4時間だろう 」
このように、一つの値で母集団のパラメータ(母平均 $\mu$ など)を推定する方法を 「点推定」 と呼びます。
3. 「点推定」だけでは不十分な理由
点推定には、大きな限界があります。
-
もし、もう一度150人を抽出し直したら、平均は 15.1時間 や 15.8時間 など、少し違う値になる可能性が非常に高いです。
-
つまり、点推定で得た値(15.4時間)が、真の母平均 $\mu$ と 完全に一致する保証はどこにもありません。
-
「どのくらい確からしいのか?」「どれくらいズレそうか?」という 不確実性の情報 が全く含まれていないのです。
4. そこで「区間推定」の登場
点推定の限界を克服するため、 「幅」 を持たせて推定する方法が 「区間推定」 です。
先ほどのWebサービスの例で区間推定を行うと、例えば以下のような結果が得られます。
(※多くの場合、このような計算は 母集団が正規分布に従うか、標本サイズが大きいことを前提とします)
「母平均 $\mu$ の95%信頼区間は [14.2, 16.6] 時間である」
これは「母平均 $\mu$ は、 14.2時間から16.6時間の間 のどこかにあるだろう」と、推定に幅を持たせた表現です。この推定された区間を 「信頼区間」 と呼びます。
5. 最重要ポイント:信頼区間の解釈
ここからが、このテーマで最も重要かつ、多くの人が誤解しやすいポイントです。
「母平均 $\mu$ の95%信頼区間が [14.2, 16.6]」
この記述の 「95%」 という数字は、一体何を意味するのでしょうか?
6. よくある「誤った解釈」
以下の解釈は 明確な誤り です。
未知の母平均 $\mu$ が、14.2 から 16.6 の間に 存在する確率が95%である。
なぜこれが間違いなのでしょうか?
7. なぜ誤りなのか?
理由は2つあります。
-
母平均 $\mu$ は確率的に変動する変数ではない
- 真の母平均は、私たちが知らないだけで、どこかに 固定された一つの定数 です。
-
確率的に変動するのは「信頼区間」の方
- 信頼区間は、抽出する標本データによって計算結果が変わります。
- つまり、 サンプルを取り直せば、信頼区間もズレる のです。
8. 信頼区間の「正しい解釈」
では、正しい解釈は何でしょうか?
それは、 「推定手法そのものの信頼性」 を表しています。
もし、150人の会員を抽出して信頼区間を計算する、という作業を何度も(例えば100回)繰り返せば、その結果得られる 100個の信頼区間のうち、約95個が真の母平均 $\mu$ をその内部に含む だろう。
95%とは、 「この手順で作った区間は、真の値をちゃんと捉えている可能性が高いですよ」 という意味なのです。
9. 信頼区間のイメージ
- 正規分布に従う母集団から、何度も標本抽出と区間推定を繰り返した結果を可視化したものです。
- 横線が 真の母平均 $\mu$ (固定値) を示します。
- 多くの区間(青色)は真の母平均を含んでいますが、 一部の区間(赤色)は外れてしまっています。
- 95%信頼区間 とは、この手順を繰り返したときに 青色になる割合が約95% である、という意味です。
Pythonコード for Visualization
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
# --- Parameters ---
mu_true = 15.0 # True population mean
sigma_true = 5.0 # True population standard deviation
n_samples = 150 # Sample size
n_simulations = 100 # Number of simulations
confidence_level = 0.95
# --- Simulation ---
intervals = []
hit_count = 0
for i in range(n_simulations):
# Generate a sample
sample = np.random.normal(mu_true, sigma_true, n_samples)
# Calculate sample statistics
x_bar = np.mean(sample)
s = np.std(sample, ddof=1)
# Calculate confidence interval
se = s / np.sqrt(n_samples)
ci = stats.t.interval(confidence_level, df=n_samples-1, loc=x_bar, scale=se)
intervals.append((x_bar, ci))
if ci[0] <= mu_true <= ci[1]:
hit_count += 1
# --- Visualization ---
plt.figure(figsize=(12, 8))
for i, (x_bar, ci) in enumerate(intervals):
color = 'blue' if ci[0] <= mu_true <= ci[1] else 'red'
plt.errorbar(i, x_bar, yerr=[[x_bar - ci[0]], [ci[1] - x_bar]], fmt='o', color=color, capsize=3, alpha=0.7)
plt.axhline(y=mu_true, color='black', linestyle='--', label=f'True Mean (mu = {mu_true})')
plt.title(f'Simulation of {n_simulations} Confidence Intervals ({confidence_level:.0%})')
plt.xlabel('Sample Number')
plt.ylabel('Confidence Interval')
plt.legend()
plt.grid(axis='y', linestyle=':', alpha=0.6)
plt.show()
10. 一般化と定義
ここまでの具体例を踏まえて、用語を整理します。
-
推定
- 手元にある標本データから、母集団の特性(母平均 $\mu$ など)を推測すること。
-
点推定
- 母集団のパラメータを 一つの値 で推定する方法。
-
区間推定
- 母数が含まれると期待される 区間(範囲) を推定する方法。
- この推定された区間を 信頼区間 と呼びます。
11. 区間推定の関連用語
| 用語 | 説明 | 例 (Webサービス) |
|---|---|---|
| 信頼区間 | 母数を含むと期待される区間そのもの | [14.2, 16.6] |
| 信頼下限 | 信頼区間の下端の値 | 14.2 |
| 信頼上限 | 信頼区間の上端の値 | 16.6 |
| 信頼係数 (信頼水準) |
この手順で計算した区間が 母数を含む確率 ( $1-\alpha$ ) |
95% |
まとめ
-
点推定 は母数を一つの値で推定しますが、その 不確実性 が分かりません。
-
区間推定 は母数を含むと期待される 「幅(信頼区間)」 で推定することで、不確実性を表現します。
-
信頼区間の正しい解釈 が最も重要です。
- 「計算された特定の区間に母数が95%の確率で入る」 (誤)
- 「同じ手順で何度も計算すれば、そのうち95%の区間が母数を含む」 (正)
