コインの面積を推定したいとする。面積は \pi r^2 だが、半径 r を直接測るのは難しいので、複数回測定して平均をとる。5回測定して平均が 9.04 mm だったとき、面積の推定値は \pi \times 9.04^2 \approx 257 mm² となる。
ここで疑問が生じる。この推定値はどれくらいばらつくのか? 半径の測定誤差が面積の推定にどう影響するかを知りたい。半径の平均 \bar{r} の分布は中心極限定理でわかるが、その二乗 \bar{r}^2 の分布はどうなるのか?
デルタ法(delta method)は、まさにこの問題を解決する手法である。標本平均 \bar{X} の分布がわかっているとき、その関数 f(\bar{X})(たとえば二乗、対数、逆数など)の分布を求めることができる。
直感的理解:接線で近似する
デルタ法のアイデアは単純である。曲線を接線で近似する。
下のグラフは f(x) = x^2 のグラフと、x = 3 での接線を示している。標本平均 \bar{X} が真の値 \mu = 3 の周りでばらつくとき、f(\bar{X}) = \bar{X}^2 がどれくらいばらつくかを考えよう。
サンプルサイズが大きいと、\bar{X} は \mu の近くに集中する。この狭い範囲では、曲線はほぼ直線(接線)で近似できる。
ポイントは接線の傾きである。f(x) = x^2 の x = 3 での傾きは f'(3) = 2 \times 3 = 6。つまり、\bar{X} が 1 だけ動くと、f(\bar{X}) は約 6 動く。傾きが大きいほど、入力のばらつきが出力で増幅される。
\bar{X} のばらつきが \dfrac{\sigma^2}{n} なら、f(\bar{X}) のばらつきは (f'(\mu))^2 \times \dfrac{\sigma^2}{n} になる。傾きの二乗で増幅される。
具体例:まず数字で確認
抽象的な公式の前に、具体的な数字で計算してみよう。
X_1, \ldots, X_n が平均 \mu = 3、標準偏差 \sigma = 2 の分布に従うとする。標本平均 \bar{X} の二乗 \bar{X}^2 の分布を考える。
ステップ1:X̄ の分布
中心極限定理より、\bar{X} は近似的に正規分布に従う:
(分散は \dfrac{\sigma^2}{n} = \dfrac{4}{n})
ステップ2:傾きを計算
f(x) = x^2 の導関数は f'(x) = 2x。x = \mu = 3 での傾きは:
ステップ3:f(X̄) の分散を計算
デルタ法により、\bar{X}^2 の分散は:
結論
\bar{X}^2 は近似的に正規分布に従う:
たとえば n = 100 なら、\bar{X}^2 の標準偏差は \sqrt{\dfrac{144}{100}} = 1.2 となる。
定義
上の例を一般化しよう。
X_1, \ldots, X_n が独立に同じ分布に従い、平均 \mu、分散 \sigma^2 をもつとする。関数 f が滑らかで f'(\mu) \neq 0 のとき:
より正確には、n \to \infty のとき
が成り立つ。記号 \xrightarrow{d} は「n が大きくなると、左辺の分布が右辺の分布に近づく」という意味である。
なぜこうなるのか(導出)
デルタ法はテイラー展開に基づく。f(x) を x = \mu の周りで1次まで展開すると:
x = \bar{X}_n を代入して整理すると:
両辺に \sqrt{n} を掛けると:
右辺について、中心極限定理より \sqrt{n}(\bar{X}_n - \mu) \xrightarrow{d} N(0, \sigma^2) なので、左辺は N(0, (f'(\mu))^2 \sigma^2) に近づく。
他の関数への適用
逆数 f(x) = \dfrac{1}{x}
f'(x) = -\dfrac{1}{x^2} より f'(\mu) = -\dfrac{1}{\mu^2}。よって:
対数 f(x) = \log x
f'(x) = \dfrac{1}{x} より f'(\mu) = \dfrac{1}{\mu}。よって:
分散 \dfrac{\sigma^2}{\mu^2} は変動係数(= 標準偏差 ÷ 平均)の二乗に一致する。
平方根 f(x) = \sqrt{x}
f'(x) = \dfrac{1}{2\sqrt{x}} より f'(\mu) = \dfrac{1}{2\sqrt{\mu}}。よって:
よく使う関数の公式
| 関数 f(x) | 導関数 f'(x) | f(X̄) の近似分散 |
|---|---|---|
| x^2 | 2x | \dfrac{4\mu^2 \sigma^2}{n} |
| x^3 | 3x^2 | \dfrac{9\mu^4 \sigma^2}{n} |
| \dfrac{1}{x} | -\dfrac{1}{x^2} | \dfrac{\sigma^2}{n\mu^4} |
| \log x | \dfrac{1}{x} | \dfrac{\sigma^2}{n\mu^2} |
| \sqrt{x} | \dfrac{1}{2\sqrt{x}} | \dfrac{\sigma^2}{4n\mu} |
| e^x | e^x | \dfrac{e^{2\mu} \sigma^2}{n} |
傾きが0のとき(2次のデルタ法)
f'(\mu) = 0 の場合、接線が水平なので1次近似では変動が捉えられない。このときは2次までテイラー展開する。
結果として、n(f(\bar{X}_n) - f(\mu)) は正規分布ではなく、カイ二乗分布のスカラー倍に近づく:
たとえば f(x) = x^2 で \mu = 0 の場合がこれに該当する。
練習問題
f(x) = x^2、f'(x) = 2x より f'(4) = 8。
デルタ法より:
よって \bar{X}^2 \sim N(16, 5.76)(近似的に)。標準偏差は約 2.4。
f(x) = \sqrt{x}、f'(x) = \dfrac{1}{2\sqrt{x}} より f'(\lambda) = \dfrac{1}{2\sqrt{\lambda}}。
ポアソン分布では \mu = \sigma^2 = \lambda なので:
分散が \dfrac{1}{4n} となり、パラメータ λ に依存しない。これを分散安定化変換という。ポアソン分布のデータには平方根変換が有効である。
f(x) = \dfrac{1}{x}、f'(x) = -\dfrac{1}{x^2}。\mu = \dfrac{1}{\theta} より f'(\mu) = -\theta^2。
デルタ法より:
よって \hat{\theta} \sim N\left( \theta, \dfrac{\theta^2}{n} \right)(近似的に)。
まとめ
| 項目 | 内容 |
|---|---|
| 目的 | 標本平均の関数 f(\bar{X}) の分布を求める |
| 考え方 | 曲線を接線で近似する(テイラー展開) |
| 近似分散 | \dfrac{(f'(\mu))^2 \sigma^2}{n}(傾きの二乗で増幅) |
| 前提条件 | f が滑らか、f'(\mu) \neq 0、n が十分大きい |
| f'(μ) = 0 の場合 | 2次のデルタ法を使用(カイ二乗分布に収束) |
Pythonで検証する
デルタ法の結果をシミュレーションで確認する。f(x) = x^2、\mu = 3、\sigma = 2 の場合。
import numpy as np
np.random.seed(42)
# パラメータ
mu, sigma = 3.0, 2.0
n_simulations = 100000
print("=== デルタ法の検証: f(x) = x² ===")
print(f"μ = {mu}, σ = {sigma}")
print(f"f'(μ) = 2μ = {2*mu}")
print(f"理論的な分散係数: (f'(μ))² × σ² = {(2*mu)**2 * sigma**2}")
print()
for n in [30, 100, 500]:
# 正規分布から標本平均を生成
X_bar = np.random.normal(mu, sigma/np.sqrt(n), n_simulations)
# f(X_bar) = X_bar²
f_X_bar = X_bar ** 2
# 理論値
theory_mean = mu ** 2 # = 9
theory_var = (2*mu)**2 * sigma**2 / n
# シミュレーション結果
sim_mean = f_X_bar.mean()
sim_var = f_X_bar.var()
print(f"n = {n}:")
print(f" 平均: 理論 {theory_mean:.2f}, 実測 {sim_mean:.2f}")
print(f" 分散: 理論 {theory_var:.2f}, 実測 {sim_var:.2f}")
print()
n が大きくなるにつれて、シミュレーション結果が理論値に近づいている。