確率分布を特徴づける方法として、確率密度関数や累積分布関数はよく知られています。しかし、独立な確率変数の和の分布を求める場合や、分布の収束を議論する場合には、これらの関数では計算が複雑になることがあります。
特性関数(characteristic function) は、確率分布のフーリエ変換であり、上記の問題をエレガントに解決する強力なツールです。独立和の分布が特性関数の積に対応するという性質により、中心極限定理の厳密な証明にも不可欠な役割を果たしています。
本記事の内容
- 特性関数 $\varphi_X(t) = E[e^{itX}]$ の定義と基本性質
- モーメント母関数との関係
- 一意性定理、連続性定理、反転公式
- 主要分布の特性関数の導出(正規分布、ポアソン分布、指数分布)
- 独立和の特性関数
- 特性関数による中心極限定理の証明スケッチ
- Pythonでの特性関数の可視化と反転公式による密度復元
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
特性関数とは
定義
確率変数 $X$ の 特性関数(characteristic function) は、実数 $t$ に対して次のように定義されます。
$$ \begin{equation} \varphi_X(t) = E[e^{itX}] = E[\cos(tX)] + i\,E[\sin(tX)] \end{equation} $$
ここで $i$ は虚数単位($i^2 = -1$)です。$X$ が確率密度関数 $f(x)$ を持つ連続型確率変数の場合、
$$ \varphi_X(t) = \int_{-\infty}^{\infty} e^{itx} f(x)\,dx $$
これは密度関数 $f(x)$ のフーリエ変換そのものです(符号の規約によっては逆フーリエ変換とする流儀もあります)。
離散型確率変数の場合は、
$$ \varphi_X(t) = \sum_k e^{itx_k} P(X = x_k) $$
直感的な理解
特性関数は確率分布の「周波数領域」での表現です。密度関数が「$x$ の各値にどのくらいの確率があるか」を表すのに対し、特性関数は「周波数 $t$ の正弦波で分布を分析したらどう見えるか」を表します。
特性関数の基本性質
特性関数は以下の基本的な性質を持ちます。
性質1:存在性
任意の確率変数 $X$ に対して $\varphi_X(t)$ は全ての実数 $t$ で存在します。
$$ |\varphi_X(t)| = |E[e^{itX}]| \leq E[|e^{itX}|] = E[1] = 1 $$
$|e^{itX}| = 1$ であるため、モーメント母関数と異なり、特性関数は常に存在します。これが特性関数の大きな利点です。
性質2:$\varphi_X(0) = 1$
$$ \varphi_X(0) = E[e^{i \cdot 0 \cdot X}] = E[1] = 1 $$
性質3:有界性
$$ |\varphi_X(t)| \leq 1 \quad \text{for all } t \in \mathbb{R} $$
性質4:エルミート対称性
$$ \varphi_X(-t) = E[e^{-itX}] = \overline{E[e^{itX}]} = \overline{\varphi_X(t)} $$
ここで $\overline{z}$ は $z$ の複素共役です。特に $X$ が対称分布($X$ と $-X$ が同分布)なら $\varphi_X(t)$ は実数値になります。
性質5:一様連続性
$\varphi_X(t)$ は $\mathbb{R}$ 上で一様連続です。
性質6:線形変換
$Y = aX + b$ のとき、
$$ \begin{align} \varphi_Y(t) &= E[e^{it(aX+b)}] \\ &= e^{itb} E[e^{i(ta)X}] \\ &= e^{itb}\,\varphi_X(at) \end{align} $$
モーメントとの関係
モーメント母関数との関係
モーメント母関数 $M_X(t) = E[e^{tX}]$ が存在するとき、特性関数は
$$ \varphi_X(t) = M_X(it) $$
の関係にあります。つまり、モーメント母関数の変数を $it$ に置き換えたものが特性関数です。
特性関数からモーメントを求める
$E[|X|^n] < \infty$ ならば、$\varphi_X(t)$ は $n$ 回微分可能であり、
$$ \begin{equation} E[X^n] = \frac{1}{i^n}\varphi_X^{(n)}(0) = (-i)^n \varphi_X^{(n)}(0) \end{equation} $$
証明: $e^{itX}$ を $t$ で微分すると、
$$ \frac{d}{dt}e^{itX} = iX\,e^{itX} $$
期待値を取る操作と微分の順序交換が可能なとき($E[|X|] < \infty$ で保証される)、
$$ \varphi_X'(t) = E[iX\,e^{itX}] $$
$t = 0$ を代入すると、
$$ \varphi_X'(0) = E[iX\,e^0] = iE[X] $$
したがって $E[X] = \frac{1}{i}\varphi_X'(0) = -i\,\varphi_X'(0)$ です。
$n$ 回微分を繰り返すと、
$$ \varphi_X^{(n)}(t) = E[(iX)^n e^{itX}] = i^n E[X^n e^{itX}] $$
$t = 0$ とおいて、
$$ \varphi_X^{(n)}(0) = i^n E[X^n] $$
よって $E[X^n] = \frac{1}{i^n}\varphi_X^{(n)}(0) = (-i)^n \varphi_X^{(n)}(0)$ が得られます。
テイラー展開
$E[|X|^n] < \infty$ のとき、
$$ \varphi_X(t) = \sum_{k=0}^{n}\frac{(it)^k}{k!}E[X^k] + o(t^n) $$
特に $E[X^2] < \infty$ のとき、
$$ \varphi_X(t) = 1 + itE[X] – \frac{t^2}{2}E[X^2] + o(t^2) $$
一意性定理
特性関数の最も重要な性質は、分布を一意に決定するということです。
定理(一意性定理): 2つの確率変数 $X$ と $Y$ について、
$$ \varphi_X(t) = \varphi_Y(t) \quad \text{for all } t \in \mathbb{R} $$
ならば $X$ と $Y$ は同じ分布に従う。
この定理により、2つの分布が等しいことを示すために、特性関数が等しいことを示せばよくなります。
反転公式
反転公式の主定理
特性関数から元の分布(密度関数)を復元する公式を反転公式といいます。
定理(反転公式): $X$ が確率密度関数 $f(x)$ を持ち、$\varphi_X(t)$ が絶対可積分($\int_{-\infty}^{\infty}|\varphi_X(t)|\,dt < \infty$)ならば、
$$ \begin{equation} f(x) = \frac{1}{2\pi}\int_{-\infty}^{\infty}e^{-itx}\varphi_X(t)\,dt \end{equation} $$
これはフーリエ逆変換の公式そのものです。
導出: 特性関数の定義を代入します。
$$ \frac{1}{2\pi}\int_{-\infty}^{\infty}e^{-itx}\varphi_X(t)\,dt = \frac{1}{2\pi}\int_{-\infty}^{\infty}e^{-itx}\left(\int_{-\infty}^{\infty}e^{ity}f(y)\,dy\right)dt $$
積分の順序を交換すると($\varphi_X$ の絶対可積分性が保証する)、
$$ = \frac{1}{2\pi}\int_{-\infty}^{\infty}f(y)\left(\int_{-\infty}^{\infty}e^{it(y-x)}\,dt\right)dy $$
内側の積分はディラックのデルタ関数の積分表示 $\delta(y – x) = \frac{1}{2\pi}\int_{-\infty}^{\infty}e^{it(y-x)}\,dt$ です。したがって、
$$ = \int_{-\infty}^{\infty}f(y)\delta(y-x)\,dy = f(x) $$
数値的な反転公式
実用上は無限区間の積分を打ち切る必要があります。
$$ f(x) \approx \frac{1}{2\pi}\int_{-T}^{T}e^{-itx}\varphi_X(t)\,dt $$
$T$ を十分大きく取ることで精度が向上します。
連続性定理
定理(レヴィの連続性定理): 確率変数の列 $\{X_n\}$ と確率変数 $X$ に対して、
$$ X_n \xrightarrow{d} X \quad \Longleftrightarrow \quad \varphi_{X_n}(t) \to \varphi_X(t) \quad \text{for all } t \in \mathbb{R} $$
が成り立ちます。ここで $\xrightarrow{d}$ は分布収束を表します。
この定理は中心極限定理の証明で決定的な役割を果たします。分布の収束を示すために、特性関数の各点収束を示せばよいのです。
主要分布の特性関数の導出
正規分布 $N(\mu, \sigma^2)$
密度関数 $f(x) = \frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)$ の特性関数を導出します。
まず標準正規分布 $Z \sim N(0,1)$ の特性関数を求めます。
$$ \begin{align} \varphi_Z(t) &= E[e^{itZ}] = \int_{-\infty}^{\infty}e^{itz}\frac{1}{\sqrt{2\pi}}e^{-z^2/2}\,dz \\ &= \frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}\exp\left(itz – \frac{z^2}{2}\right)dz \end{align} $$
指数部分を平方完成します。
$$ \begin{align} itz – \frac{z^2}{2} &= -\frac{1}{2}(z^2 – 2itz) \\ &= -\frac{1}{2}(z – it)^2 – \frac{t^2}{2} \end{align} $$
したがって、
$$ \begin{align} \varphi_Z(t) &= \frac{1}{\sqrt{2\pi}}e^{-t^2/2}\int_{-\infty}^{\infty}\exp\left(-\frac{(z-it)^2}{2}\right)dz \end{align} $$
$w = z – it$ と変数変換すると、積分経路は複素平面上で実軸から $-it$ だけ平行移動しますが、被積分関数は正則なので(コーシーの積分定理により)実軸上の積分と等しくなります。
$$ \int_{-\infty}^{\infty}\exp\left(-\frac{w^2}{2}\right)dw = \sqrt{2\pi} $$
これはガウス積分です。よって、
$$ \begin{equation} \varphi_Z(t) = e^{-t^2/2} \end{equation} $$
$X = \sigma Z + \mu$ なので、線形変換の性質より、
$$ \begin{align} \varphi_X(t) &= e^{it\mu}\,\varphi_Z(\sigma t) \\ &= e^{it\mu}\,e^{-\sigma^2 t^2/2} \\ &= \exp\left(i\mu t – \frac{\sigma^2 t^2}{2}\right) \end{align} $$
$$ \begin{equation} \varphi_X(t) = \exp\left(i\mu t – \frac{\sigma^2 t^2}{2}\right) \end{equation} $$
ポアソン分布 $\text{Poi}(\lambda)$
$P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}$($k = 0, 1, 2, \dots$)の特性関数を導出します。
$$ \begin{align} \varphi_X(t) &= E[e^{itX}] = \sum_{k=0}^{\infty}e^{itk}\frac{\lambda^k e^{-\lambda}}{k!} \\ &= e^{-\lambda}\sum_{k=0}^{\infty}\frac{(\lambda e^{it})^k}{k!} \\ &= e^{-\lambda}\exp(\lambda e^{it}) \quad (\because e^{z}の冪級数展開) \\ &= \exp(\lambda(e^{it} – 1)) \end{align} $$
$$ \begin{equation} \varphi_X(t) = \exp\left(\lambda(e^{it} – 1)\right) \end{equation} $$
モーメントの確認:
$$ \varphi_X'(t) = i\lambda e^{it} \exp(\lambda(e^{it}-1)) $$
$t=0$ を代入すると $\varphi_X'(0) = i\lambda$。よって $E[X] = -i \cdot i\lambda = \lambda$ が確認できます。
$$ \varphi_X”(t) = [i\lambda e^{it} \cdot i\lambda e^{it} + i^2\lambda e^{it}]\exp(\lambda(e^{it}-1)) $$
$t = 0$ とおくと $\varphi_X”(0) = -\lambda^2 – \lambda$。
$E[X^2] = (-i)^2 \varphi_X”(0) = (-1)(-\lambda^2 – \lambda) = \lambda^2 + \lambda$。
$\text{Var}(X) = E[X^2] – (E[X])^2 = \lambda^2 + \lambda – \lambda^2 = \lambda$ が確認できます。
指数分布 $\text{Exp}(\lambda)$
密度関数 $f(x) = \lambda e^{-\lambda x}$($x \geq 0$)の特性関数を導出します。
$$ \begin{align} \varphi_X(t) &= \int_0^{\infty}e^{itx}\lambda e^{-\lambda x}\,dx \\ &= \lambda \int_0^{\infty}e^{-(λ – it)x}\,dx \\ &= \lambda \left[\frac{e^{-(\lambda-it)x}}{-(\lambda-it)}\right]_0^{\infty} \end{align} $$
$\lambda > 0$ なので $\text{Re}(\lambda – it) = \lambda > 0$ より、$x \to \infty$ で $e^{-(\lambda – it)x} \to 0$ です。
$$ \begin{align} \varphi_X(t) &= \lambda \cdot \frac{1}{\lambda – it} = \frac{\lambda}{\lambda – it} \end{align} $$
$$ \begin{equation} \varphi_X(t) = \frac{\lambda}{\lambda – it} \end{equation} $$
モーメントの確認:
$$ \varphi_X'(t) = \frac{i\lambda}{(\lambda – it)^2} $$
$t=0$ とおくと $\varphi_X'(0) = \frac{i}{\lambda}$。$E[X] = -i \cdot \frac{i}{\lambda} = \frac{1}{\lambda}$ が確認できます。
独立和の特性関数
畳み込みと特性関数
独立な確率変数 $X$ と $Y$ の和 $S = X + Y$ の分布は、密度関数の畳み込み $f_S = f_X * f_Y$ で表されます。畳み込み計算は一般に複雑ですが、特性関数を使えば極めて簡単になります。
定理: $X$ と $Y$ が独立ならば、
$$ \varphi_{X+Y}(t) = \varphi_X(t) \cdot \varphi_Y(t) $$
証明:
$$ \begin{align} \varphi_{X+Y}(t) &= E[e^{it(X+Y)}] \\ &= E[e^{itX} \cdot e^{itY}] \\ &= E[e^{itX}] \cdot E[e^{itY}] \quad (\because X, Y \text{ が独立}) \\ &= \varphi_X(t) \cdot \varphi_Y(t) \end{align} $$
独立性により期待値の積への分解が正当化されます。
$n$ 個の独立和への拡張
$X_1, X_2, \dots, X_n$ が互いに独立ならば、
$$ \varphi_{X_1 + X_2 + \cdots + X_n}(t) = \prod_{i=1}^{n}\varphi_{X_i}(t) $$
応用例:正規分布の再生性
$X \sim N(\mu_1, \sigma_1^2)$、$Y \sim N(\mu_2, \sigma_2^2)$ が独立のとき、
$$ \begin{align} \varphi_{X+Y}(t) &= \exp\left(i\mu_1 t – \frac{\sigma_1^2 t^2}{2}\right) \cdot \exp\left(i\mu_2 t – \frac{\sigma_2^2 t^2}{2}\right) \\ &= \exp\left(i(\mu_1 + \mu_2)t – \frac{(\sigma_1^2 + \sigma_2^2)t^2}{2}\right) \end{align} $$
これは $N(\mu_1 + \mu_2, \sigma_1^2 + \sigma_2^2)$ の特性関数です。一意性定理により、$X + Y \sim N(\mu_1 + \mu_2, \sigma_1^2 + \sigma_2^2)$ が示されました。
応用例:ポアソン分布の再生性
$X \sim \text{Poi}(\lambda_1)$、$Y \sim \text{Poi}(\lambda_2)$ が独立のとき、
$$ \varphi_{X+Y}(t) = \exp(\lambda_1(e^{it}-1)) \cdot \exp(\lambda_2(e^{it}-1)) = \exp((\lambda_1 + \lambda_2)(e^{it}-1)) $$
これは $\text{Poi}(\lambda_1 + \lambda_2)$ の特性関数であり、ポアソン分布の再生性が示されました。
特性関数による中心極限定理の証明スケッチ
$X_1, X_2, \dots, X_n$ が iid で $E[X_i] = \mu$、$\text{Var}(X_i) = \sigma^2 < \infty$ とします。標準化された標本平均を
$$ Z_n = \frac{\bar{X}_n – \mu}{\sigma / \sqrt{n}} = \frac{\sum_{i=1}^{n}(X_i – \mu)}{\sigma\sqrt{n}} $$
とおき、$Z_n \xrightarrow{d} N(0,1)$ を示します。
Step 1:標準化変数の特性関数
$Y_i = \frac{X_i – \mu}{\sigma}$($E[Y_i] = 0$、$\text{Var}(Y_i) = 1$)とおくと、$Z_n = \frac{1}{\sqrt{n}}\sum_{i=1}^{n}Y_i$ です。
$$ \varphi_{Z_n}(t) = \prod_{i=1}^{n}\varphi_{Y_i}\left(\frac{t}{\sqrt{n}}\right) = \left[\varphi_Y\left(\frac{t}{\sqrt{n}}\right)\right]^n $$
Step 2:テイラー展開
$E[Y] = 0$、$E[Y^2] = 1$ なので、特性関数のテイラー展開は、
$$ \varphi_Y(s) = 1 + is\,E[Y] + \frac{(is)^2}{2}E[Y^2] + o(s^2) = 1 – \frac{s^2}{2} + o(s^2) $$
$s = t/\sqrt{n}$ を代入すると、
$$ \varphi_Y\left(\frac{t}{\sqrt{n}}\right) = 1 – \frac{t^2}{2n} + o\left(\frac{1}{n}\right) $$
Step 3:$n$ 乗の極限
$$ \varphi_{Z_n}(t) = \left[1 – \frac{t^2}{2n} + o\left(\frac{1}{n}\right)\right]^n $$
ここで、$\lim_{n \to \infty}(1 + a/n)^n = e^a$ を使います。$a = -t^2/2$ なので、
$$ \lim_{n \to \infty}\varphi_{Z_n}(t) = e^{-t^2/2} $$
Step 4:連続性定理の適用
$e^{-t^2/2}$ は $N(0,1)$ の特性関数であり、$t = 0$ で連続です。レヴィの連続性定理により、
$$ Z_n \xrightarrow{d} N(0,1) $$
これが中心極限定理です。
Pythonでの実装
可視化1:主要分布の特性関数
特性関数の実部と虚部をプロットし、各分布の特性関数がどのような形をしているか確認します。
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(-5, 5, 500)
# 正規分布 N(0,1) の特性関数: exp(-t^2/2)
cf_normal = np.exp(-t**2 / 2)
# 正規分布 N(2, 1) の特性関数: exp(2it - t^2/2)
cf_normal2 = np.exp(2j * t - t**2 / 2)
# ポアソン分布 Poi(3) の特性関数: exp(3(e^{it} - 1))
cf_poisson = np.exp(3 * (np.exp(1j * t) - 1))
# 指数分布 Exp(1) の特性関数: 1/(1 - it)
cf_exp = 1.0 / (1.0 - 1j * t)
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
distributions = [
('N(0,1)', cf_normal),
('N(2,1)', cf_normal2),
('Poi(3)', cf_poisson),
('Exp(1)', cf_exp),
]
for ax, (name, cf) in zip(axes.ravel(), distributions):
ax.plot(t, cf.real, 'b-', linewidth=2, label='Real part')
ax.plot(t, cf.imag, 'r--', linewidth=2, label='Imaginary part')
ax.plot(t, np.abs(cf), 'g:', linewidth=2, label='Modulus')
ax.axhline(y=0, color='gray', linewidth=0.5)
ax.axvline(x=0, color='gray', linewidth=0.5)
ax.set_title(f'Characteristic Function of {name}', fontsize=13)
ax.set_xlabel('t', fontsize=11)
ax.set_ylabel(r'$\varphi(t)$', fontsize=11)
ax.legend(fontsize=10)
ax.set_ylim(-1.5, 1.5)
plt.tight_layout()
plt.savefig("characteristic_functions.png", dpi=150, bbox_inches="tight")
plt.show()
標準正規分布の特性関数は実数値のガウス関数(左右対称な分布なので虚部がゼロ)であることが確認できます。ポアソン分布や指数分布は非対称なので虚部が現れます。
可視化2:反転公式による密度関数の復元
特性関数から数値的にフーリエ逆変換を行い、元の密度関数を復元します。
import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate, stats
def invert_cf(cf_func, x_values, T=30, n_points=10000):
"""
反転公式による密度関数の数値的復元
f(x) = (1/2pi) * int_{-T}^{T} exp(-itx) * phi(t) dt
"""
t = np.linspace(-T, T, n_points)
dt = t[1] - t[0]
densities = np.zeros(len(x_values))
for i, x in enumerate(x_values):
integrand = np.exp(-1j * t * x) * cf_func(t)
# 台形公式で数値積分
densities[i] = np.real(np.trapz(integrand, t)) / (2 * np.pi)
return densities
# 正規分布 N(2, 1.5^2)
mu, sigma = 2.0, 1.5
cf_normal = lambda t: np.exp(1j * mu * t - sigma**2 * t**2 / 2)
# ポアソン分布 Poi(5) — 離散なので密度関数に近い形で復元
lam = 5.0
cf_poisson = lambda t: np.exp(lam * (np.exp(1j * t) - 1))
# 指数分布 Exp(2)
rate = 2.0
cf_exp_dist = lambda t: rate / (rate - 1j * t)
fig, axes = plt.subplots(1, 3, figsize=(18, 5))
# --- 正規分布の復元 ---
ax = axes[0]
x = np.linspace(-3, 7, 300)
f_recovered = invert_cf(cf_normal, x, T=30, n_points=10000)
f_true = stats.norm.pdf(x, mu, sigma)
ax.plot(x, f_true, 'b-', linewidth=2.5, label='True density')
ax.plot(x, f_recovered, 'r--', linewidth=2, label='Inversion formula')
ax.set_title(f'N({mu}, {sigma**2})', fontsize=13)
ax.set_xlabel('x', fontsize=11)
ax.set_ylabel('f(x)', fontsize=11)
ax.legend(fontsize=10)
# --- ポアソン分布の復元(離散確率を連続近似) ---
ax = axes[1]
x_pois = np.linspace(-0.5, 15, 500)
f_recovered_pois = invert_cf(cf_poisson, x_pois, T=np.pi, n_points=10000)
# 真の確率質量関数
k_vals = np.arange(0, 16)
pmf_true = stats.poisson.pmf(k_vals, lam)
ax.bar(k_vals, pmf_true, alpha=0.5, color='steelblue', label='True PMF')
ax.plot(x_pois, f_recovered_pois, 'r-', linewidth=2, label='Inversion formula')
ax.set_title(f'Poi({lam})', fontsize=13)
ax.set_xlabel('k', fontsize=11)
ax.set_ylabel('P(X=k)', fontsize=11)
ax.legend(fontsize=10)
# --- 指数分布の復元 ---
ax = axes[2]
x_exp = np.linspace(0.01, 4, 300)
f_recovered_exp = invert_cf(cf_exp_dist, x_exp, T=50, n_points=20000)
f_true_exp = stats.expon.pdf(x_exp, scale=1.0/rate)
ax.plot(x_exp, f_true_exp, 'b-', linewidth=2.5, label='True density')
ax.plot(x_exp, f_recovered_exp, 'r--', linewidth=2, label='Inversion formula')
ax.set_title(f'Exp({rate})', fontsize=13)
ax.set_xlabel('x', fontsize=11)
ax.set_ylabel('f(x)', fontsize=11)
ax.legend(fontsize=10)
plt.tight_layout()
plt.savefig("inversion_formula.png", dpi=150, bbox_inches="tight")
plt.show()
反転公式により、特性関数から元の密度関数がほぼ完全に復元されることが確認できます。ポアソン分布は離散分布ですが、反転公式を適切な範囲($[-\pi, \pi]$)で適用すると確率質量関数の包絡線に近い形が得られます。
可視化3:中心極限定理の特性関数的理解
一様分布 $U(0,1)$ の独立和を標準化したとき、特性関数が標準正規分布の特性関数 $e^{-t^2/2}$ に収束する様子を可視化します。
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(-6, 6, 500)
# U(0,1) の特性関数: (e^{it} - 1)/(it)
def cf_uniform(t):
result = np.zeros_like(t, dtype=complex)
nonzero = t != 0
result[nonzero] = (np.exp(1j * t[nonzero]) - 1) / (1j * t[nonzero])
result[~nonzero] = 1.0 # t=0 での極限
return result
# 標準化された n 個の和: Z_n = (S_n - n/2) / sqrt(n/12)
# phi_{Z_n}(t) = [phi_Y(t/sqrt(n))]^n where Y = (X - 1/2)/sqrt(1/12)
# phi_Y(s) = exp(-is/2) * phi_X(s) / ... -> phi_X(s*sigma) * exp(-i*mu*s)
# 直接: phi_{Z_n}(t) = [phi_U(t/(sigma*sqrt(n))) * exp(-i*mu*t/(sigma*sqrt(n)))]^n
mu_u = 0.5 # E[U]
sigma_u = np.sqrt(1/12) # std[U]
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
ns = [1, 2, 5, 10, 30]
colors = plt.cm.viridis(np.linspace(0, 0.9, len(ns)))
# 実部のプロット
ax = axes[0]
for n, color in zip(ns, colors):
s = t / (sigma_u * np.sqrt(n))
cf_Zn = (cf_uniform(s) * np.exp(-1j * mu_u * s))**n
ax.plot(t, cf_Zn.real, color=color, linewidth=1.5, label=f'n={n}')
# N(0,1) の特性関数
ax.plot(t, np.exp(-t**2/2), 'k--', linewidth=2.5, label='N(0,1)')
ax.set_title('Real part of CF (CLT convergence)', fontsize=13)
ax.set_xlabel('t', fontsize=11)
ax.set_ylabel(r'Re[$\varphi_{Z_n}(t)$]', fontsize=11)
ax.legend(fontsize=9)
ax.set_ylim(-0.5, 1.1)
# 絶対値のプロット
ax = axes[1]
for n, color in zip(ns, colors):
s = t / (sigma_u * np.sqrt(n))
cf_Zn = (cf_uniform(s) * np.exp(-1j * mu_u * s))**n
ax.plot(t, np.abs(cf_Zn), color=color, linewidth=1.5, label=f'n={n}')
ax.plot(t, np.exp(-t**2/2), 'k--', linewidth=2.5, label='N(0,1)')
ax.set_title('Modulus of CF (CLT convergence)', fontsize=13)
ax.set_xlabel('t', fontsize=11)
ax.set_ylabel(r'$|\varphi_{Z_n}(t)|$', fontsize=11)
ax.legend(fontsize=9)
ax.set_ylim(-0.1, 1.1)
plt.tight_layout()
plt.savefig("clt_characteristic.png", dpi=150, bbox_inches="tight")
plt.show()
$n$ が増えるにつれて、一様分布の標準化和の特性関数が、$N(0,1)$ のガウス型特性関数 $e^{-t^2/2}$ に収束していく様子が視覚的に確認できます。これがレヴィの連続性定理による中心極限定理の証明を直感的に表しています。
まとめ
本記事では、特性関数の理論について包括的に解説しました。
- 特性関数 $\varphi_X(t) = E[e^{itX}]$ はモーメント母関数と異なり、任意の確率変数に対して常に存在します
- 反転公式 $f(x) = \frac{1}{2\pi}\int e^{-itx}\varphi_X(t)\,dt$ により、特性関数から分布を復元できます
- 一意性定理により、特性関数が等しいことと分布が等しいことは同値です
- 正規分布、ポアソン分布、指数分布の特性関数を導出し、モーメントとの整合性を確認しました
- 独立和の特性関数は各特性関数の積になるため、畳み込み計算が大幅に簡単化されます
- 正規分布やポアソン分布の再生性を特性関数で証明しました
- 中心極限定理を特性関数のテイラー展開とレヴィの連続性定理で証明しました
- Pythonにより特性関数の可視化と反転公式による密度復元を実装しました
特性関数は確率論の理論的基盤として不可欠であり、極限定理や分布の特徴づけに広く活用されます。次のステップとして、以下の記事も参考にしてください。