パラメータ設定
p = P(1→2)、q = P(2→1)。再生で t を 0→50 までスイープし、初期分布から定常 π への指数収束を観察できます。
状態遷移図
2 つの円が状態 1, 2。円の大きさが現在ステップ t での確率に比例します。矢印は遷移確率 p (1→2) と q (2→1)、自己ループは滞在確率 (1−p), (1−q)。
P_1(t) の指数収束
横軸はステップ t (0〜50)、縦軸は状態 1 にいる確率 P_1(t)。水平破線は定常値 π_1、黄色マーカーは現在の t です。|1−p−q| が固有値 λ_2 で、収束速度を決めます。
理論・主要公式
2 状態マルコフ連鎖の遷移行列を $P = \begin{pmatrix} 1-p & p \\ q & 1-q \end{pmatrix}$ とおく。固有値は $\lambda_1 = 1$ と $\lambda_2 = 1-p-q$ で、定常分布は
$$\pi_1 = \frac{q}{p+q}, \qquad \pi_2 = \frac{p}{p+q}$$
$t$ ステップ後の状態 1 の確率は固有値分解から
$$P_1(t) = \pi_1 + (P_1(0) - \pi_1)\,(1-p-q)^t$$
99% 混合時間は $|P_1(t)-\pi_1| / |P_1(0)-\pi_1| = 0.01$ から $t_{\text{mix}} = \ln(0.01) / \ln|1-p-q|$ となります。$p+q \to 0$ または $\to 2$ で $\lambda_2 \to \pm 1$ となり、混合時間は発散します。
マルコフ連鎖シミュレーターとは
🙋
マルコフ連鎖って「未来は現在だけで決まる」やつですよね。それを 2 状態でやって何が面白いんですか?
🎓
いいところに気づいた。2 状態は最小サイズだけど、定常分布・固有値・混合時間というマルコフ連鎖の主要な概念がすべて閉形式で書ける唯一のサイズなんだ。例えば $\pi_1 = q/(p+q)$ という式は、p=0.30, q=0.40 を入れれば手計算で 0.5714 が出る。これを数値だけじゃなく状態図と収束カーブで「動く絵」として理解するのが本ツールの目的だ。
🙋
スライダーで p+q を 1 に近づけると、収束カーブがすぐ平らになりますね。なんでですか?
🎓
$\lambda_2 = 1-p-q$ が固有値で、これが 0 に近いと $\lambda_2^t$ が 1 ステップでほぼ消える。逆に p=q=0.01 みたいに 0 に近いと $\lambda_2 \approx 0.98$ になって $0.98^{10}=0.82$、$0.98^{50}=0.36$、ほとんど初期分布のままだ。$t_{\text{mix}}$ の式 $\ln(0.01)/\ln|\lambda_2|$ で見ると、$|\lambda_2|$ が 1 に近いほど分母が 0 に近づき発散する、というのが直感的に分かる。
🙋
p+q を 2 に近づける(両方 0.99)と $\lambda_2 \approx -0.98$ で負になりますよね。何が起きるんですか?
🎓
鋭い質問だ。負の固有値は「振動収束」を生む。$P_1(t)$ が $\pi_1$ の周りで 1 ステップごとに上下に振動しながら徐々に減衰する。再生ボタンでスイープすると、収束カーブがギザギザに振動するのが見える。これは周期 2 のマルコフ連鎖(バイパータイト)に近い状態で、純粋に周期的だと定常分布に収束しない。実用上は遅延再起や信号の交互変化を扱う場面で出てくる。
🙋
PageRank もマルコフ連鎖って聞きました。これと何が違うんですか?
🎓
本質は同じだ。PageRank は数十億ノードの巨大マルコフ連鎖で、各 Web ページが状態、リンクが遷移確率に対応する。求めるのは定常分布 $\pi$ で、それがページの「重要度」になる。本ツールの 2×2 行列を 10^9 × 10^9 にスケールアップしたものと思えばいい。実装はべき乗法(power iteration)で $\pi^{(t+1)} = \pi^{(t)} P$ を反復するだけで、本ツールの $P_1(t) = \pi_1 + (P_1(0)-\pi_1)\lambda^t$ を巨大次元でやっているだけだ。
よくある質問
2 状態マルコフ連鎖が「既約 (irreducible)」であるためには p>0 かつ q>0 が必要で、本ツールではスライダー範囲 0.01〜0.99 でこれを保証しています。さらに「非周期的 (aperiodic)」であれば(自己ループ 1−p>0 または 1−q>0 があれば自動的に成立)、Perron-Frobenius の定理から固有値 1 が単純で、対応する固有ベクトル(左固有ベクトル)が一意の定常分布 π となります。p+q=2 の極限では周期 2 になり収束しません(本ツールでは p+q≤1.98 の範囲)。
緩和時間は $\tau_{\text{rel}} = 1/(1-|\lambda_2|)$ で定義され、確率の差が $1/e \approx 0.368$ に減衰する特性時間です。混合時間 $t_{\text{mix}}$ は具体的なしきい値(本ツールでは 1%)に減衰するステップ数で、両者は $t_{\text{mix}} \approx \tau_{\text{rel}} \ln(1/\epsilon)$ の関係があります。本ツールの $t_{\text{mix}} = \ln(0.01)/\ln|\lambda_2|$ は ε=0.01 の場合の正確な離散ステップ数で、log-base による微小な丸め誤差で異なる文献の値と差が出ることがあります。
マルコフ信頼性解析 (Markov reliability analysis) は冗長系の故障率と修理率から「稼働⇄故障」の遷移確率を作り、可用性 (availability) を定常分布 π_稼働 = μ/(λ+μ) として求めます。これは本ツールの π_1 = q/(p+q) と同じ式で、p ↔ 故障率 λ、q ↔ 修理率 μ に対応します。FMEA や FTA がツリー構造で組み合わせ確率を計算するのに対し、マルコフモデルは時間発展(過渡状態から定常状態への収束)を扱える点で補完的です。離散事象シミュレーション (DES) や信頼性ブロック図のバックエンドにも現れます。
N 状態に拡張すると遷移行列は N×N になり、固有値は N 個(うち 1 つは必ず λ_1=1)出てきます。定常分布は左固有ベクトル $\pi P = \pi$ を解いて求めますが、3 状態以上では一般に閉形式が出ません。実装はべき乗法($\pi^{(t+1)} = \pi^{(t)} P$ を反復)が標準で、PageRank も同じ手法です。混合時間は 2 番目に大きい固有値 $|\lambda_2|$(スペクトラルギャップ)で決まり、$t_{\text{mix}} \approx \ln(1/\epsilon)/(1-|\lambda_2|)$ となります。本ツールの 2×2 はその最小サイズで、すべての概念が手計算で確認できる利点があります。
実世界での応用
信頼性工学・保全計画:製造ラインの設備が「稼働 (Up)」と「故障 (Down)」を行き来する単純モデルでは、平均故障時間 MTTF = 1/p、平均修理時間 MTTR = 1/q から定常稼働率 (Availability) が A = q/(p+q) で計算できます。本ツールで p=0.05, q=0.50 にすると A=0.909 つまり 90.9% の稼働率が得られ、これは工場保全部門が KPI として日常的に使う数字です。3 状態以上(稼働・劣化・故障)に拡張すれば予防保全の最適化にも使えます。
Web 検索・PageRank:Google PageRank は数百億 Web ページを状態とする超大規模マルコフ連鎖の定常分布を、ダンピング係数 0.85 のべき乗法で計算します。リンク構造が遷移行列、定常確率がページの重要度ランクとなり、本ツールの $\pi P = \pi$ を 10^11 次元で解いている形になります。レコメンドシステム(YouTube/Amazon の関連動画・商品)も同じ枠組みで、ランダムウォークによる定常分布として実装される例が多くあります。
強化学習・MDP:マルコフ決定過程 (Markov Decision Process) は、エージェントの行動 a を加えた拡張で、Bellman 方程式 V(s) = max_a [r(s,a) + γ Σ P(s'|s,a) V(s')] により最適政策を求めます。Q-learning や SARSA、Deep Q-Network (DQN) はすべてマルコフ性を仮定しており、AlphaGo・自動運転・ChatGPT の RLHF も背景にあるのは MDP です。本ツールは「行動なし・報酬なし」の基本マルコフ連鎖で、その下準備として固有値解析を直感的に理解できます。
自然言語処理・隠れマルコフモデル (HMM):音声認識・品詞タグ付け・遺伝子配列解析で使われる HMM は、観測できない隠れ状態のマルコフ連鎖と、各状態からの観測確率を組み合わせたモデルです。Viterbi アルゴリズム(最尤状態列)と Baum-Welch (EM) で学習しますが、ベースとなる遷移行列の固有値解析は本ツールと同じ枠組みです。Cell phones の T9 入力予測や DNA メチル化解析もこの応用です。
よくある誤解と注意点
最も多い誤解は、「定常分布に収束したら、そのあと状態は変動しない」と思うことです。実際には個々の遷移は確率的に起き続けており、長時間平均で状態 1 にいる時間の割合が π_1 に収束する、というのが正しい解釈です。例えば π_1=0.5714 は「100 ステップのうち約 57 ステップは状態 1」を意味し、毎ステップでは 1↔2 の遷移が確率 p, q で起き続けます。本ツールの確率カーブ P_1(t) は「無限個のサンプルパスをアンサンブル平均した期待値」であり、単一のサンプルパス(実現値)ではありません。
次に、「マルコフ性は過去をすべて忘れること」を「全履歴の情報がない」と誤解することです。マルコフ性 P(X_{t+1}|X_t, X_{t-1}, ...) = P(X_{t+1}|X_t) は「現在の状態 X_t に必要な情報がすべて凝縮されている」と解釈すべきで、過去の履歴は X_t に「埋め込まれて」います。例えば株価の単純なランダムウォークはマルコフですが、株価+前日変化率 (X_t, ΔX_t) を状態にすれば「前日変化率付きマルコフ」になり、より高次の情報を保持できます。状態空間設計が応用上の鍵です。
最後に、「混合時間の計算で得られた値を絶対視しない」こと。本ツールの $t_{\text{mix}} = \ln(0.01)/\ln|\lambda_2|$ は ε=0.01(1% しきい値)の選択に依存します。ε=0.05 にすれば値は約 65% に縮み、ε=0.001 にすれば 1.5 倍に伸びます。実用上は「99% 収束する目安」として使い、厳密な収束保証が必要な場合は全変動距離 (total variation) や χ² 距離で別途評価します。MCMC(マルコフ連鎖モンテカルロ)の事前バーンイン期間を決めるときも同様の注意が必要です。