Hi Jeremy,

Perhaps you've already figured this out. There may be a function available in R to do this, but if not, in principle for BM it should be fairly easy to do this "manually."

First, read your tree in:

tree<-read.tree(FILE, etc.) % put filename or paste in tree

then compute the phylogenetic VCV matrix (let's call it T):

T<-vcv.phylo(tree)

then specify your desired correlation matrix, R. If you wanted an evolutionary correlation of 0.95 this would be:

R<-matrix(c(1,0.95,0.95,1),nrow=2,ncol=2)

then generate a matrix of random, uncorrelated values (U), e.g.:

U<-matrix(,nrow=N,ncol=2) % where N is the number of taxa
U[,1]<-rnorm(N) % (am I using this function correctly?)
U[,2]<-rnorm(N)

now give them a correlation based on R (using the Cholesky decomposite):

V<-U%*%chol(R)

now give the data correlation due to the tree:

X<-t(V)%*%chol(T)

I think that should be it. The data in X should be as data evolved by BM on your tree with the correlation specified in your matrix, R (0.95 in this case).

More experience users, please let me know if this is incorrect (it is untested, so it may include errors, but I think the logic is sound).

Sincerely, Liam

Liam J. Revell
Department of Organismic and Evolutionary Biology
Harvard University
web: http://anolis.oeb.harvard.edu/~liam/
email: lrev...@fas.harvard.edu

On Mon, 18 May 2009, jeremy.beaul...@yale.edu wrote:

Hi all~

I was just wondering if there is a package or function in R that can simulate
two continuous traits with a user-specified correlation coefficient using a
known tree topology, branch lengths, and a model of Brownian motion (or even
OU, if possible)?

All the best,

Jeremy Beaulieu

_______________________________________________
R-sig-phylo mailing list
R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo


_______________________________________________
R-sig-phylo mailing list
R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo

Reply via email to