ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

マルコフ連鎖解析と定常分布

この例では、固有値分解を計算して普通のマルコフ連鎖からシンボリック定常分布を導出する方法を示します。

定常分布は、ステップ数または遷移が増加する場合の、制限的で時間非依存のマルコフ過程の分布を表します。

前のイメージで示すように、ステート間 A から F の (正の) 遷移確率を定義します。

syms a b c d e f cCA cCB positive;

さらに、遷移確率を抑制する仮定を追加します。これは後で適切な定常分布を選択する際に役立ちます。

assumeAlso([a, b, c, e, f, cCA, cCB] < 1 & d == 1);

遷移行列を定義します。ステート A から F が列と行 1 から 6 にマッピングされます。各行の値の和は 1 になります。

P = sym(zeros(6,6));
P(1,1:2) = [a 1-a];
P(2,1:2) = [1-b b];
P(3,1:4) = [cCA cCB c (1-cCA-cCB-c)];
P(4,4) = d;
P(5,5:6) = [e 1-e];
P(6,5:6) = [1-f f];
P
P = 

マルコフ連鎖の各ステートについて可能なすべての解析的定常分布を計算します。これは固有ベクトルを抽出する問題で、遷移確率の値によっては、対応する固有値が 1 に等しくなる可能性があります。

[V,D] = eig(P');

解析的な固有ベクトル

V
V = 

解析的な固有値

diag(D)
ans = 

厳密に 1 に等しい固有値を求めます。固有値の条件の決定にあいまいさがある場合は、エラーで停止します。このように、このステップが正常に終了すれば、以下のインデックスのリストは信頼できるものです。

ix = find(isAlways(diag(D) == 1,'Unknown','error'));
diag(D(ix,ix))
ans = 

解析的定常分布を抽出します。固有ベクトルは 1 ノルムまたは sum(abs(X)) で正規化されてから表示されます。.

for k = ix'
    V(:,k) = simplify(V(:,k)/norm(V(:,k)),1);
end
Probability = V(:,ix)
Probability = 

最初の固有ベクトル ケースでは、A または B の定常状態の確率は遷移確率 ab の関数です。この依存関係を可視化します。

fsurf(Probability(1), [0 1 0 1]);
xlabel a
ylabel b
title('Probability of A');

figure(2);
fsurf(Probability(2), [0 1 0 1]);
xlabel a
ylabel b
title('Probability of B');

定常分布は以下を裏付けています (ステート A から F は行インデックス 1 から 6 に対応することを思い出してください)。

  • ステート C は到達不能であるため、過渡状態です (つまり、3 行目は完全に 0 です)。

  • 残りのステートは 3 つのグループ { A , B }、{ D } および { E , F } を構成しますが、相互のやり取りはなく、再帰的です。