| rTraitCont {ape} | R Documentation |
Continuous Character Simulation
Description
This function simulates the evolution of a continuous character along a phylogeny. The calculation is done recursively from the root. See Paradis (2012, pp. 232 and 324) for an introduction.
Usage
rTraitCont(phy, model = "BM", sigma = 0.1, alpha = 1, theta = 0,
ancestor = FALSE, root.value = 0, ...)
Arguments
phy |
an object of class |
model |
a character (either |
sigma |
a numeric vector giving the standard-deviation of the random component for each branch (can be a single value). |
alpha |
if |
theta |
if |
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). |
root.value |
a numeric giving the value at the root. |
... |
further arguments passed to |
Details
There are three possibilities to specify model:
-
"BM": a Browian motion model is used. If the argumentssigmahas more than one value, its length must be equal to the the branches of the tree. This allows to specify a model with variable rates of evolution. You must be careful that branch numbering is done with the tree in “postorder” order: to see the order of the branches you can use:tr <- reorder(tr, "po"); plor(tr); edgelabels(). The argumentsalphaandthetaare ignored. -
"OU": an Ornstein-Uhlenbeck model is used. The above indexing rule is used for the three parameterssigma,alpha, andtheta. This may be interesting for the last one to model varying phenotypic optima. The exact updating formula from Gillespie (1996) are used which are reduced to BM formula ifalpha = 0. A function: it must be of the form
foo(x, l)wherexis the trait of the ancestor andlis the branch length. It must return the value of the descendant. The argumentssigma,alpha, andthetaare ignored.
Value
A numeric vector with names taken from the tip labels of
phy. If ancestor = TRUE, the node labels are used if
present, otherwise, “Node1”, “Node2”, etc.
Author(s)
Emmanuel Paradis
References
Gillespie, D. T. (1996) Exact numerical simulation of the Ornstein-Uhlenbeck process and its integral. Physical Review E, 54, 2084–2091.
Paradis, E. (2012) Analysis of Phylogenetics and Evolution with R (Second Edition). New York: Springer.
See Also
Examples
data(bird.orders)
rTraitCont(bird.orders) # BM with sigma = 0.1
### OU model with two optima:
tr <- reorder(bird.orders, "postorder")
plot(tr)
edgelabels()
theta <- rep(0, Nedge(tr))
theta[c(1:4, 15:16, 23:24)] <- 2
## sensitive to 'alpha' and 'sigma':
rTraitCont(tr, "OU", theta = theta, alpha=.1, sigma=.01)
### an imaginary model with stasis 0.5 time unit after a node, then
### BM evolution with sigma = 0.1:
foo <- function(x, l) {
if (l <= 0.5) return(x)
x + (l - 0.5)*rnorm(1, 0, 0.1)
}
tr <- rcoal(20, br = runif)
rTraitCont(tr, foo, ancestor = TRUE)
### a cumulative Poisson process:
bar <- function(x, l) x + rpois(1, l)
(x <- rTraitCont(tr, bar, ancestor = TRUE))
plot(tr, show.tip.label = FALSE)
Y <- x[1:20]
A <- x[-(1:20)]
nodelabels(A)
tiplabels(Y)