Calculating stationary distribution of Markov chain
Show older comments
I am calculating the stationary distribution of a Markov chain. The transition matrix P is sparse (at most 4 entries in every column)
The solution is the solution to the system: P*S=S
I use the following method:
St = eigs(P,1,1);
S = St/sum(St); %S is the (normalized) stationary distribution
but i was wondering if there is a faster method... I have no clue yet how fast it is going to be, but the faster the better, because the speed will determine how accurate i can make my grid (more accurate = larger transition matrix)
thanks in advance!
Answers (2)
Oscar
on 5 Nov 2013
3 votes
The algorithm only worked for 2 dimensions. I have written an algorithm implementing the same method and it works for all dimensions. See attached file.
Section 6 and 7 of this document explain a method called 'state space reduction' for calculating the stationary distribution of a Markov Chain: http://www.math.wustl.edu/~feres/Math450Lect04.pdf
I have removed a typo from the program that is given in the document and now it is working. See attached file.
2 Comments
Clarisha Nijman
on 2 Nov 2018
Dear all,
today I am working on a project and need a stable code for the stationary distribution. I tried several suggestions. This last one gives an error, but as I do not understand the details of the code, your advice is really needed. Can somebody give me some advice please?,
Thank you in advance,
PP =
0.3333 0.1667 0.6000
0.3333 0.5000 0.2000
0.3333 0.3333 0.2000
>> p=limitdist(PP) In an assignment A(:) = B, the number of elements in A and B must be the same.
Error in limitdist (line 27) p(j)=sum(p(1:j1).*(P(1:j1,j)));
yizhou yang
on 25 Nov 2019
Please try using this:
p(j)=sum(p(1:j1).*(P(1:j1,j))');
just need to transpose.
Categories
Find more on Stable Distribution in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!