Transition Matrix -ve states and sum not 1, or 1 with negative probablities
2 views (last 30 days)
Show older comments
I have implemented following equation in Matalb
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/190214/image.png)
This equation is for calculating transition Matrix Probabilities (Pi,i+j) of this Markov Chain
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/190215/image.png)
The code i have written is as follows, where Nt=2:
for i=0:Nt % sum over all i's
for d=0:Nt %sum over all d's
for d1=0:min(i,d) %sum for all possible d1's
for a=0:d %sum for all a's
%index=sprintf("Index i=%d j=%d i=%d i+j=%d \n",i,d1-a, i,i+d1-a)
for k=a:d
if (i==0 || d1==i)
p=pf;
else
p=pa;
end
A= nchoosek(d,k) * (PSI^k) *( (1-PSI)^(d-k) )* nchoosek(k,a) *(p^a)*(1-p)^(k-a);
if( Nt-i > d-d1)
%A= nchoosek(d,k) * PSI *( (1-PSI)^(d-k) )* nchoosek(k,a) *(p^a)*(1-p)^(k-a);
M=nchoosek(i,d1)* nchoosek(Nt-i,d-d1) *(Pi1^d)* (1-Pi1)^(Nt-d) * A ;
end
%make transition matrix array
%newIndex=sprintf("Index i=%d j=%d i=%d i+j=%d \n",i,d1-a, i,i+d1-a)
%values=sprintf("Index i=%d d=%d d1=%d a=%d ,k=%d j=%d i=%d i+j=%d \n",i,d,d1,a,k,d1-a, i,i+d1-a)
if ( (i+d1-a) > 0 && (i+d1-a <= Nt)) %( (i<=Nt) && (i+d1-a <=Nt) && (i+d1-a >=0) )
% newIndex=sprintf("Index i=%d j=%d i=%d i+j=%d \n",i,d1-a, i,i+d1-a);
TM(i+1,i+d1-a+1)=TM(i+1,i+d1-a+1)+M; % for indexing +1
end
end
end
end
end
end
Following are observations from this equation 1) I get negative index sometimes eg. for i+j i.e. Pi,i+j =P0,-1 we dont have '-1' as state. 2) The transition Matrix sums to 1 for about 75% rows. When i ran this code with Nt=40. i was getting sum of rows=1 for 35 rows only. With Nt=10, first row becomes all 0's and 4 rows have sum equal to '1'. 3) In some cases sum of Rows element =1 when having negative probabilities like 1.234 -0.234 0.0 = 1
Can any expert tell me if i have mistakes in code or else.
Thank you
0 Comments
Answers (0)
See Also
Categories
Find more on Markov Chain Models 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!