[R] Making a markov transition matrix

From: Ajay Narottam Shah <ajayshah_at_mayin.org>
Date: Sun 22 Jan 2006 - 11:38:01 EST


Folks,

I am holding a dataset where firms are observed for a fixed (and small) set of years. The data is in "long" format - one record for one firm for one point in time. A state variable is observed (a factor).

I wish to make a markov transition matrix about the time-series evolution of that state variable. The code below does this. But it's hardcoded to the specific years that I observe. How might one generalise this and make a general function which does this? :-)

           -ans.

set.seed(1001)

# Raw data in long format --

raw <- data.frame(name=c("f1","f1","f1","f1","f2","f2","f2","f2"),

                  year=c(83,   84,  85,  86,  83,  84,  85,  86),
                  state=sample(1:3, 8, replace=TRUE)
                  )

# Shift to wide format --

fixedup <- reshape(raw, timevar="year", idvar="name", v.names="state",
                   direction="wide")

# Now tediously build up records for an intermediate data structure
try <- rbind(
             data.frame(prev=fixedup$state.83, new=fixedup$state.84),
             data.frame(prev=fixedup$state.84, new=fixedup$state.85),
             data.frame(prev=fixedup$state.85, new=fixedup$state.86)
             )

# This is a bad method because it is hardcoded to the specific values
# of "year".

markov <- table(destination$prev.state, destination$new.state)
-- 
Ajay Shah                                      http://www.mayin.org/ajayshah  
ajayshah_at_mayin.org                             http://ajayshahblog.blogspot.com
<*(:-? - wizard who doesn't know the answer.

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
Received on Sun Jan 22 11:47:37 2006

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:42:09 EST