rTraitMult {ape} | R Documentation

## Multivariate Character Simulation

### Description

This function simulates the evolution of a multivariate set of traits along a phylogeny. The calculation is done recursively from the root.

### Usage

    rTraitMult(phy, model, p = 1, root.value = rep(0, p), ancestor = FALSE,
               asFactor = NULL, trait.labels = paste("x", 1:p, sep = ""), ...)

### Arguments

`phy` | an object of class `"phylo"`.
`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 `model` if it is a function.

### Details

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`.

### Value

A data frame with `p` columns whose names are given by `trait.labels` and row names taken from the labels of the tree.

### Author(s)

Emmanuel Paradis

### See Also

`rTraitCont`, `rTraitDisc`, `ace`

### Examples

    ## 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))

[Package ape version 5.0 Index]