Ergódica cadeia de Markov estacionária de distribuição:resolução eqns
-
21-12-2019 - |
Pergunta
Eu estou tentando resolver um conjunto de equações para determinar a distribuição estacionária de uma Markov ergódica matriz.
Ou seja, a matriz é
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 o conjunto de equações são as do teorema abaixo
Como posso converter as equações acima válidos em Matlab sintaxe?
Solução
A distribuição estacionária é dada por esquerda eigen vetor com eigen-valor de 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
Outras dicas
Esta é uma abordagem diferente da @Shai do responder.
Uma forma alternativa para não se trata de resolver o Pi*P = Pi equações para o estado estacionário e ignorar o requisito de que a soma dos pi_j precisa ser um (por agora).
Um pouco de álgebra matricial...
Então nós sabemos que o Pi não tem uma solução única para este sem a "soma de 1" exigência.O Pi deve ser no nullspace de (transpose(P) - I).O MATLAB é bom nisso.Normalização depois dá o resultado desejado (como apontado por @LuisMendo nos comentários).
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))
Isto é fácil de verificar.
>> PI(:)' % Force into row vector
ans =
0.0026 0.0259 0.1166 0.3109 0.2720 0.2720
Compare com o 25 de passo matriz de transição.
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