ある工場で生産されるボルトの直径を調べたいとします。全数検査は現実的でないため、ランダムに100本選んでその直径を測定し、母集団全体の平均直径を推定します。
このとき、100本の標本平均 $\bar{x}$ を母平均 $\mu$ の推定値として使うのは自然な発想です。しかし、ここで疑問が生まれます。
- 標本平均は母平均の「良い」推定値なのか?
- 「良い」推定値とはそもそも何を意味するのか?
- 他の推定値(例えば中央値や最頻値)ではダメなのか?
これらの問いに体系的に答えるのが点推定の理論です。点推定では、母集団パラメータ $\theta$ の値を1つの数値(推定値)で「当てる」ことを目指します。
点推定の理論を理解すると、以下のような場面で適切な判断ができるようになります。
- 実験計画: サンプルサイズをどのくらいにすればよいか
- 推定量の選択: 複数の推定量のうちどれが最良かを比較する基準
- 区間推定への橋渡し: 信頼区間の理論的基礎
- 機械学習: モデルパラメータの推定における偏り-分散トレードオフの理解
本記事の内容
- 推定量と推定値の区別
- 不偏性 — 平均的に正しい推定量
- 一致性 — データを増やせば正解に近づく
- 有効性 — ばらつきが最も小さい推定量
- 平均二乗誤差(MSE)による総合評価
- Pythonでの確認と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
推定量と推定値
用語の整理
まず混同されやすい2つの用語を明確にしましょう。
推定量(estimator): パラメータを推定するためのルール(関数)。標本 $X_1, \ldots, X_n$ の関数として定義され、確率変数です。
推定値(estimate): 実際のデータ $x_1, \ldots, x_n$ を推定量に代入して得られる具体的な数値です。
たとえば、母平均 $\mu$ の推定量として「標本平均」を選んだとき、
$$ \hat{\mu} = \bar{X} = \frac{1}{n}\sum_{i=1}^n X_i \quad \text{(推定量 — 確率変数)} $$
実際のデータ $x_1 = 5.2, x_2 = 4.8, x_3 = 5.1$ を代入すると
$$ \hat{\mu} = \frac{5.2 + 4.8 + 5.1}{3} = 5.033 \quad \text{(推定値 — 数値)} $$
推定量は確率変数なので「分布」を持ちます。この分布を標本分布(sampling distribution)と呼びます。推定量の良さは、この標本分布の性質で評価されます。
推定量はいくらでも作れます。母平均 $\mu$ に対して、標本平均 $\bar{X}$、中央値 $\text{Med}(X)$、最大値と最小値の平均 $(X_{(1)} + X_{(n)})/2$ など、どれも推定量です。では、何をもって「良い」推定量と言えるのでしょうか。3つの重要な性質を順に見ていきましょう。
不偏性 — 平均的に正しい推定量
直感的な理解
射撃の的を想像してください。射撃手が何度も撃ったとき、弾痕の中心が的の中心に一致しているなら、その射撃手は「偏りがない」と言えます。個々の弾は的の中心からずれていても、平均的には中心を狙えている状態です。
推定量の不偏性も同じです。何度も標本を取り直したときの推定値の平均が、真の値に一致するなら、その推定量は不偏です。
数学的定義
推定量 $\hat{\theta}$ が不偏であるとは、すべての $\theta$ に対して
$$ \begin{equation} E[\hat{\theta}] = \theta \end{equation} $$
が成り立つことです。推定量の期待値が真のパラメータに一致するという意味です。
不偏でない推定量のバイアス(偏り)は
$$ \text{Bias}(\hat{\theta}) = E[\hat{\theta}] – \theta $$
で定義されます。$\text{Bias} > 0$ なら過大推定、$\text{Bias} < 0$ なら過小推定の傾向があります。
標本平均の不偏性
$X_1, \ldots, X_n$ が母平均 $\mu$、母分散 $\sigma^2$ の独立同一分布(iid)からの標本のとき、標本平均 $\bar{X} = \frac{1}{n}\sum_{i=1}^n X_i$ の期待値を計算します。
期待値の線形性を使うと、
$$ E[\bar{X}] = E\left[\frac{1}{n}\sum_{i=1}^n X_i\right] = \frac{1}{n}\sum_{i=1}^n E[X_i] = \frac{1}{n} \cdot n\mu = \mu $$
したがって、$\bar{X}$ は $\mu$ の不偏推定量です。
標本分散の不偏性
母分散 $\sigma^2$ の推定量として、2つの候補があります。
$$ S_n^2 = \frac{1}{n}\sum_{i=1}^n (X_i – \bar{X})^2, \quad S^2 = \frac{1}{n-1}\sum_{i=1}^n (X_i – \bar{X})^2 $$
$S_n^2$ の期待値を計算してみましょう。まず $(X_i – \bar{X})^2$ を展開します。
$$ \sum_{i=1}^n (X_i – \bar{X})^2 = \sum_{i=1}^n X_i^2 – n\bar{X}^2 $$
各項の期待値は $E[X_i^2] = \sigma^2 + \mu^2$ と $E[\bar{X}^2] = \sigma^2/n + \mu^2$ から、
$$ E\left[\sum_{i=1}^n (X_i – \bar{X})^2\right] = n(\sigma^2 + \mu^2) – n(\sigma^2/n + \mu^2) = (n-1)\sigma^2 $$
したがって $E[S_n^2] = (n-1)\sigma^2/n \neq \sigma^2$ であり、$S_n^2$ はバイアスがあります。一方、$n-1$ で割った $S^2$ は $E[S^2] = \sigma^2$ となり不偏です。
$n-1$ で割る理由の直感的な説明は、$\bar{X}$ を使って偏差を計算することで1つの自由度を消費するため、実質的な情報量が $n-1$ になるということです。
不偏性の限界
不偏性は直感的には良い性質ですが、不偏性だけでは良い推定量の保証にはなりません。
例えば、母平均 $\mu$ の不偏推定量として $\hat{\mu} = X_1$(最初の1個だけ使う)も不偏です。しかし、これはデータの大部分を捨てており、ばらつきが大きすぎます。
また、不偏推定量が存在しないパラメータもあります($P(X = 1) = \theta^2$ のとき $\theta$ の不偏推定量は存在しない、等)。
不偏性は必要条件ではありませんが、推定量を比較する際の重要な基準の一つです。次に、データ数を増やしたときの推定量の振る舞いを表す「一致性」を見ていきましょう。
一致性 — データを増やせば正解に近づく
直感的な理解
サイコロの出目の平均(3.5)を推定する場面を考えましょう。10回振った平均と10,000回振った平均では、後者の方が真の平均3.5に近いはずです。データを増やせば推定値が真の値に収束する性質、それが一致性です。
不偏性が「平均的に正しい」という性質であるのに対し、一致性は「データが多ければ確実に正しくなる」という、より動的な性質です。
数学的定義
推定量 $\hat{\theta}_n$(サンプルサイズ $n$ の関数)が一致推定量(consistent estimator)であるとは、任意の $\varepsilon > 0$ に対して
$$ \begin{equation} \lim_{n \to \infty} P(|\hat{\theta}_n – \theta| > \varepsilon) = 0 \end{equation} $$
が成り立つことです。これは $\hat{\theta}_n \xrightarrow{P} \theta$(確率収束)と書きます。
より強い性質として、概収束 $\hat{\theta}_n \xrightarrow{\text{a.s.}} \theta$ もあります。
一致性の十分条件
一致性を示す便利な方法として、次の2条件を確認するやり方があります。
$$ \lim_{n \to \infty} E[\hat{\theta}_n] = \theta \quad \text{かつ} \quad \lim_{n \to \infty} V[\hat{\theta}_n] = 0 $$
つまり、バイアスがゼロに近づき、分散もゼロに近づけば、一致推定量です。
標本平均の例: $E[\bar{X}] = \mu$(バイアスゼロ)、$V[\bar{X}] = \sigma^2/n \to 0$ なので一致推定量。これは大数の法則の帰結です。
標本分散 $S_n^2$ の例: $E[S_n^2] = (n-1)\sigma^2/n \to \sigma^2$(バイアスがゼロに近づく)、$V[S_n^2] \to 0$ なので一致推定量。$n$ で割っても $n-1$ で割っても一致性は保たれます。
一致性と不偏性の関係
一致性と不偏性は独立な概念です。
| 推定量 | 不偏 | 一致 |
|---|---|---|
| 標本平均 $\bar{X}$ | はい | はい |
| $S_n^2 = \frac{1}{n}\sum(X_i-\bar{X})^2$ | いいえ | はい |
| $\hat{\mu} = X_1$ | はい | いいえ |
$X_1$ は不偏ですが一致ではない($V[X_1] = \sigma^2$ で一定)。$S_n^2$ は不偏ではないが一致。両方の性質を兼ね備えた推定量が望ましいですが、一致性の方がより本質的な性質と見なされることが多いです。
不偏推定量が複数あるとき、どれを選べばよいでしょうか。その基準となる「有効性」を次に見ていきましょう。
有効性 — ばらつきが最も小さい推定量
直感的な理解
的を射る2人の射撃手を考えます。どちらも弾痕の中心は的の中心に一致(不偏)していますが、一人の弾痕は的の中心付近に集中しており、もう一人の弾痕は広く散らばっています。前者の方が「効率的」であり、1発あたりの情報量が多いと言えます。
推定量の有効性も同じです。同じ不偏推定量の中で、分散が最も小さいものが最も有効です。
数学的定義
不偏推定量 $\hat{\theta}_1$ が $\hat{\theta}_2$ より有効であるとは
$$ V[\hat{\theta}_1] \leq V[\hat{\theta}_2] \quad \text{for all } \theta $$
が成り立つことです。
すべての不偏推定量の中で分散が最小のものを最小分散不偏推定量(UMVUE: Uniformly Minimum Variance Unbiased Estimator)と呼びます。
$$ \begin{equation} \hat{\theta}_{\text{UMVUE}} = \arg\min_{\hat{\theta}: \text{unbiased}} V[\hat{\theta}] \end{equation} $$
相対効率
2つの推定量の有効性を比較する指標として相対効率(relative efficiency)があります。
$$ e(\hat{\theta}_1, \hat{\theta}_2) = \frac{V[\hat{\theta}_2]}{V[\hat{\theta}_1]} $$
$e > 1$ なら $\hat{\theta}_1$ の方が有効です。
例: 正規分布 $N(\mu, \sigma^2)$ から母平均 $\mu$ を推定するとき、 – 標本平均の分散: $V[\bar{X}] = \sigma^2/n$ – 標本中央値の分散(漸近的に): $V[\text{Med}] \approx \pi\sigma^2/(2n)$
$$ e(\bar{X}, \text{Med}) = \frac{\pi\sigma^2/(2n)}{\sigma^2/n} = \frac{\pi}{2} \approx 1.57 $$
正規分布のもとでは、標本平均は標本中央値の約1.57倍有効です。言い換えると、標本中央値で同じ精度を得るには約57%多いデータが必要です。
ただし、これはあくまで正規分布の場合の話です。裾の重い分布(t分布やコーシー分布)では、標本中央値の方が有効になることがあります。
不偏推定量の分散にはどこまで小さくできるかの理論的限界があります。これがクラメール・ラオの下限であり、別の記事で詳しく解説します。ここでは、不偏性と有効性を統合した評価基準である平均二乗誤差を見ていきましょう。
平均二乗誤差(MSE)
偏りと分散の統合
不偏性と有効性は「不偏推定量の中で」という制約付きの評価基準でした。しかし、バイアスのある推定量が不偏推定量より良い場合もあります(ジェームズ・スタイン推定量がその例です)。
推定量の総合的な良さを測る基準として、平均二乗誤差(MSE: Mean Squared Error)があります。
$$ \begin{equation} \text{MSE}(\hat{\theta}) = E[(\hat{\theta} – \theta)^2] \end{equation} $$
MSEは「推定値が真の値からどれだけ離れているか」を二乗誤差の期待値で測ります。
バイアス-バリアンス分解
MSEは次のように分解できます。
$$ \text{MSE}(\hat{\theta}) = E[(\hat{\theta} – \theta)^2] $$
$E[\hat{\theta}] = \theta + \text{Bias}$ と書いて、$\hat{\theta} – \theta = (\hat{\theta} – E[\hat{\theta}]) + \text{Bias}$ を展開すると、
$$ \text{MSE}(\hat{\theta}) = E[(\hat{\theta} – E[\hat{\theta}])^2] + 2\text{Bias} \cdot E[\hat{\theta} – E[\hat{\theta}]] + \text{Bias}^2 $$
中間項は $E[\hat{\theta} – E[\hat{\theta}]] = 0$ なので消えます。
$$ \begin{equation} \text{MSE}(\hat{\theta}) = V[\hat{\theta}] + \text{Bias}(\hat{\theta})^2 \end{equation} $$
これがバイアス-バリアンス分解です。MSEは「分散」と「バイアスの二乗」の和として表されます。
不偏推定量では $\text{Bias} = 0$ なのでMSE = 分散となりますが、多少のバイアスを許容することで分散を大幅に下げられる場合、トータルのMSEは改善される可能性があります。
この考え方は機械学習の正則化(リッジ回帰、ラッソ)や、ベイズ推定における縮小推定の理論的基礎でもあります。
それでは、Pythonで各性質を視覚的に確認しましょう。
Pythonでの実装と確認
不偏性の確認
まず、標本平均と標本分散($n$ 割りと $n-1$ 割り)の不偏性をシミュレーションで確認します。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(42)
# 母集団パラメータ
mu_true = 5.0
sigma_true = 2.0
n_simulations = 5000
sample_sizes = [5, 10, 20, 50, 100, 200]
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# (a) 標本平均の分布(n=10)
ax = axes[0]
n = 10
sample_means = [np.mean(np.random.normal(mu_true, sigma_true, n))
for _ in range(n_simulations)]
ax.hist(sample_means, bins=50, density=True, color='lightblue',
edgecolor='gray', linewidth=0.5, alpha=0.7)
ax.axvline(mu_true, color='red', linewidth=2, linestyle='--',
label=f'True $\\mu = {mu_true}$')
ax.axvline(np.mean(sample_means), color='blue', linewidth=2,
label=f'$E[\\bar{{X}}] = {np.mean(sample_means):.3f}$')
ax.set_xlabel('$\\bar{X}$', fontsize=12)
ax.set_ylabel('Density', fontsize=12)
ax.set_title(f'Sampling Distribution of $\\bar{{X}}$ (n={n})', fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
# (b) 標本分散のバイアス
ax = axes[1]
biases_n = []
biases_n1 = []
for n in sample_sizes:
s2_n = []
s2_n1 = []
for _ in range(n_simulations):
sample = np.random.normal(mu_true, sigma_true, n)
s2_n.append(np.mean((sample - np.mean(sample))**2)) # n割り
s2_n1.append(np.var(sample, ddof=1)) # n-1割り
biases_n.append(np.mean(s2_n) - sigma_true**2)
biases_n1.append(np.mean(s2_n1) - sigma_true**2)
ax.plot(sample_sizes, biases_n, 'ro-', linewidth=2, markersize=8,
label='$S_n^2$ (divide by $n$)')
ax.plot(sample_sizes, biases_n1, 'bs-', linewidth=2, markersize=8,
label='$S^2$ (divide by $n-1$)')
ax.axhline(0, color='gray', linestyle='--', alpha=0.5)
ax.set_xlabel('Sample size $n$', fontsize=12)
ax.set_ylabel('Bias', fontsize=12)
ax.set_title('Bias of Sample Variance Estimators', fontsize=13)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
# (c) 不偏推定量の比較: X_1 vs X_bar
ax = axes[2]
n = 20
estimates_x1 = [np.random.normal(mu_true, sigma_true)
for _ in range(n_simulations)]
estimates_xbar = [np.mean(np.random.normal(mu_true, sigma_true, n))
for _ in range(n_simulations)]
ax.hist(estimates_x1, bins=50, density=True, alpha=0.5, color='red',
edgecolor='gray', linewidth=0.3, label=f'$X_1$ (V={np.var(estimates_x1):.2f})')
ax.hist(estimates_xbar, bins=50, density=True, alpha=0.5, color='blue',
edgecolor='gray', linewidth=0.3,
label=f'$\\bar{{X}}_{{20}}$ (V={np.var(estimates_xbar):.2f})')
ax.axvline(mu_true, color='black', linewidth=2, linestyle='--', label=f'$\\mu = {mu_true}$')
ax.set_xlabel('Estimate', fontsize=12)
ax.set_ylabel('Density', fontsize=12)
ax.set_title('Both Unbiased, Different Variances', fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('point_estimation_unbiasedness.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフから不偏性に関する重要な事実が確認できます。
-
左図: 標本平均の標本分布は真の $\mu = 5.0$ を中心に対称に分布しており、$E[\bar{X}]$ の値が5に非常に近いことから不偏性が確認できます
-
中央図: $n$ で割る標本分散 $S_n^2$ は常に負のバイアスを持ち、$n$ が小さいほどバイアスが大きくなります。一方、$n-1$ で割る $S^2$ はバイアスがほぼゼロに保たれています。$n$ の増加とともに両者のバイアスの差は縮小しますが、$n = 5$ では $S_n^2$ のバイアスが $-\sigma^2/5 = -0.8$ と無視できない大きさです
-
右図: $X_1$(赤)と $\bar{X}_{20}$(青)はどちらも不偏ですが、分散が劇的に異なります。$\bar{X}_{20}$ は $X_1$ の20分の1の分散しか持たず、推定の精度が格段に高いです。不偏性だけでは推定量の良さは判断できないことが明確にわかります
一致性の確認
次に、サンプルサイズの増加とともに推定量が真の値に収束する様子を確認します。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(42)
mu_true = 5.0
sigma_true = 2.0
n_values = np.array([5, 10, 20, 50, 100, 200, 500, 1000])
n_simulations = 3000
fig, axes = plt.subplots(1, 2, figsize=(14, 5.5))
# (a) 推定量の収束
ax = axes[0]
for i, n in enumerate(n_values):
estimates = [np.mean(np.random.normal(mu_true, sigma_true, n))
for _ in range(n_simulations)]
# バイオリンプロットの代わりに箱ひげ図
bp = ax.boxplot([estimates], positions=[np.log10(n)], widths=0.08,
patch_artist=True, showfliers=False,
boxprops=dict(facecolor='lightblue', alpha=0.7),
medianprops=dict(color='blue', linewidth=1.5))
ax.axhline(mu_true, color='red', linewidth=2, linestyle='--', label=f'$\\mu = {mu_true}$')
ax.set_xlabel('$\\log_{10}(n)$', fontsize=12)
ax.set_ylabel('$\\bar{X}_n$', fontsize=12)
ax.set_title('Consistency: $\\bar{X}_n \\to \\mu$', fontsize=13)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
# (b) P(|X_bar - mu| > epsilon) の確認
ax = axes[1]
epsilons = [0.5, 0.3, 0.1]
n_range = np.arange(5, 1001, 5)
for eps in epsilons:
probs = []
for n in n_range:
estimates = np.array([np.mean(np.random.normal(mu_true, sigma_true, n))
for _ in range(1000)])
prob = np.mean(np.abs(estimates - mu_true) > eps)
probs.append(prob)
ax.plot(n_range, probs, linewidth=2,
label=rf'$\varepsilon = {eps}$')
# 理論値 (チェビシェフの不等式の上界)
theory = np.minimum(1, sigma_true**2 / (n_range * eps**2))
ax.plot(n_range, theory, '--', linewidth=1, alpha=0.5)
ax.set_xlabel('Sample size $n$', fontsize=12)
ax.set_ylabel(r'$P(|\bar{X}_n - \mu| > \varepsilon)$', fontsize=12)
ax.set_title('Convergence in Probability', fontsize=13)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_ylim(-0.02, 1.02)
plt.tight_layout()
plt.savefig('point_estimation_consistency.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフから一致性が確認できます。
-
左図: サンプルサイズ $n$ の増加とともに、$\bar{X}_n$ の分布が真の値 $\mu = 5.0$ の周りに集中していく様子がわかります。$n = 5$ では箱が広く推定値がばらついていますが、$n = 1000$ ではほぼ点に縮小しています
-
右図: $P(|\bar{X}_n – \mu| > \varepsilon)$ は $n$ の増加とともに0に収束しており、これがまさに確率収束の定義です。破線はチェビシェフの不等式による上界であり、実際の収束はこの上界よりも速いです。$\varepsilon$ が大きいほど収束は速くなります
MSEとバイアス-バリアンス分解
最後に、バイアスのある推定量がMSEの意味では不偏推定量より良くなりうることを示します。
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(42)
# 正規分布の母分散 σ² の推定
# σ² = 4 (σ = 2) を推定する
sigma2_true = 4.0
n = 10
n_simulations = 10000
# 推定量: S²_c = 1/(n+c-1) * Σ(Xi - Xbar)² (c で割り方を変える)
c_values = np.linspace(-1, 10, 200)
biases = []
variances = []
mses = []
# シミュレーションで各推定量のBias, Variance, MSEを計算
samples_all = np.random.normal(0, np.sqrt(sigma2_true), (n_simulations, n))
ss = np.sum((samples_all - samples_all.mean(axis=1, keepdims=True))**2, axis=1) # Σ(Xi-Xbar)²
for c in c_values:
divisor = n + c - 1
if divisor <= 0:
biases.append(np.nan)
variances.append(np.nan)
mses.append(np.nan)
continue
estimates = ss / divisor
bias = np.mean(estimates) - sigma2_true
var = np.var(estimates)
mse = np.mean((estimates - sigma2_true)**2)
biases.append(bias)
variances.append(var)
mses.append(mse)
biases = np.array(biases)
variances = np.array(variances)
mses = np.array(mses)
fig, axes = plt.subplots(1, 2, figsize=(14, 5.5))
# (a) Bias², Variance, MSE
ax = axes[0]
valid = ~np.isnan(mses)
ax.plot(c_values[valid], biases[valid]**2, 'r-', linewidth=2, label='$\\mathrm{Bias}^2$')
ax.plot(c_values[valid], variances[valid], 'b-', linewidth=2, label='Variance')
ax.plot(c_values[valid], mses[valid], 'k-', linewidth=2.5, label='MSE')
# c=0 → n-1割り(不偏), c=1 → n割り
ax.axvline(0, color='green', linestyle=':', linewidth=1.5, alpha=0.7, label='$c=0$ (unbiased $S^2$)')
ax.axvline(1, color='orange', linestyle=':', linewidth=1.5, alpha=0.7, label='$c=1$ ($S_n^2$)')
# MSE最小点
min_idx = np.nanargmin(mses)
ax.plot(c_values[min_idx], mses[min_idx], 'k*', markersize=15)
ax.annotate(f'MSE-optimal: c={c_values[min_idx]:.1f}',
xy=(c_values[min_idx], mses[min_idx]),
xytext=(c_values[min_idx]+1.5, mses[min_idx]+1),
fontsize=10, arrowprops=dict(arrowstyle='->', color='black'))
ax.set_xlabel('$c$ (divisor = $n + c - 1$)', fontsize=12)
ax.set_ylabel('Value', fontsize=12)
ax.set_title('Bias-Variance Tradeoff for $\\hat{\\sigma}^2$', fontsize=13)
ax.legend(fontsize=8, loc='upper right')
ax.grid(True, alpha=0.3)
ax.set_ylim(0, 15)
# (b) 3つの推定量の分布比較
ax = axes[1]
for c, color, name in [(0, 'green', '$S^2$ (unbiased)'),
(1, 'orange', '$S_n^2$ (biased)'),
(c_values[min_idx], 'black', 'MSE-optimal')]:
divisor = n + c - 1
estimates = ss / divisor
ax.hist(estimates, bins=60, density=True, alpha=0.35, color=color,
edgecolor='gray', linewidth=0.3, label=name)
ax.axvline(sigma2_true, color='red', linewidth=2, linestyle='--',
label=f'True $\\sigma^2 = {sigma2_true}$')
ax.set_xlabel('$\\hat{\\sigma}^2$', fontsize=12)
ax.set_ylabel('Density', fontsize=12)
ax.set_title('Distribution of Variance Estimators', fontsize=13)
ax.legend(fontsize=9)
ax.grid(True, alpha=0.3)
ax.set_xlim(0, 15)
plt.tight_layout()
plt.savefig('point_estimation_mse.png', dpi=150, bbox_inches='tight')
plt.show()
このグラフからバイアス-バリアンス・トレードオフの本質がわかります。
-
左図: $c = 0$(不偏推定量 $S^2$)ではバイアスはゼロですが分散が大きく、MSEは最小ではありません。$c$ を増やすとバイアスの二乗は増加しますが分散は減少し、MSEは $c \approx 3$ 付近で最小になります。つまり、少しのバイアスを許容することでMSEを改善できます
-
右図: 3つの推定量の分布を比較すると、MSE最適な推定量(黒)は不偏推定量 $S^2$(緑)よりもわずかに左(過小推定方向)にシフトしていますが、分布の幅がかなり狭く、真の値 $\sigma^2 = 4$ の周辺に集中しています
まとめ
本記事では、点推定の3つの基本的性質について解説しました。
- 不偏性: 推定量の期待値が真のパラメータに等しい性質。標本平均は母平均の不偏推定量、$n-1$ で割った標本分散は母分散の不偏推定量
- 一致性: サンプルサイズの増加とともに推定量が真の値に確率収束する性質。大数の法則が標本平均の一致性を保証する
- 有効性: 不偏推定量の中で分散が最小の推定量が最も有効。正規分布のもとでは標本平均が標本中央値より約57%有効
- MSE(平均二乗誤差): バイアスと分散を統合した評価基準。バイアス-バリアンス分解により、バイアスのある推定量が不偏推定量をMSEで上回る可能性がある
推定量の良さを評価する理論的枠組みを理解したことで、次のステップとして具体的な推定法の理論に進むことができます。
次のステップとして、以下の記事も参考にしてください。
- 最尤推定法の理論 — 最も広く使われる推定法の漸近理論
- クラメール・ラオの下限 — 不偏推定量の分散の理論的下限
- 十分統計量 — 推定に必要十分な情報の概念