Distribuzione stazionaria della catena di Markov ergodica: risoluzione delle equazioni
-
21-12-2019 - |
Domanda
Sto cercando di risolvere una serie di equazioni per determinare la distribuzione stazionaria di una matrice Ergodica Markov.
Vale a dire, la matrice è
P=[0 0 0 0.5 0 0.5;
0.1 0.1 0 0.4 0 0.4;
0 0.2 0.2 0.3 0 0.3;
0 0 0.3 0.5 0 0.2;
0 0 0 0.4 0.6 0;
0 0 0 0 0.4 0.6];
.
e il set di equazioni sono quelli del teorema sotto
Come posso convertire le equazioni sopra in sintassi MATLAB valido?
Soluzione
La distribuzione stazionaria è data dal Sinistra Vettore Eigen con Eigen-Value 1.
>> [V D] = eig( P.' ); %// note the transpose .' - we are looking for the **left** EV
>> st = V(:,1).'; %//' the stationary distribution
st =
0.0051 0.0509 0.2291 0.6110 0.5346 0.5346
>> D(1)
1.0000
. Altri suggerimenti
Questo è un approccio diverso da @ Risposta .
Un modo alternativo per farlo viene dalla risoluzione delle equazioni PI * P= PI per lo stato costante e ignorare il requisito che la somma del PI_J deve essere una (per ora).
Allora sappiamo che PI non ha una soluzione unica a questo senza il requisito "somma a 1".PI deve essere nel NULLSpace di (Transpose (P) - I).Matlab è buono a questo.Normalizzazione dopo il risultato desiderato (come sottolineato da @Luismendo nei commenti).
P=[0 0 0 0.5 0 0.5;
0.1 0.1 0 0.4 0 0.4;
0 0.2 0.2 0.3 0 0.3;
0 0 0.3 0.5 0 0.2;
0 0 0 0.4 0.6 0;
0 0 0 0 0.4 0.6];
I = eye(size(P));
Y = null(P'-I)
PI = Y./(sum(Y))
.
Questo è facile da controllare.
>> PI(:)' % Force into row vector
ans =
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
.
Confronta con la matrice di transizione a 25 fasi.
P5 = P*P*P*P*P;
P25 = P5*P5*P5*P5*P5;
>>P25 =
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
.