100人の患者の血圧データから母集団の平均血圧を推定したいとする。このとき、100個すべてのデータを保持する必要があるだろうか? 実は、標本平均だけを計算すれば、推定に必要な情報は失われない。個々のデータを捨てても、標本平均さえ分かれば、母平均の推定において同じ精度が得られるのだ。
このように、元のデータからパラメータ推定に必要な情報を損なわずに「圧縮」できる統計量を十分統計量(sufficient statistic)という。データサイエンスにおけるデータ圧縮の基礎とも言える概念である。
十分統計量の判定には、フィッシャー・ネイマンの分解定理(Fisher-Neyman factorization theorem)が便利だ。R.A.フィッシャーが1922年に十分統計量の概念を導入し、分解定理の十分条件を確立した。その後、イェジ・ネイマンが1935年に必要条件を証明し、定理が完成した。
十分統計量は最尤推定と深く関わっている。最尤推定量は必ず十分統計量の関数として表されるため、十分統計量を見つければ推定の計算が大幅に簡略化できる。また、クラメール・ラオの不等式で登場するフィッシャー情報量も、十分統計量を通じて効率的に計算できる。
十分統計量の定義
直感的に言えば、十分統計量とは「パラメータ推定に必要な情報をすべて含む統計量」である。より正確には、次のように定義される。
パラメータ \theta をもつ分布から得られた標本 X_1, \ldots, X_n に対して、統計量 T = T(X_1, \ldots, X_n) が \theta の十分統計量であるとは、T で条件付けたときの標本の条件付き分布が \theta に依存しないこと:
この定義は「T の値が分かれば、元のデータがどうであったかはパラメータ \theta に関係なく決まる」ことを意味する。言い換えれば、T を知った後では、元のデータは \theta についての追加情報を一切持たない。
直感的な理解
コイン投げを例に考えよう。表が出る確率 p を推定するため、コインを10回投げた結果が
だったとする。このとき、「表が6回出た」という情報(T = 6)だけで p の推定は十分である。表裏の出た順番は p の推定に影響しない。
なぜなら、「表が6回」という条件のもとで、どの順番で表裏が出るかは(どの6つが表かを選ぶだけなので)p に依存しないからだ。
フィッシャー・ネイマンの分解定理
十分統計量かどうかを定義から直接判定するのは、条件付き分布を計算する必要があり大変だ。分解定理を使えば、同時確率密度関数(または確率関数)を眺めるだけで判定できる。
標本 X_1, \ldots, X_n の同時確率密度関数(離散分布では確率関数)を f(\mathbf{x}; \theta) とする。統計量 T = T(\mathbf{x}) が \theta の十分統計量であるための必要十分条件は、適当な関数 g と h が存在して
と分解できることである。ここで
- g(T(\mathbf{x}), \theta):\theta に依存し、データ \mathbf{x} には T(\mathbf{x}) を通じてのみ依存
- h(\mathbf{x}):\theta に依存しない
つまり、同時確率密度関数を「\theta を含む部分」と「含まない部分」に分解したとき、\theta を含む部分がある統計量 T だけを通じてデータに依存していれば、その T が十分統計量である。
分解定理より、対数尤度関数の \theta を含む項は十分統計量 T のみに依存する。したがって、最尤推定量は必ず十分統計量の関数として表される。
具体例
ベルヌーイ分布
ベルヌーイ分布 \text{Ber}(p) に独立に従う標本 X_1, \ldots, X_n を考える。同時確率関数は
ここで T = \sum_{i=1}^{n} X_i とおくと
h(\mathbf{x}) = 1 は定数で p に依存せず、g(T, p) はデータに T を通じてのみ依存する。よって、標本の合計 T = \sum_{i=1}^{n} X_i は p の十分統計量である。
10回のコイン投げで表が6回出たとき、T = 6 だけ分かれば p の推定に十分であり、どの順番で表が出たかは不要ということだ。
ポアソン分布
ポアソン分布 \text{Po}(\lambda) に独立に従う標本 X_1, \ldots, X_n の同時確率関数は
T = \sum_{i=1}^{n} X_i とおくと
したがって、標本の合計 T = \sum_{i=1}^{n} X_i は \lambda の十分統計量である。標本平均 \bar{X} = \dfrac{T}{n} も T の1対1変換なので十分統計量である。
正規分布
正規分布 N(\mu, \sigma^2) に独立に従う標本 X_1, \ldots, X_n の同時確率密度関数は
指数部分を展開すると
よって
この式において、\mu, \sigma^2 を含む部分は \sum_{i=1}^{n} x_i と \sum_{i=1}^{n} x_i^2 にのみ依存している。したがって
(\mu, \sigma^2) がともに未知のとき、2次元統計量 \left( \sum_{i=1}^{n} X_i, \sum_{i=1}^{n} X_i^2 \right) は (\mu, \sigma^2) の十分統計量である。
これは (\bar{X}, S^2)(標本平均と標本分散)と1対1対応するので、(\bar{X}, S^2) も十分統計量である。
\sigma^2 が既知の場合は、\mu のみが未知パラメータとなり、\sum_{i=1}^{n} X_i(または標本平均 \bar{X})だけで \mu の十分統計量となる。
指数分布
指数分布 \text{Exp}(\lambda) に独立に従う標本 X_1, \ldots, X_n(x_i \geq 0)の同時確率密度関数は
T = \sum_{i=1}^{n} X_i とおくと
したがって、標本の合計 T = \sum_{i=1}^{n} X_i は \lambda の十分統計量である。
十分統計量の性質
十分統計量の非一意性
十分統計量は一意ではない。T が十分統計量ならば、T の1対1変換 T^* = k(T) も十分統計量である。たとえば、ポアソン分布で \sum X_i が十分統計量ならば、標本平均 \bar{X} = \dfrac{1}{n}\sum X_i も十分統計量だ。
また、余分な統計量を追加しても十分性は保たれる。たとえば正規分布で (\bar{X}, S^2) が十分統計量ならば、(\bar{X}, S^2, X_1) も十分統計量である(ただし冗長)。
順序統計量は常に十分統計量
標本を小さい順に並べた順序統計量 (X_{(1)}, X_{(2)}, \ldots, X_{(n)}) は、どんな分布でも十分統計量になる。なぜなら、独立同一分布の仮定のもとで、同時確率密度関数は
と書け、これは順序統計量のみに依存するからだ。ただし、順序統計量は n 次元であり、データ圧縮という観点では意味がない場合が多い。
練習問題
同時確率関数は
T = \sum_{i=1}^{n} X_i とおくと
よって、T = \sum_{i=1}^{n} X_i は p の十分統計量である。
確率密度関数は f(x; \theta) = \dfrac{1}{\theta}(0 \leq x \leq \theta)である。同時確率密度関数は
ここで \prod_{i=1}^{n} \mathbf{1}_{[0, \theta]}(x_i) = \mathbf{1}_{[0, \theta]}(\max_i x_i) と書き直せる(すべての x_i が [0, \theta] に入るのは、最大値が \theta 以下のとき)。
T = X_{(n)} = \max_i X_i とおくと
よって、標本の最大値 T = X_{(n)} は \theta の十分統計量である。
同時確率密度関数は
T = \sum_{i=1}^{n} (X_i - \mu)^2 とおくと
よって、T = \sum_{i=1}^{n} (X_i - \mu)^2 は \sigma^2 の十分統計量である。
まとめ
| 項目 | 内容 |
|---|---|
| 十分統計量 | T で条件付けた標本の分布が \theta に依存しない統計量 |
| 分解定理 | f(\mathbf{x}; \theta) = g(T(\mathbf{x}), \theta) \cdot h(\mathbf{x}) と分解できれば T は十分統計量 |
| ベルヌーイ分布 | T = \sum X_i(成功回数) |
| ポアソン分布 | T = \sum X_i(標本合計) |
| 正規分布 | (\bar{X}, S^2) または \left( \sum X_i, \sum X_i^2 \right) |
| 指数分布 | T = \sum X_i(標本合計) |
| 一様分布 U(0, \theta) | T = X_{(n)}(最大値) |
Pythonで確認する
分解定理を用いて十分統計量を確認し、最尤推定量が十分統計量の関数であることを示す。
import numpy as np
from scipy import stats
np.random.seed(42)
# ===== ベルヌーイ分布 =====
print("=== ベルヌーイ分布 ===")
p_true = 0.7
n = 20
X_bern = np.random.binomial(1, p_true, n)
T_bern = np.sum(X_bern) # 十分統計量
p_mle = T_bern / n # 最尤推定量
print(f"標本: {X_bern}")
print(f"十分統計量 T = Σx_i = {T_bern}")
print(f"最尤推定量 p̂ = T/n = {p_mle:.4f}")
print(f"真の値 p = {p_true}")
print()
# ===== ポアソン分布 =====
print("=== ポアソン分布 ===")
lam_true = 3.5
n = 15
X_pois = np.random.poisson(lam_true, n)
T_pois = np.sum(X_pois) # 十分統計量
lam_mle = T_pois / n # 最尤推定量
print(f"標本: {X_pois}")
print(f"十分統計量 T = Σx_i = {T_pois}")
print(f"最尤推定量 λ̂ = T/n = {lam_mle:.4f}")
print(f"真の値 λ = {lam_true}")
print()
# ===== 正規分布 =====
print("=== 正規分布 ===")
mu_true, sigma_true = 5.0, 2.0
n = 25
X_norm = np.random.normal(mu_true, sigma_true, n)
# 十分統計量
T1 = np.sum(X_norm)
T2 = np.sum(X_norm**2)
print(f"十分統計量 (T1, T2) = ({T1:.4f}, {T2:.4f})")
# 最尤推定量(十分統計量の関数)
mu_mle = T1 / n
sigma2_mle = T2 / n - (T1 / n)**2
print(f"最尤推定量 μ̂ = T1/n = {mu_mle:.4f}")
print(f"最尤推定量 σ̂² = T2/n - (T1/n)² = {sigma2_mle:.4f}")
print(f"真の値 (μ, σ²) = ({mu_true}, {sigma_true**2})")
print()
# ===== 一様分布 U(0, θ) =====
print("=== 一様分布 U(0, θ) ===")
theta_true = 8.0
n = 30
X_unif = np.random.uniform(0, theta_true, n)
# 十分統計量
T_unif = np.max(X_unif)
# 最尤推定量(ただしバイアスあり)
theta_mle = T_unif
print(f"十分統計量 T = max(X) = {T_unif:.4f}")
print(f"最尤推定量 θ̂ = T = {theta_mle:.4f}")
print(f"真の値 θ = {theta_true}")