Mímisbrunnr知恵の泉

← 確率過程 一覧

🎓 レベル:標準 | 重要度:A(橋渡し) 📎 前提:定常分布と収束詳細釣り合いと可逆連鎖出生死亡過程

要点(BLUF)

概念

確率過程の理論は2つの実務に直結します。1つは MCMC:複雑な分布から直接サンプルできなくても、その分布を定常分布とするマルコフ連鎖を設計すれば、エルゴード定理(定常分布と収束)で長期サンプルが目標分布に従います。もう1つは待ち行列:客の到着と退去を出生死亡過程で表せば、混雑の指標が定常分布から計算できます。

数式による定式化

MCMC(メトロポリス法):目標 π\pi に対し対称提案で採択確率 α=min(1,π/π)\alpha=\min(1,\pi_{\text{新}}/\pi_{\text{現}})。これは詳細釣り合い πipij=πjpji\pi_i p_{ij}=\pi_j p_{ji}詳細釣り合いと可逆連鎖)を満たすので π\pi が定常分布となり、

1Nn=1Nf(Xn)Eπ[f](エルゴード定理)\frac{1}{N}\sum_{n=1}^N f(X_n) \to \mathbb{E}_\pi[f] \quad (\text{エルゴード定理})

待ち行列 M/M/1:到着率 λ\lambda、サービス率 μ\muρ=λ/μ<1\rho=\lambda/\mu<1。定常分布 πn=(1ρ)ρn\pi_n=(1-\rho)\rho^n出生死亡過程)より

L=nnπn=ρ1ρ,W=1μλ,L=λW (リトルの法則)L = \sum_n n\,\pi_n = \frac{\rho}{1-\rho}, \qquad W = \frac{1}{\mu-\lambda}, \qquad \boxed{L = \lambda W}\ (\text{リトルの法則})

直観

具体例

(a) メトロポリス法が目標分布に収束すること、(b) M/M/1 のシミュレーションでリトルの法則 L=λWL=\lambda W が成り立つことを確認します。

import numpy as np
# (a) メトロポリス法で離散目標分布をサンプル
rng = np.random.default_rng(3)
target = np.array([1., 3., 5., 4., 2.]); target /= target.sum()
K = len(target); N = 1_500_000
s = 0; counts = np.zeros(K)
for _ in range(N):
    counts[s] += 1
    prop = rng.integers(0, K)                       # 対称提案
    if rng.random() < min(1.0, target[prop]/target[s]):
        s = prop
print("メトロポリス標本:", np.round(counts/N, 3))
print("目標分布        :", np.round(target, 3))

# (b) M/M/1 待ち行列とリトルの法則
rng = np.random.default_rng(4)
lam, mu, Tsim = 0.7, 1.0, 300000.0
t = 0.0; n = 0; area = 0.0; arr_q = []; soj = 0.0; n_dep = 0
next_arr = rng.exponential(1/lam); next_dep = np.inf
while t < Tsim:
    if next_arr < next_dep:
        area += n*(next_arr - t); t = next_arr; n += 1; arr_q.append(t)
        next_arr = t + rng.exponential(1/lam)
        if n == 1: next_dep = t + rng.exponential(1/mu)
    else:
        area += n*(next_dep - t); t = next_dep; n -= 1
        soj += t - arr_q.pop(0); n_dep += 1
        next_dep = t + rng.exponential(1/mu) if n > 0 else np.inf
L = area/Tsim; W = soj/n_dep
print(f"L={L:.4f}(理論 rho/(1-rho)={(lam/mu)/(1-lam/mu):.4f}) "
      f"W={W:.4f}(理論 1/(mu-lam)={1/(mu-lam):.4f})")
print(f"リトルの法則 L={L:.4f} vs lam*W={lam*W:.4f}")
# メトロポリス標本: [0.067 0.2   0.334 0.266 0.133]
# 目標分布        : [0.067 0.2   0.333 0.267 0.133]
# L=2.3332(理論 rho/(1-rho)=2.3333) W=3.3408(理論 1/(mu-lam)=3.3333)
# リトルの法則 L=2.3332 vs lam*W=2.3386

メトロポリス標本は目標分布に一致(収束理論+詳細釣り合い)。M/M/1 では L2.33L\approx2.33W3.33W\approx3.33、そして LλWL\approx\lambda W が成立します。

他過程との関係

数式の直観的意味

リトルの法則 L=λWL=\lambda W分布の詳細に依らず成り立つのは、それが本質的に「面積の二通りの数え方」だからです(時間軸で見た系内数の積分=客ごとの滞在時間の総和)。これは再生過程と再生定理の再生報酬定理の一例で、確率過程の長期平均の普遍性を体現します。MCMC の収束も待ち行列の安定も、根は同じ「エルゴード性=時間平均が空間平均に等しい」です。

⚠️ よくある誤解(※詳細は各分野へ)

対応シミュレーション

連続値目標へのメトロポリス、M/M/c や M/G/1 への拡張は stochastic-processes-study/simulations/ に置きます。

関連