[R] Computing and testing transition probabilities?

Spencer Graves spencer.graves at pdf.com
Tue Oct 5 18:32:26 CEST 2004


      Regarding how to compile the table, have you considered something 
like the following: 

 > Trans <- array(0, dim=c(3,3))
 > for(i in 1:(n-1))
+   if(D$names[i]==D$names[i+1])
+     (Trans[D$f[i], D$f[i+1]] <- Trans[D$f[i], D$f[i+1]]+1)
 > Trans> Trans <- array(0, dim=c(3,3))
 > for(i in 1:(n-1))
+   if(D$names[i]==D$names[i+1])
+     (Trans[D$f[i], D$f[i+1]] <- Trans[D$f[i], D$f[i+1]]+1)
 > Trans
 > Trans <- array(0, dim=c(3,3))
 > for(i in 1:(n-1))
+   if(D$names[i]==D$names[i+1])
+     (Trans[D$f[i], D$f[i+1]] <- Trans[D$f[i], D$f[i+1]]+1)
 > Trans
     [,1] [,2] [,3]
[1,]    1    0    1
[2,]    0    0    1
[3,]    1    1    1

      This is not the answers you got;  I got this in R 1.9.1 under 
Windows 2000.  I'm sure there are ways to do this without a for loop, 
but I couldn't think of one immediately. 

      Regarding how to analyze, have you searched for "discrete markov 
estimation" and "hidden markov estimate" from www.r-project.org -> 
search -> "R site search"?  There are many possibilities.

      hope this helps.  spencer graves

Ajay Shah wrote:

>Folks, I have a situation with many firms, observed for many years
>(but it's not panel data, so every now and then data for a firm just
>goes missing).
>
>Let me show you an example. There are 3 firms "a", "b" and "c". There
>are 3 years: 1981, 1982 and 1983. There's a factor f which takes
>values 1, 2 or 3.
>
>set.seed(5)
>D = data.frame(
>  names=c("a", "a", "a", "b", "b", "c", "c", "c", "d", "d"),
>  year= c( 81,  82,  83,  81,  83,  81,  82,  83,  82,  83),
>  f=    sample(1:3, 10, replace=T)
>  )
>print(D)
>
>What I'd like to do is locate situations where a firm is observed for
>two consecutive years, and put together conditional probabilities of
>state transition.
>
>Expressed as counts, putting time $t$ as the rows and time $t+1$ as
>the columms, I'd like to get the table:
>
>    1   2   3
>1           1
>2       1
>3   1   1   1
>
>For example, this says that we only observe one situation (in this
>data) where f=1 and then we got to see the next year, and in that year
>f was 3. So we have a 100% probability of going from 1 -> 3. In the
>case of f=3, we have 3 situations where we observe two consecutive
>years where the 1st is f=3, and it turns out that the outcomes are
>1,2,3 each happening once.
>
>Expressed as conditional probabilities it is:
>
>    1   2   3
>1           1
>2       1
>3 .33  .33 .33
>
>How might one do this? And then, how might one go about getting
>confidence intervals for the transition probabilities that are seen in
>this transition matrix? I'd like to test the null that the state
>variable does not change. I.e., if a firm is in f=2, under the null,
>it's just stay at f=2 in the following year. That'd be an identity
>matrix for the transition probabilities:
>
>    1   2   3
>1   1
>2       1
>3           1
>
>How does one talk about the distribution of the transition
>probabilities under this null, and thus get a test?
>
>  
>

-- 
Spencer Graves, PhD, Senior Development Engineer
O:  (408)938-4420;  mobile:  (408)655-4567




More information about the R-help mailing list