ヘロログ
統計学

フィッシャー情報量

コインを100回投げて表が出た回数から「表の出る確率」を推定するとしよう。直感的に、100回より1000回投げた方が精度良く推定できそうだ。では、どれくらい精度が上がるのか? 10倍データを集めれば、推定精度も10倍になるのだろうか?

この問いに答えたのが、20世紀最大の統計学者と称される R.A. フィッシャー(Ronald Aylmer Fisher, 1890-1962)である。彼は1922年の論文で「データからパラメータについて得られる情報の量」を数学的に定義した。これがフィッシャー情報量(Fisher information)である。

興味深いことに、この「情報量」はシャノンの情報理論(1948年)より四半世紀も早く定義された。両者は異なる文脈で「情報」を定量化したが、深い関係があることが後に明らかになっている。

フィッシャー情報量の最も重要な応用は、推定精度の理論的限界を与えることだ。クラメール・ラオの不等式は「どんなに賢い推定方法を考えても、分散をこれ以下にはできない」という限界を示す。この限界を達成する推定量は有効推定量と呼ばれ、ある意味で「最良」の推定量である。

スコア関数

フィッシャー情報量を理解するために、まずスコア関数(score function)を導入する。

確率密度関数(離散分布では確率関数)を f(x; \theta) とする。対数尤度関数 \log f(x; \theta) をパラメータ \theta で偏微分したものがスコア関数である:

スコア関数
s(x; \theta) = \dfrac{\partial}{\partial \theta} \log f(x; \theta)

スコア関数は、パラメータを少し変えたときに対数尤度がどれくらい変化するかを表す。最尤推定では、スコア関数を0とおいた方程式(尤度方程式)を解く。

スコア関数の期待値は0

スコア関数の重要な性質として、期待値が0になることが挙げられる:

E_\theta[s(X; \theta)] = 0

これを示そう。連続分布の場合、確率密度関数は \int f(x; \theta) dx = 1 を満たす。両辺を \theta で微分すると

\int \dfrac{\partial f(x; \theta)}{\partial \theta} dx = 0

ここで \dfrac{\partial f}{\partial \theta} = f \cdot \dfrac{\partial \log f}{\partial \theta} を使うと

\int f(x; \theta) \cdot \dfrac{\partial \log f(x; \theta)}{\partial \theta} dx = E_\theta[s(X; \theta)] = 0

フィッシャー情報量の定義

フィッシャー情報量には2つの等価な定義がある。

定義1:スコア関数の分散

スコア関数の期待値が0なので、スコア関数の分散がフィッシャー情報量となる:

フィッシャー情報量(定義1)
I(\theta) = E_\theta\left[ \left( \dfrac{\partial}{\partial \theta} \log f(X; \theta) \right)^2 \right] = V_\theta[s(X; \theta)]

スコア関数のばらつきが大きいほど、データからパラメータについて多くの情報が得られる。

定義2:対数尤度の2階微分の負の期待値

適当な正則条件のもとで、次の表現も成り立つ:

フィッシャー情報量(定義2)
I(\theta) = -E_\theta\left[ \dfrac{\partial^2}{\partial \theta^2} \log f(X; \theta) \right]

対数尤度の曲率(2階微分)が大きいほど、尤度関数のピークが鋭く、パラメータを精度良く推定できる。

2つの定義の使い分け

どちらの定義を使っても同じ結果が得られる。計算しやすい方を選べばよい。多くの場合、定義2(2階微分)の方が計算が楽である。

2つの定義の等価性

定義1と定義2が等しいことを示す。スコア関数の期待値が0であることを \theta でもう一度微分する。

\dfrac{\partial}{\partial \theta} \int f(x; \theta) \cdot \dfrac{\partial \log f(x; \theta)}{\partial \theta} dx = 0

積の微分公式を適用すると

\int \left( \dfrac{\partial f}{\partial \theta} \cdot \dfrac{\partial \log f}{\partial \theta} + f \cdot \dfrac{\partial^2 \log f}{\partial \theta^2} \right) dx = 0

第1項について \dfrac{\partial f}{\partial \theta} = f \cdot \dfrac{\partial \log f}{\partial \theta} を使うと

\int f \left( \dfrac{\partial \log f}{\partial \theta} \right)^2 dx + \int f \cdot \dfrac{\partial^2 \log f}{\partial \theta^2} dx = 0

これは期待値の記号で書くと

E_\theta\left[ \left( \dfrac{\partial \log f}{\partial \theta} \right)^2 \right] + E_\theta\left[ \dfrac{\partial^2 \log f}{\partial \theta^2} \right] = 0

したがって

E_\theta\left[ \left( \dfrac{\partial \log f}{\partial \theta} \right)^2 \right] = -E_\theta\left[ \dfrac{\partial^2 \log f}{\partial \theta^2} \right]

よって、定義1と定義2は等しい。

加法性:n個の独立標本

独立同一分布に従う標本 X_1, X_2, \ldots, X_n が得られたとき、全体のフィッシャー情報量 J_n(\theta)

フィッシャー情報量の加法性
J_n(\theta) = n \cdot I(\theta)

つまり、標本サイズに比例する。これを導出しよう。

同時確率密度関数は f(x_1, \ldots, x_n; \theta) = \prod_{i=1}^{n} f(x_i; \theta) なので、対数を取ると

\log f(x_1, \ldots, x_n; \theta) = \sum_{i=1}^{n} \log f(x_i; \theta)

定義2を使って

\begin{aligned} J_n(\theta) &= -E_\theta\left[ \dfrac{\partial^2}{\partial \theta^2} \sum_{i=1}^{n} \log f(X_i; \theta) \right] \\[5pt] &= -\sum_{i=1}^{n} E_\theta\left[ \dfrac{\partial^2}{\partial \theta^2} \log f(X_i; \theta) \right] \\[5pt] &= n \cdot I(\theta) \end{aligned}

標本が増えるほど情報量が増え、推定精度が向上することが数学的に表現されている。

各分布でのフィッシャー情報量

ベルヌーイ分布

ベルヌーイ分布 \text{Ber}(p) の確率関数は f(x; p) = p^x (1-p)^{1-x}x \in \{0, 1\})である。

対数尤度は

\log f(x; p) = x \log p + (1-x) \log(1-p)

1階微分(スコア関数):

\dfrac{\partial}{\partial p} \log f = \dfrac{x}{p} - \dfrac{1-x}{1-p} = \dfrac{x - p}{p(1-p)}

2階微分:

\dfrac{\partial^2}{\partial p^2} \log f = -\dfrac{x}{p^2} - \dfrac{1-x}{(1-p)^2}

E[X] = p を使って期待値を取ると

I(p) = -E\left[ -\dfrac{X}{p^2} - \dfrac{1-X}{(1-p)^2} \right] = \dfrac{p}{p^2} + \dfrac{1-p}{(1-p)^2} = \dfrac{1}{p} + \dfrac{1}{1-p}
I(p) = \dfrac{1}{p(1-p)}

p = 0.5 のとき I(p) = 4 と最小になり、p が0か1に近づくと情報量は増大する。

ポアソン分布

ポアソン分布 \text{Po}(\lambda) の確率関数は f(x; \lambda) = e^{-\lambda} \dfrac{\lambda^x}{x!} である。

対数尤度:

\log f(x; \lambda) = -\lambda + x \log \lambda - \log x!

2階微分:

\dfrac{\partial^2}{\partial \lambda^2} \log f = -\dfrac{x}{\lambda^2}

E[X] = \lambda を使って

I(\lambda) = -E\left[ -\dfrac{X}{\lambda^2} \right] = \dfrac{E[X]}{\lambda^2} = \dfrac{\lambda}{\lambda^2} = \dfrac{1}{\lambda}

\lambda が小さいほど情報量が大きく、パラメータを精度良く推定できる。

正規分布

正規分布 N(\mu, \sigma^2)\sigma^2 既知)について、\mu に関するフィッシャー情報量を求める。

対数尤度:

\log f(x; \mu) = -\dfrac{1}{2} \log(2\pi\sigma^2) - \dfrac{(x-\mu)^2}{2\sigma^2}

2階微分:

\dfrac{\partial^2}{\partial \mu^2} \log f = -\dfrac{1}{\sigma^2}

これは x に依存しない定数なので

I(\mu) = -E\left[ -\dfrac{1}{\sigma^2} \right] = \dfrac{1}{\sigma^2}

分散 \sigma^2 が小さいほど情報量が大きく、平均を精度良く推定できる。

σ² に関するフィッシャー情報量

\mu 既知で \sigma^2 を推定する場合、I(\sigma^2) = \dfrac{1}{2\sigma^4} となる。導出は練習問題を確認。

指数分布

指数分布 \text{Exp}(\lambda) の確率密度関数は f(x; \lambda) = \lambda e^{-\lambda x}x \geq 0)である。

対数尤度:

\log f(x; \lambda) = \log \lambda - \lambda x

2階微分:

\dfrac{\partial^2}{\partial \lambda^2} \log f = -\dfrac{1}{\lambda^2}

これは定数なので

I(\lambda) = \dfrac{1}{\lambda^2}

主な分布のフィッシャー情報量

分布 パラメータ フィッシャー情報量 I(\theta)
ベルヌーイ分布 p \dfrac{1}{p(1-p)}
ポアソン分布 \lambda \dfrac{1}{\lambda}
正規分布(\sigma^2既知) \mu \dfrac{1}{\sigma^2}
正規分布(\mu既知) \sigma^2 \dfrac{1}{2\sigma^4}
指数分布 \lambda \dfrac{1}{\lambda^2}

n 個の独立標本があるとき、全体のフィッシャー情報量は J_n(\theta) = n \cdot I(\theta) である。

練習問題

問1. 正規分布 N(\mu, \sigma^2) において、\mu を既知として \sigma^2 に関するフィッシャー情報量を求めよ。

対数尤度は

\log f(x; \sigma^2) = -\dfrac{1}{2} \log(2\pi\sigma^2) - \dfrac{(x-\mu)^2}{2\sigma^2}

\sigma^2 で微分すると

\dfrac{\partial}{\partial \sigma^2} \log f = -\dfrac{1}{2\sigma^2} + \dfrac{(x-\mu)^2}{2(\sigma^2)^2}

2階微分:

\dfrac{\partial^2}{\partial (\sigma^2)^2} \log f = \dfrac{1}{2(\sigma^2)^2} - \dfrac{(x-\mu)^2}{(\sigma^2)^3}

E[(X-\mu)^2] = \sigma^2 を使って期待値を取ると

I(\sigma^2) = -E\left[ \dfrac{1}{2(\sigma^2)^2} - \dfrac{(X-\mu)^2}{(\sigma^2)^3} \right] = -\dfrac{1}{2\sigma^4} + \dfrac{\sigma^2}{\sigma^6} = \dfrac{1}{2\sigma^4}
問2. 幾何分布の確率関数を f(x; p) = p(1-p)^{x-1}x = 1, 2, 3, \ldots)とする。パラメータ p に関するフィッシャー情報量を求めよ。

対数尤度:

\log f(x; p) = \log p + (x-1) \log(1-p)

2階微分:

\dfrac{\partial^2}{\partial p^2} \log f = -\dfrac{1}{p^2} - \dfrac{x-1}{(1-p)^2}

幾何分布の期待値は E[X] = \dfrac{1}{p} なので E[X-1] = \dfrac{1}{p} - 1 = \dfrac{1-p}{p}

I(p) = \dfrac{1}{p^2} + \dfrac{1}{(1-p)^2} \cdot \dfrac{1-p}{p} = \dfrac{1}{p^2} + \dfrac{1}{p(1-p)} = \dfrac{1}{p^2(1-p)}
問3. ポアソン分布 \text{Po}(\lambda) に従う標本が20個得られたとき、全体のフィッシャー情報量 J_{20}(\lambda)\lambda = 4 として求めよ。

ポアソン分布のフィッシャー情報量は I(\lambda) = \dfrac{1}{\lambda} である。

加法性より J_n(\lambda) = n \cdot I(\lambda) なので

J_{20}(4) = 20 \times \dfrac{1}{4} = 5

まとめ

項目 内容
スコア関数 s(x; \theta) = \dfrac{\partial}{\partial \theta} \log f(x; \theta)
スコアの期待値 E_\theta[s(X; \theta)] = 0
定義1 I(\theta) = E_\theta\left[ \left( \dfrac{\partial \log f}{\partial \theta} \right)^2 \right](スコアの分散)
定義2 I(\theta) = -E_\theta\left[ \dfrac{\partial^2 \log f}{\partial \theta^2} \right](対数尤度の曲率)
加法性 J_n(\theta) = n \cdot I(\theta)(独立標本の場合)
意味 データから得られるパラメータに関する「情報量」

Pythonで計算する

各分布のフィッシャー情報量を計算し、数値微分による検証も行う。

fisher_information.py
import numpy as np
from scipy import stats

def fisher_info_bernoulli(p):
    """ベルヌーイ分布のフィッシャー情報量"""
    return 1 / (p * (1 - p))

def fisher_info_poisson(lam):
    """ポアソン分布のフィッシャー情報量"""
    return 1 / lam

def fisher_info_normal_mu(sigma2):
    """正規分布(μ)のフィッシャー情報量"""
    return 1 / sigma2

def fisher_info_exponential(lam):
    """指数分布のフィッシャー情報量"""
    return 1 / lam**2

# 各分布で計算
print("=== 各分布のフィッシャー情報量 ===")
print()

# ベルヌーイ分布
p = 0.3
I_bern = fisher_info_bernoulli(p)
print(f"【ベルヌーイ分布】p = {p}")
print(f"  I(p) = 1/(p(1-p)) = {I_bern:.4f}")
print()

# ポアソン分布
lam = 5
I_pois = fisher_info_poisson(lam)
print(f"【ポアソン分布】λ = {lam}")
print(f"  I(λ) = 1/λ = {I_pois:.4f}")
print()

# 正規分布
sigma2 = 4
I_norm = fisher_info_normal_mu(sigma2)
print(f"【正規分布】σ² = {sigma2}")
print(f"  I(μ) = 1/σ² = {I_norm:.4f}")
print()

# 指数分布
lam_exp = 2
I_exp = fisher_info_exponential(lam_exp)
print(f"【指数分布】λ = {lam_exp}")
print(f"  I(λ) = 1/λ² = {I_exp:.4f}")
print()

# n個の標本での情報量
print("=== n個の独立標本でのフィッシャー情報量 ===")
n = 100
print(f"n = {n} のとき")
print(f"  ベルヌーイ(p={p}): J_n(p) = {n * I_bern:.2f}")
print(f"  ポアソン(λ={lam}): J_n(λ) = {n * I_pois:.2f}")
print(f"  正規(σ²={sigma2}): J_n(μ) = {n * I_norm:.2f}")
print(f"  指数(λ={lam_exp}): J_n(λ) = {n * I_exp:.2f}")
=== 各分布のフィッシャー情報量 === 【ベルヌーイ分布】p = 0.3 I(p) = 1/(p(1-p)) = 4.7619 【ポアソン分布】λ = 5 I(λ) = 1/λ = 0.2000 【正規分布】σ² = 4 I(μ) = 1/σ² = 0.2500 【指数分布】λ = 2 I(λ) = 1/λ² = 0.2500 === n個の独立標本でのフィッシャー情報量 === n = 100 のとき ベルヌーイ(p=0.3): J_n(p) = 476.19 ポアソン(λ=5): J_n(λ) = 20.00 正規(σ²=4): J_n(μ) = 25.00 指数(λ=2): J_n(λ) = 25.00