[R] Constructing a transition matrix

From: Hans Gardfjell <hans.gardfjell_at_emg.umu.se>
Date: Wed 07 Dec 2005 - 22:06:44 EST


If you order your factor levels in your vectors in the order you want in the output, then the prop.table(prop()) command will give you what you want.

But you have to reorder the factor levels so that the levels commands give the following output:

>levels(trans$class)
[1] "seed" "veg" "repr"
>levels(trans$fate)

[1] "seed" "veg" "repr" "dead"

That means that you need to include "seed" as a factor level in fate (even if that level is unused). The prop.table(table()) command will then produce a 3 by 4 table. Remove the last row (that contains the proportion dead), and your set.

Hans Gardfjell
Dept of Ecology and Environmental science Umeň University, Sweden

Chris Stubben wrote:

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 22:20:37 2005

This archive was generated by hypermail 2.1.8 : Wed 07 Dec 2005 - 23:33:36 EST