Filter löschen
Filter löschen

Transition Matrix -ve states and sum not 1, or 1 with negative probablities

1 Ansicht (letzte 30 Tage)
I have implemented following equation in Matalb
This equation is for calculating transition Matrix Probabilities (Pi,i+j) of this Markov Chain
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

Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by