On Feb 20, 2012, at 10:11 AM, <murali.me...@avivainvestors.com> wrote:
Folks,
I'm trying to get stats from a matrix for each transition from one
state to another.
I have a matrix x as below.
structure(c(0, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 2, 2, 1, 1, 1, 0,
0, 2, 2, 0.21, -0.57, -0.59, 0.16, -1.62, 0.18, -0.81, -0.19,
-0.76, 0.74, -1.51, 2.79, 0.41, 1.63, -0.86, -0.81, 0.39, -1.38,
0.06, 0.84, 0.51, -1, -1.29, 2.15, 0.39, 0.78, 0.85, 1.18, 1.66,
0.9, -0.94, -1.29, -0.23, -0.92, -0.21, 1.02, -0.77, -0.68, -0.33,
0.04), .Dim = c(20L, 3L), .Dimnames = list(NULL, c("State", "V1",
"V2")))
Is it possible to get, say, mean values of each variable in state 1
when the previous state was 0, in state 2 when the previous state
was 0, and so on with all available transitions between states 0, 1,
2?
In the above case, mean of V1 in state 2 when previous state was 0
would be
mean(c(-0.57, -0.59, 0.16, 0.06, 0.84)) = -0.02
while the mean of V1 in state 0 when previous state was 2 would be:
mean(c(1.62, 0.18, -0.81)) = 0.33
If I try something like
by(x[, 2:3], x[, 1], FUN = colMeans)
I get the means for each state. I'm not sure how to get the split by
transition?
Add an extra column of previous states: and tabulate:
> sss <-cbind(sss, c(NA, sss[,"State"][-nrow(sss)]) )
> table(sss[,"State"], sss[,4])
0 1 2
0 3 1 1
1 1 5 1
2 2 1 4
The requested means for "V1" by transition types:
> tapply(sss[,"V1"], INDEX=interaction(sss[,"State"], sss[,4]), mean)
0.0 1.0 2.0 0.1 1.1 2.1 0.2 1.2 2.2
-0.670 -0.190 -0.255 0.390 -0.640 2.790 -1.620 1.630 0.205
The counts on which those means are based:
> tapply(sss[,"V1"], INDEX=interaction(sss[,"State"], sss[,4]), length)
0.0 1.0 2.0 0.1 1.1 2.1 0.2 1.2 2.2
3 1 2 1 5 1 1 1 4
--
David Winsemius, MD
West Hartford, CT
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.