Simulating a discrete time markov chain

bradyj7
Messages
117
Reaction score
0
Hi,

I'm trying to simulate a discrete time time markov chain in matlab. Unfortunately I am neither a markov chain expert or a good MATLAB coder.

My problem is simple, I have a transition probability matrix with 100 states (100x100) and I want to simulate a 1000 steps beginning from state 1.

This is the code I have. I'd be grateful if somebody had time to look at the comments in the code to see if the code is correct for simulating a markov chain.

Kind Regards

Code:
Use a for-loop to loop n times for length you want. 

transC = cumsum(trans,2); %cumulative sum of rows, we will use this to decide on the next step.
n = 1000;
states = zeros(1,n); %storage of states
states(1) = 1; %start at state 1 (or whatever)
for ii = 2:n
   %Generate a random number and figure out where it falls in the cumulative sum of that state's trasition matrix row
   [~,states(ii)] = histc(rand,transC(states(ii-1),:));
end
 
Physics news on Phys.org
I don't know Matlab but I made a discrete markov function in R, here is the general outline:

Define transition matrix (let be named t_mat)

Define "result" matrix to be used during matrix algebra, initially set this res_mat= t_mat

Let n = number of transitions

Let i=1
For i=1 to n:
{
int_mat = res_mat* t_mat (using matrix mltiplication operator)
i = i +1
}

Return res_mat at the end, it will be the result of the transition matrix multiplied by itself n times.

If you want to do it in R let me know and I can post the code (it's on a different computer).
 
bradyj7 said:
...
This is the code I have. I'd be grateful if somebody had time to look at the comments in the code to see if the code is correct for simulating a markov chain.
...

Whether or not the code is "correct", it's good programming practice to test thoroughly. For example:
  1. Do the results make sense for small transition matrices such as eye(1) or [0.5,0.5;0,1]?
  2. Do the results change when using a different function for sampling from arbitrary discrete distributions, such as datasample in the stats toolbox or randraw on the file exchange?
  3. Is the program fast enough for the intended purposes?
 
Thanks for your comments.
 
Hey bradyj7.

Do you want to simulate a tonne of paths or some particular constrained ones?
 
Hi all, I've been a roulette player for more than 10 years (although I took time off here and there) and it's only now that I'm trying to understand the physics of the game. Basically my strategy in roulette is to divide the wheel roughly into two halves (let's call them A and B). My theory is that in roulette there will invariably be variance. In other words, if A comes up 5 times in a row, B will be due to come up soon. However I have been proven wrong many times, and I have seen some...
Thread 'Detail of Diagonalization Lemma'
The following is more or less taken from page 6 of C. Smorynski's "Self-Reference and Modal Logic". (Springer, 1985) (I couldn't get raised brackets to indicate codification (Gödel numbering), so I use a box. The overline is assigning a name. The detail I would like clarification on is in the second step in the last line, where we have an m-overlined, and we substitute the expression for m. Are we saying that the name of a coded term is the same as the coded term? Thanks in advance.

Similar threads

Replies
2
Views
2K
Replies
4
Views
2K
Replies
13
Views
2K
Replies
2
Views
2K
Replies
4
Views
7K
Replies
1
Views
2K
Replies
1
Views
4K
Back
Top