Multivariate Character Simulation
This function simulates the evolution of a multivariate set of traits along a phylogeny. The calculation is done recursively from the root.
rTraitMult(phy, model, p = 1, root.value = rep(0, p), ancestor = FALSE, asFactor = NULL, trait.labels = paste("x", 1:p, sep = ""), ...)
phy |
an object of class |
model |
a function specifying the model (see details). |
p |
an integer giving the number of traits. |
root.value |
a numeric vector giving the values at the root. |
ancestor |
a logical value specifying whether to return the values at the nodes as well (by default, only the values at the tips are returned). |
asFactor |
the indices of the traits that are returned as factors (discrete traits). |
trait.labels |
a vector of mode character giving the names of the traits. |
... |
further arguments passed to |
The model is specified with an R function of the form foo(x,
l)
where x
is a vector of the traits of the ancestor and
l
is the branch length. Other arguments may be added. The
function must return a vector of length p
.
A data frame with p
columns whose names are given by
trait.labels
and row names taken from the labels of the tree.
Emmanuel Paradis
## correlated evolution of 2 continuous traits: mod <- function(x, l) { y1 <- rnorm(1, x[1] + 0.5*x[2], 0.1) y2 <- rnorm(1, 0.5*x[1] + x[2], 0.1) c(y1, y2) } set.seed(11) tr <- makeNodeLabel(rcoal(20)) x <- rTraitMult(tr, mod, 2, ancestor = TRUE) op <- par(mfcol = c(2, 1)) plot(x, type = "n") text(x, labels = rownames(x), cex = 0.7) oq <- par(mar = c(0, 1, 0, 1), xpd = TRUE) plot(tr, font = 1, cex = 0.7) nodelabels(tr$node.label, cex = 0.7, adj = 1) par(c(op, oq))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.