[R] Constructing a transition matrix

From: Chris Stubben <stubben_at_lanl.gov>
Date: Wed 07 Dec 2005 - 11:43:13 EST

Hi again,

I almost figured this out, but still need some help on the last part.

I can use prop.table to get survival probabilities...

A <- t(prop.table( table(trans$class, trans$fate),1) )

             rep seed veg

   dead 0.0000000 0.3333333 0.0000000
   rep  0.5000000 0.0000000 1.0000000
   veg  0.5000000 0.6666667 0.0000000


so now I just need to format the matrix. I thought I could create a matrix of zeroes using size class names,

dev<- c("seed","veg", "rep").

A0<-matrix(numeric(9), nrow=3, dimnames=list(dev,dev) )

      seed veg rep
seed 0 0 0

veg     0   0   0
rep     0   0   0


but how do I assign values in A to the corresponding rows and columns in A0? I hope there is an easy solution that I'm overlooking.

      seed veg   rep
seed    0   0     0
veg  0.67   0   0.5
rep     0   1   0.5


Thanks,

Chris

Chris Stubben wrote:
> Hi,
>
> I would like to construct a transition matrix from a data frame with
> annual transitions of marked plants.
>
> plant<-c(1:6)
> class<-c("seed","seed", "seed", "veg", "rep", "rep")
> fate<-c("dead", "veg","veg","rep", "rep", "veg")
>
> trans<-data.frame(plant, class, fate)
>
> plant class fate
> 1 1 seed dead
> 2 2 seed veg
> 3 3 seed veg
> 4 4 veg rep
> 5 5 rep rep
> 6 6 rep veg
>
> I have been using sql queries to do this, but I would like to construct
> the matrix in R since I plan to resample transitions using
> trans[sample(nrow(trans), 6, replace=T), ]
>
> I know I can get the original size vector using table()
>
> data.matrix(table(trans$class))
> [,1]
> rep 2
> seed 3
> veg 1
>
>
> but I don't know how to get counts of each class-fate combination where
> fate does NOT equal dead
>
> seed veg = 2
> veg rep = 1
> rep rep = 1
> rep veg = 1
>
>
> or how to divide the class-fate count by the original class count in the
> size vector to get survival probabilities
>
> seed veg = 2 / 3 seed = 0.67
> veg rep = 1 / 1 veg = 1
> rep rep = 1 / 2 rep = 0.5
> rep veg = 1 / 2 rep = 0.5
>
>
> or construct the square matrix with rows and columns in the same
> developmental sequence like dev<- c("seed","veg", "rep").
>
> seed veg rep
> seed 0 0 0
> veg 0.67 0 0.5
> rep 0 1 0.5
>
> Any help or suggestions would be appreciated.
> Thanks,
>
>
> Chris Stubben
>
>
> --
> Los Alamos National Lab
> BioScience Division
> MS M888
> Los Alamos, NM 87545
>
>
>



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 Wed Dec 07 11:52:18 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:41:30 EST