指数分布(exponential distribution)は、ある事象が起こるまでの「待ち時間」をモデル化する連続型確率分布である。ポアソン分布に従うポアソン過程において、次のイベントが発生するまでの時間間隔は指数分布に従う。
指数分布は以下のような場面で現れる。
- 機械が故障するまでの時間
- コールセンターに次の電話がかかってくるまでの時間
- 放射性原子が崩壊するまでの時間
- 患者が来院するまでの待ち時間
指数分布の最も重要な特徴は無記憶性(memoryless property)である。これは、すでにある時間が経過したという情報が、残りの待ち時間の分布に影響を与えないという性質である。
定義
パラメータ \lambda > 0 に対して、確率変数 X が以下の確率密度関数をもつとき、X は指数分布に従うという。この分布を \text{Exp}(\lambda) と表記する。
パラメータ \lambda はレート(率)パラメータと呼ばれ、単位時間あたりのイベント発生回数の期待値を表す。\lambda が大きいほど、イベントは頻繁に発生し、待ち時間は短くなる。
累積分布関数
指数分布の累積分布関数は、確率密度関数を積分することで明示的に得られる。
【導出】 x > 0 に対して
生存関数(x より長く待つ確率)は特にシンプルな形をとる。
グラフ
異なる \lambda の値に対する確率密度関数と累積分布関数のグラフを示す。
\lambda が大きいほど、分布は x = 0 付近に集中し、急速に減衰する。これは \lambda が大きいとイベントが頻繁に起こり、待ち時間が短くなる傾向を表している。
期待値と分散
指数分布 \text{Exp}(\lambda) の期待値と分散は次のようになる。
【期待値の導出】 部分積分を用いて計算する。
【分散の導出】 E[X^2] を計算し、V[X] = E[X^2] - (E[X])^2 を用いる。
よって V[X] = \dfrac{2}{\lambda^2} - \dfrac{1}{\lambda^2} = \dfrac{1}{\lambda^2} となる。
モーメント母関数
指数分布のモーメント母関数は次の形をとる。
【導出】
収束条件として t < \lambda が必要である。
無記憶性
指数分布の最も重要な性質は無記憶性(memoryless property)である。
X \sim \text{Exp}(\lambda) のとき、任意の t_1, t_2 \geq 0 に対して
この性質は「すでに t_1 時間待ったという情報は、今後さらに t_2 時間以上待つ確率に影響しない」ことを意味する。
【証明】 生存関数 P(X \geq t) = e^{-\lambda t} を用いて
連続型分布で無記憶性をもつのは指数分布のみである。離散型では幾何分布が無記憶性をもつ。
ガンマ分布との関係
指数分布はガンマ分布の特殊ケースである。ガンマ分布 \text{Ga}(a, b) において a = 1 とすると、レート \lambda = \dfrac{1}{b} の指数分布 \text{Exp}\left(\dfrac{1}{b}\right) に一致する。
また、独立な指数分布の和はガンマ分布に従う。X_1, X_2, \ldots, X_n が独立に \text{Exp}(\lambda) に従うとき
計算例
ある機械の寿命が指数分布 \text{Exp}(0.5) に従うとする(単位:年)。
(1)期待寿命を求める。
(2)2年以内に故障する確率を求める。
(3)すでに1年動作している機械が、さらに2年以上動作する確率を求める。
無記憶性より
練習問題
約86.5%の確率で1分以内に次の電話が来る。
中央値を m とすると P(X \leq m) = 0.5 より
中央値は \dfrac{\ln 2}{\lambda} \approx \dfrac{0.693}{\lambda} となる。期待値 1/\lambda より小さい。
P(X > x_{0.75}) = 0.25 より
上側25%点は \dfrac{\ln 4}{\lambda} \approx \dfrac{1.386}{\lambda} となる。
まとめ
| 項目 | 内容 |
|---|---|
| 分布名 | 指数分布(exponential distribution) |
| 表記 | \text{Exp}(\lambda) |
| パラメータ | \lambda > 0(レートパラメータ) |
| 確率密度関数 | f(x) = \lambda e^{-\lambda x}, \quad x > 0 |
| 累積分布関数 | F(x) = 1 - e^{-\lambda x} |
| 期待値 | E[X] = \dfrac{1}{\lambda} |
| 分散 | V[X] = \dfrac{1}{\lambda^2} |
| モーメント母関数 | M(t) = \dfrac{\lambda}{\lambda - t}, \quad t < \lambda |
| 特徴 | 無記憶性をもつ唯一の連続型分布 |
| 応用例 | 待ち時間、機械の寿命、ポアソン過程の到着間隔 |
Pythonで実装する
Pythonを使って指数分布の計算やシミュレーションを行う。
import numpy as np
from scipy import stats
# パラメータ設定
lam = 0.5 # レートパラメータ
print(f"=== 指数分布 Exp({lam}) ===")
# scipy.stats では scale = 1/λ
dist = stats.expon(scale=1/lam)
print(f"期待値: E[X] = 1/λ = {dist.mean():.4f}")
print(f"分散 : V[X] = 1/λ² = {dist.var():.4f}")
# 確率密度関数
print(f"\n確率密度関数 f(x) = λe^(-λx):")
for x in [0, 1, 2, 3]:
print(f" f({x}) = {dist.pdf(x):.6f}")
# 累積分布関数
print(f"\n累積分布関数 F(x) = 1 - e^(-λx):")
for x in [1, 2, 3, 4]:
print(f" P(X ≤ {x}) = {dist.cdf(x):.4f}")
# 確率計算
print(f"\n確率計算:")
print(f" P(X > 2) = {1 - dist.cdf(2):.4f}")
print(f" P(1 ≤ X ≤ 3) = {dist.cdf(3) - dist.cdf(1):.4f}")
# 分位点
print(f"\n分位点:")
print(f" 中央値 = ln(2)/λ = {dist.ppf(0.5):.4f}")
print(f" 上側25%点 = ln(4)/λ = {dist.ppf(0.75):.4f}")
# 無記憶性の確認
t1, t2 = 2, 3
p_cond = (1 - dist.cdf(t1 + t2)) / (1 - dist.cdf(t1))
p_uncond = 1 - dist.cdf(t2)
print(f"\n無記憶性の確認:")
print(f" P(X ≥ {t1+t2} | X ≥ {t1}) = {p_cond:.6f}")
print(f" P(X ≥ {t2}) = {p_uncond:.6f}")
# シミュレーション
np.random.seed(42)
n_samples = 10000
samples = np.random.exponential(scale=1/lam, size=n_samples)
print(f"\nシミュレーション(n={n_samples}):")
print(f"標本平均: {np.mean(samples):.4f}")
print(f"標本分散: {np.var(samples, ddof=0):.4f}")
無記憶性が成り立つことが確認できる。scipy.stats.expon では scale=1/λ を指定することに注意が必要である。