統計的推定において、「与えられたデータからパラメータをどの程度正確に推定できるか」という問いは基本的かつ重要です。直感的には、データが多いほど、また分布のパラメータに対する感度が高いほど、推定精度は向上するはずです。
フィッシャー情報量(Fisher information) は、データがパラメータについてどれだけの「情報」を持っているかを定量化する概念です。そして クラメール・ラオの下界(Cramer-Rao lower bound) は、不偏推定量の分散が達成しうる最小の値を与えます。この下界を達成する推定量は「有効推定量」と呼ばれ、これ以上精度を上げることはできません。
本記事の内容
- スコア関数の定義と性質($E[s(\theta)] = 0$ の証明)
- フィッシャー情報量 $I(\theta)$ の定義と2つの等価な表現の証明
- iid標本でのフィッシャー情報量の加法性
- クラメール・ラオの下界の証明(コーシー・シュワルツ不等式使用)
- 有効推定量と最尤推定量の漸近有効性
- 多変数パラメータへの拡張(フィッシャー情報行列)
- Pythonでの具体的な計算と推定量分散の比較
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
スコア関数
対数尤度関数
1つの観測値 $X$ がパラメータ $\theta$ を持つ確率密度関数(または確率質量関数)$f(x;\theta)$ に従うとします。対数尤度関数(log-likelihood function) は、
$$ \ell(\theta; x) = \log f(x; \theta) $$
です。
スコア関数の定義
スコア関数(score function) は、対数尤度関数のパラメータ $\theta$ に関する偏微分として定義されます。
$$ \begin{equation} s(\theta; X) = \frac{\partial}{\partial \theta}\log f(X; \theta) = \frac{\partial \ell(\theta; X)}{\partial \theta} \end{equation} $$
スコア関数は、パラメータ $\theta$ を変化させたとき対数尤度がどれだけ変化するかを表します。大きなスコアは、データがパラメータの値に対して敏感であることを意味します。
スコア関数の期待値がゼロであることの証明
命題: 正則条件の下で、$E_\theta[s(\theta; X)] = 0$。
証明: 確率密度関数の正規化条件 $\int f(x; \theta)\,dx = 1$ の両辺を $\theta$ で微分します。微分と積分の順序交換が許されると仮定すると(正則条件)、
$$ \frac{\partial}{\partial \theta}\int f(x; \theta)\,dx = \int \frac{\partial}{\partial \theta}f(x; \theta)\,dx = 0 $$
ここで、$\frac{\partial}{\partial \theta}\log f = \frac{1}{f}\frac{\partial f}{\partial \theta}$ より $\frac{\partial f}{\partial \theta} = f \cdot \frac{\partial \log f}{\partial \theta}$ です。代入すると、
$$ \begin{align} 0 &= \int \frac{\partial f(x;\theta)}{\partial \theta}\,dx \\ &= \int f(x; \theta) \cdot \frac{\partial \log f(x; \theta)}{\partial \theta}\,dx \\ &= E_\theta\left[\frac{\partial \log f(X; \theta)}{\partial \theta}\right] \\ &= E_\theta[s(\theta; X)] \end{align} $$
以上より、$E_\theta[s(\theta; X)] = 0$ が示されました。$\blacksquare$
フィッシャー情報量
定義
フィッシャー情報量(Fisher information) は、スコア関数の分散として定義されます。
$$ \begin{equation} I(\theta) = \text{Var}_\theta[s(\theta; X)] = E_\theta[s(\theta; X)^2] \end{equation} $$
$E[s(\theta; X)] = 0$ なので、$\text{Var}[s] = E[s^2] – (E[s])^2 = E[s^2]$ です。
展開すると、
$$ I(\theta) = E_\theta\left[\left(\frac{\partial \log f(X; \theta)}{\partial \theta}\right)^2\right] $$
2つの等価な表現の証明
命題: 正則条件の下で、フィッシャー情報量は以下の2つの表現で等価です。
$$ \begin{equation} I(\theta) = E_\theta\left[\left(\frac{\partial \log f}{\partial \theta}\right)^2\right] = -E_\theta\left[\frac{\partial^2 \log f}{\partial \theta^2}\right] \end{equation} $$
証明: $E_\theta[s(\theta; X)] = 0$ を再び $\theta$ で微分します。
$$ \frac{\partial}{\partial \theta}E_\theta[s(\theta; X)] = \frac{\partial}{\partial \theta}\int \frac{\partial \log f(x;\theta)}{\partial \theta} f(x; \theta)\,dx = 0 $$
左辺を積の微分の公式で展開します。
$$ \int \left[\frac{\partial^2 \log f}{\partial \theta^2} \cdot f + \frac{\partial \log f}{\partial \theta} \cdot \frac{\partial f}{\partial \theta}\right]dx = 0 $$
第2項について、$\frac{\partial f}{\partial \theta} = f \cdot \frac{\partial \log f}{\partial \theta}$ を代入します。
$$ \int \frac{\partial^2 \log f}{\partial \theta^2}\,f\,dx + \int \left(\frac{\partial \log f}{\partial \theta}\right)^2 f\,dx = 0 $$
これは期待値の表記では、
$$ E_\theta\left[\frac{\partial^2 \log f}{\partial \theta^2}\right] + E_\theta\left[\left(\frac{\partial \log f}{\partial \theta}\right)^2\right] = 0 $$
したがって、
$$ I(\theta) = E_\theta\left[\left(\frac{\partial \log f}{\partial \theta}\right)^2\right] = -E_\theta\left[\frac{\partial^2 \log f}{\partial \theta^2}\right] $$
$\blacksquare$
2番目の表現は、対数尤度の曲率の期待値(の符号を反転したもの)であり、対数尤度関数が $\theta$ の真の値の周りで鋭いピークを持つほど(= 曲率が大きいほど)フィッシャー情報量が大きいことを意味します。
iid標本でのフィッシャー情報量の加法性
$X_1, X_2, \dots, X_n \overset{\text{iid}}{\sim} f(x; \theta)$ のとき、同時密度は $\prod_{i=1}^n f(x_i; \theta)$ なので、同時対数尤度は
$$ \ell_n(\theta) = \sum_{i=1}^{n}\log f(X_i; \theta) $$
$n$ 個の標本に基づくフィッシャー情報量は、
$$ \begin{align} I_n(\theta) &= -E\left[\frac{\partial^2}{\partial \theta^2}\sum_{i=1}^{n}\log f(X_i; \theta)\right] \\ &= -\sum_{i=1}^{n}E\left[\frac{\partial^2 \log f(X_i; \theta)}{\partial \theta^2}\right] \\ &= n \cdot I(\theta) \end{align} $$
3番目の等号は各 $X_i$ が同一分布に従うことによります。つまり、iid標本のフィッシャー情報量は1個の観測値のフィッシャー情報量の $n$ 倍になります。これは直感的にも自然です。データが増えればパラメータに関する情報も比例して増加します。
具体例:主要分布のフィッシャー情報量
正規分布 $N(\mu, \sigma^2)$($\sigma^2$ 既知、$\mu$ を推定)
$$ \log f(x; \mu) = -\frac{1}{2}\log(2\pi\sigma^2) – \frac{(x-\mu)^2}{2\sigma^2} $$
スコア関数:
$$ s(\mu; x) = \frac{\partial}{\partial \mu}\log f = \frac{x – \mu}{\sigma^2} $$
2階微分:
$$ \frac{\partial^2 \log f}{\partial \mu^2} = -\frac{1}{\sigma^2} $$
フィッシャー情報量:
$$ I(\mu) = -E\left[-\frac{1}{\sigma^2}\right] = \frac{1}{\sigma^2} $$
$n$ 個の iid 標本では $I_n(\mu) = \frac{n}{\sigma^2}$ です。
ベルヌーイ分布 $\text{Ber}(p)$
$$ f(x; p) = p^x(1-p)^{1-x} \quad (x \in \{0, 1\}) $$
$$ \log f(x; p) = x\log p + (1-x)\log(1-p) $$
スコア関数:
$$ s(p; x) = \frac{x}{p} – \frac{1-x}{1-p} = \frac{x – p}{p(1-p)} $$
2階微分:
$$ \frac{\partial^2 \log f}{\partial p^2} = -\frac{x}{p^2} – \frac{1-x}{(1-p)^2} $$
期待値($E[X] = p$):
$$ E\left[\frac{\partial^2 \log f}{\partial p^2}\right] = -\frac{p}{p^2} – \frac{1-p}{(1-p)^2} = -\frac{1}{p} – \frac{1}{1-p} = -\frac{1}{p(1-p)} $$
フィッシャー情報量:
$$ I(p) = \frac{1}{p(1-p)} $$
$p$ が 0 や 1 に近いほど情報量が大きくなります。これは、$p$ が端に近いとき少数のデータでも $p$ の値を特定しやすいことに対応します。
指数分布 $\text{Exp}(\lambda)$
$$ f(x; \lambda) = \lambda e^{-\lambda x}, \quad \log f = \log \lambda – \lambda x $$
スコア関数:
$$ s(\lambda; x) = \frac{1}{\lambda} – x $$
2階微分:
$$ \frac{\partial^2 \log f}{\partial \lambda^2} = -\frac{1}{\lambda^2} $$
フィッシャー情報量:
$$ I(\lambda) = \frac{1}{\lambda^2} $$
ポアソン分布 $\text{Poi}(\lambda)$
$$ f(x; \lambda) = \frac{\lambda^x e^{-\lambda}}{x!}, \quad \log f = x\log\lambda – \lambda – \log(x!) $$
スコア関数:
$$ s(\lambda; x) = \frac{x}{\lambda} – 1 $$
2階微分:
$$ \frac{\partial^2 \log f}{\partial \lambda^2} = -\frac{x}{\lambda^2} $$
フィッシャー情報量:
$$ I(\lambda) = -E\left[-\frac{X}{\lambda^2}\right] = \frac{E[X]}{\lambda^2} = \frac{\lambda}{\lambda^2} = \frac{1}{\lambda} $$
クラメール・ラオの下界
定理の主張
定理(クラメール・ラオの不等式): $X_1, \dots, X_n$ が iid で $f(x; \theta)$ に従い、正則条件を満たすとする。$T = T(X_1, \dots, X_n)$ が $g(\theta) = E_\theta[T]$ なる期待値を持つ推定量であるとき、
$$ \begin{equation} \text{Var}_\theta(T) \geq \frac{[g'(\theta)]^2}{I_n(\theta)} = \frac{[g'(\theta)]^2}{nI(\theta)} \end{equation} $$
特に $T$ が $\theta$ の不偏推定量($g(\theta) = \theta$、$g'(\theta) = 1$)のとき、
$$ \begin{equation} \text{Var}_\theta(T) \geq \frac{1}{nI(\theta)} \end{equation} $$
コーシー・シュワルツ不等式を用いた証明
証明: $n$ 個の iid 標本の同時密度を $L(\theta) = \prod_{i=1}^n f(X_i; \theta)$ とし、スコア関数を $S_n(\theta) = \frac{\partial}{\partial\theta}\log L(\theta) = \sum_{i=1}^n s(\theta; X_i)$ とします。
$g(\theta) = E_\theta[T]$ を $\theta$ で微分します。
$$ g'(\theta) = \frac{d}{d\theta}\int T(\bm{x})\,\prod_{i=1}^n f(x_i; \theta)\,d\bm{x} $$
正則条件の下で微分と積分を交換できるので、
$$ \begin{align} g'(\theta) &= \int T(\bm{x})\,\frac{\partial}{\partial\theta}\prod_{i=1}^n f(x_i; \theta)\,d\bm{x} \end{align} $$
ここで、$\frac{\partial L}{\partial\theta} = L \cdot \frac{\partial \log L}{\partial\theta} = L \cdot S_n(\theta)$ を使うと、
$$ \begin{align} g'(\theta) &= \int T(\bm{x}) \cdot L(\theta) \cdot S_n(\theta)\,d\bm{x} \\ &= E_\theta[T \cdot S_n(\theta)] \end{align} $$
一方、$E_\theta[S_n(\theta)] = 0$ なので、
$$ g'(\theta) = E_\theta[T \cdot S_n(\theta)] – E_\theta[T] \cdot E_\theta[S_n(\theta)] = \text{Cov}_\theta(T, S_n(\theta)) $$
コーシー・シュワルツの不等式 $|\text{Cov}(A, B)|^2 \leq \text{Var}(A) \cdot \text{Var}(B)$ を適用します。
$$ [g'(\theta)]^2 = [\text{Cov}(T, S_n)]^2 \leq \text{Var}(T) \cdot \text{Var}(S_n) $$
$\text{Var}(S_n) = I_n(\theta) = nI(\theta)$ なので、
$$ [g'(\theta)]^2 \leq \text{Var}(T) \cdot nI(\theta) $$
両辺を $nI(\theta)$ で割って、
$$ \text{Var}(T) \geq \frac{[g'(\theta)]^2}{nI(\theta)} $$
$\blacksquare$
等号成立条件
コーシー・シュワルツの不等式で等号が成立する条件は、$T$ と $S_n$ が線形関係にあること、つまり定数 $a(\theta)$, $b(\theta)$ が存在して
$$ T = a(\theta) \cdot S_n(\theta) + b(\theta) $$
が成り立つことです。
有効推定量
定義
クラメール・ラオの下界を達成する不偏推定量を 有効推定量(efficient estimator) と呼びます。
$$ \text{Var}_\theta(T) = \frac{1}{nI(\theta)} $$
正規分布の標本平均
$X_1, \dots, X_n \sim N(\mu, \sigma^2)$($\sigma^2$ 既知)のとき、標本平均 $\bar{X} = \frac{1}{n}\sum_{i=1}^n X_i$ の分散は
$$ \text{Var}(\bar{X}) = \frac{\sigma^2}{n} $$
クラメール・ラオの下界は $\frac{1}{nI(\mu)} = \frac{1}{n \cdot 1/\sigma^2} = \frac{\sigma^2}{n}$ です。
等号が成立しているので、$\bar{X}$ は $\mu$ の有効推定量です。
ベルヌーイ分布の標本比率
$X_1, \dots, X_n \sim \text{Ber}(p)$ のとき、標本比率 $\hat{p} = \frac{1}{n}\sum_{i=1}^n X_i$ の分散は
$$ \text{Var}(\hat{p}) = \frac{p(1-p)}{n} $$
クラメール・ラオの下界は $\frac{1}{n/(p(1-p))} = \frac{p(1-p)}{n}$ です。
等号が成立するので、$\hat{p}$ は $p$ の有効推定量です。
最尤推定量の漸近有効性
すべてのパラメータ、すべての分布で有効推定量が存在するわけではありません。しかし、最尤推定量(MLE)は広い正則条件の下で、漸近的にクラメール・ラオの下界を達成します。
定理(MLEの漸近正規性): 正則条件の下で、MLE $\hat{\theta}_n$ は
$$ \sqrt{n}(\hat{\theta}_n – \theta) \xrightarrow{d} N\left(0, \frac{1}{I(\theta)}\right) $$
つまり、$n$ が大きいとき $\hat{\theta}_n$ の分散は近似的に $\frac{1}{nI(\theta)}$ であり、クラメール・ラオの下界と一致します。この性質を 漸近有効性(asymptotic efficiency) といいます。
多変数パラメータへの拡張
フィッシャー情報行列
パラメータが $\bm{\theta} = (\theta_1, \theta_2, \dots, \theta_p)^T$ というベクトルの場合、フィッシャー情報量は フィッシャー情報行列(Fisher information matrix) $\bm{I}(\bm{\theta})$ に拡張されます。
$(i, j)$ 成分は
$$ [\bm{I}(\bm{\theta})]_{ij} = E\left[\frac{\partial \log f}{\partial \theta_i}\frac{\partial \log f}{\partial \theta_j}\right] = -E\left[\frac{\partial^2 \log f}{\partial \theta_i \partial \theta_j}\right] $$
スコアベクトル $\bm{s}(\bm{\theta}) = \nabla_{\bm{\theta}} \log f(X; \bm{\theta})$ を用いると、
$$ \bm{I}(\bm{\theta}) = E[\bm{s}(\bm{\theta})\bm{s}(\bm{\theta})^T] = -E[\nabla_{\bm{\theta}}^2 \log f(X; \bm{\theta})] $$
多変量クラメール・ラオの下界
不偏推定量 $\bm{T}$ の共分散行列 $\text{Cov}(\bm{T})$ に対して、
$$ \text{Cov}(\bm{T}) – \frac{1}{n}\bm{I}(\bm{\theta})^{-1} \succeq 0 $$
ここで $\succeq 0$ は半正定値を意味します。特に各成分について、
$$ \text{Var}(T_j) \geq \frac{1}{n}[\bm{I}(\bm{\theta})^{-1}]_{jj} $$
正規分布の例($\mu$ と $\sigma^2$ の同時推定)
$X \sim N(\mu, \sigma^2)$ で $\bm{\theta} = (\mu, \sigma^2)^T$ とします。
$$ \log f = -\frac{1}{2}\log(2\pi) – \frac{1}{2}\log\sigma^2 – \frac{(x – \mu)^2}{2\sigma^2} $$
各偏微分:
$$ \frac{\partial \log f}{\partial \mu} = \frac{x – \mu}{\sigma^2}, \quad \frac{\partial \log f}{\partial \sigma^2} = -\frac{1}{2\sigma^2} + \frac{(x-\mu)^2}{2\sigma^4} $$
2階偏微分:
$$ \frac{\partial^2 \log f}{\partial \mu^2} = -\frac{1}{\sigma^2}, \quad \frac{\partial^2 \log f}{\partial (\sigma^2)^2} = \frac{1}{2\sigma^4} – \frac{(x-\mu)^2}{\sigma^6} $$
$$ \frac{\partial^2 \log f}{\partial \mu \partial \sigma^2} = -\frac{x-\mu}{\sigma^4} $$
期待値を取ると($E[(X-\mu)^2] = \sigma^2$, $E[X-\mu] = 0$)、
$$ \bm{I}(\mu, \sigma^2) = \begin{pmatrix} \frac{1}{\sigma^2} & 0 \\ 0 & \frac{1}{2\sigma^4} \end{pmatrix} $$
対角行列になるので、$\mu$ と $\sigma^2$ の推定は(フィッシャー情報量の意味で)互いに独立です。逆行列は
$$ \bm{I}^{-1} = \begin{pmatrix} \sigma^2 & 0 \\ 0 & 2\sigma^4 \end{pmatrix} $$
クラメール・ラオの下界は $\text{Var}(\hat{\mu}) \geq \sigma^2/n$、$\text{Var}(\hat{\sigma^2}) \geq 2\sigma^4/n$ です。
Pythonでの実装
実装1:正規分布のフィッシャー情報量と推定量分散の比較
理論的なクラメール・ラオの下界と、最尤推定量の実際の分散をシミュレーションで比較します。
import numpy as np
import matplotlib.pyplot as plt
# 正規分布 N(mu, sigma^2) でのmu推定
mu_true = 3.0
sigma = 2.0
ns = np.array([5, 10, 20, 50, 100, 200, 500, 1000])
n_sim = 10000
np.random.seed(42)
# 各nについてMLEの分散をシミュレーション
var_sim = np.zeros(len(ns))
for i, n in enumerate(ns):
# n_sim回の実験で標本平均(= MLE)を計算
estimates = np.array([
np.mean(np.random.normal(mu_true, sigma, n))
for _ in range(n_sim)
])
var_sim[i] = np.var(estimates, ddof=0)
# クラメール・ラオの下界
cr_bound = sigma**2 / ns
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(ns, cr_bound, 'r-o', linewidth=2, markersize=6,
label='Cramer-Rao lower bound ($\\sigma^2/n$)')
ax.plot(ns, var_sim, 'b--s', linewidth=2, markersize=6,
label='Simulated Var($\\hat{\\mu}$)')
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xlabel('Sample size n', fontsize=12)
ax.set_ylabel('Variance', fontsize=12)
ax.set_title('Cramer-Rao Bound vs MLE Variance (Normal Distribution)', fontsize=14)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig("cramer_rao_normal.png", dpi=150, bbox_inches="tight")
plt.show()
正規分布の標本平均は有効推定量なので、シミュレーションによる分散がクラメール・ラオの下界とほぼ完全に一致することが確認できます。
実装2:ベルヌーイ分布のフィッシャー情報量
$p$ の関数としてフィッシャー情報量を描画し、$p = 0$ や $p = 1$ 付近で情報量が大きくなることを確認します。
import numpy as np
import matplotlib.pyplot as plt
p_values = np.linspace(0.01, 0.99, 300)
# フィッシャー情報量: I(p) = 1/(p(1-p))
fisher_info = 1.0 / (p_values * (1 - p_values))
# クラメール・ラオの下界(n=50の場合)
n = 50
cr_bound = p_values * (1 - p_values) / n
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))
# フィッシャー情報量
ax1.plot(p_values, fisher_info, 'b-', linewidth=2)
ax1.set_xlabel('p', fontsize=12)
ax1.set_ylabel('I(p)', fontsize=12)
ax1.set_title('Fisher Information for Bernoulli(p)', fontsize=14)
ax1.set_ylim(0, 50)
ax1.grid(True, alpha=0.3)
# クラメール・ラオの下界
ax2.plot(p_values, cr_bound, 'r-', linewidth=2, label=f'CR bound (n={n})')
# シミュレーションによる分散
p_sim_values = np.linspace(0.05, 0.95, 19)
n_sim = 20000
var_sim = np.zeros(len(p_sim_values))
np.random.seed(123)
for i, p in enumerate(p_sim_values):
estimates = np.array([
np.mean(np.random.binomial(1, p, n))
for _ in range(n_sim)
])
var_sim[i] = np.var(estimates, ddof=0)
ax2.scatter(p_sim_values, var_sim, color='blue', s=50, zorder=5,
label='Simulated Var($\\hat{p}$)')
ax2.set_xlabel('p', fontsize=12)
ax2.set_ylabel('Variance', fontsize=12)
ax2.set_title(f'CR Bound vs Simulated Variance (n={n})', fontsize=14)
ax2.legend(fontsize=11)
ax2.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig("fisher_bernoulli.png", dpi=150, bbox_inches="tight")
plt.show()
$p = 0.5$ 付近でフィッシャー情報量は最小値 $4$ を取り、クラメール・ラオの下界(= 推定量分散の最小値)は最大になります。これは $p = 0.5$ が最も推定が難しい値であることを意味します。
実装3:非有効推定量との比較
正規分布で分散既知の場合に、標本平均(有効推定量)と標本中央値(非有効推定量)の分散を比較します。
import numpy as np
import matplotlib.pyplot as plt
mu_true = 0.0
sigma = 1.0
ns = [10, 30, 100, 300, 1000]
n_sim = 20000
np.random.seed(456)
var_mean_list = []
var_median_list = []
cr_bound_list = []
for n in ns:
means = []
medians = []
for _ in range(n_sim):
sample = np.random.normal(mu_true, sigma, n)
means.append(np.mean(sample))
medians.append(np.median(sample))
var_mean_list.append(np.var(means))
var_median_list.append(np.var(medians))
cr_bound_list.append(sigma**2 / n)
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(ns, cr_bound_list, 'r-o', linewidth=2, markersize=8,
label='Cramer-Rao bound ($\\sigma^2/n$)')
ax.plot(ns, var_mean_list, 'b--s', linewidth=2, markersize=8,
label='Var(sample mean) — efficient')
ax.plot(ns, var_median_list, 'g-.^', linewidth=2, markersize=8,
label='Var(sample median) — not efficient')
# 中央値の理論分散 pi*sigma^2/(2n)
ns_arr = np.array(ns)
var_median_theory = np.pi * sigma**2 / (2 * ns_arr)
ax.plot(ns, var_median_theory, 'g:', linewidth=1.5, alpha=0.7,
label='Median theory ($\\pi\\sigma^2/2n$)')
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_xlabel('Sample size n', fontsize=12)
ax.set_ylabel('Variance', fontsize=12)
ax.set_title('Efficient vs Non-efficient Estimator', fontsize=14)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
# 効率の表示
for i, n in enumerate(ns):
eff = var_mean_list[i] / var_median_list[i]
plt.tight_layout()
plt.savefig("efficient_vs_inefficient.png", dpi=150, bbox_inches="tight")
plt.show()
# 効率の表示
print("Asymptotic Relative Efficiency (mean/median):")
for i, n in enumerate(ns):
are = cr_bound_list[i] / var_median_list[i]
print(f" n={n:5d}: ARE = {are:.4f} (theory: {2/np.pi:.4f})")
標本平均はクラメール・ラオの下界にぴったり一致し、標本中央値は理論値 $\frac{\pi\sigma^2}{2n}$ の近くにあります。漸近相対効率(ARE)は $\frac{2}{\pi} \approx 0.637$ であり、正規分布では中央値の情報量は平均の約64%しかないことが確認できます。
実装4:フィッシャー情報行列の数値計算
正規分布の $(\mu, \sigma^2)$ のフィッシャー情報行列を数値的に計算し、理論値と比較します。
import numpy as np
import matplotlib.pyplot as plt
def numerical_fisher_matrix_normal(mu, sigma2, n_mc=100000):
"""
正規分布N(mu, sigma^2)のフィッシャー情報行列を
モンテカルロ法で数値的に計算
"""
sigma = np.sqrt(sigma2)
X = np.random.normal(mu, sigma, n_mc)
# スコアベクトル: [d log f / d mu, d log f / d sigma^2]
s_mu = (X - mu) / sigma2
s_sigma2 = -1 / (2 * sigma2) + (X - mu)**2 / (2 * sigma2**2)
# 情報行列 = E[s * s^T]
I_11 = np.mean(s_mu**2)
I_12 = np.mean(s_mu * s_sigma2)
I_22 = np.mean(s_sigma2**2)
return np.array([[I_11, I_12], [I_12, I_22]])
# パラメータ
mu = 3.0
sigma2 = 4.0
np.random.seed(789)
I_numerical = numerical_fisher_matrix_normal(mu, sigma2)
# 理論値
I_theory = np.array([
[1 / sigma2, 0],
[0, 1 / (2 * sigma2**2)]
])
print("理論的フィッシャー情報行列:")
print(I_theory)
print(f"\n数値的フィッシャー情報行列 (Monte Carlo):")
print(I_numerical)
print(f"\n差の絶対値:")
print(np.abs(I_theory - I_numerical))
# クラメール・ラオの下界の比較
n = 100
I_inv = np.linalg.inv(I_theory)
print(f"\n--- n={n} での不偏推定量の分散の下界 ---")
print(f"Var(mu_hat) >= {I_inv[0, 0] / n:.6f} (= sigma^2/n = {sigma2/n:.6f})")
print(f"Var(sigma2_hat) >= {I_inv[1, 1] / n:.6f} (= 2*sigma^4/n = {2*sigma2**2/n:.6f})")
数値的に計算されたフィッシャー情報行列が理論値と非常によく一致し、対角要素は $1/\sigma^2 = 0.25$ と $1/(2\sigma^4) = 0.03125$ に近い値になることが確認できます。
まとめ
本記事では、フィッシャー情報量とクラメール・ラオの下界について詳しく解説しました。
- スコア関数 $s(\theta) = \frac{\partial}{\partial\theta}\log f(X;\theta)$ の期待値がゼロであることを正規化条件から証明しました
- フィッシャー情報量 $I(\theta) = E[s(\theta)^2] = -E[\frac{\partial^2 \log f}{\partial\theta^2}]$ の2つの等価な表現を導出しました
- iid 標本では情報量が $n$ 倍になる加法性を示しました
- コーシー・シュワルツの不等式を用いてクラメール・ラオの下界 $\text{Var}(T) \geq \frac{1}{nI(\theta)}$ を厳密に証明しました
- 正規分布の標本平均やベルヌーイ分布の標本比率が有効推定量であることを確認しました
- MLEの漸近有効性(漸近分散がクラメール・ラオの下界と一致する性質)を示しました
- フィッシャー情報行列による多変数パラメータへの拡張を解説しました
- Pythonで理論値とシミュレーション結果の一致を検証しました
フィッシャー情報量は統計理論の根幹をなす概念であり、推定量の良さの評価、実験計画法、情報幾何学などに広く応用されます。次のステップとして、以下の記事も参考にしてください。