ape (version 3.2)

rlineage: Tree Simulation Under the Time-Dependent Birth--Death Models

Description

These two functions simulate phylogenies under any time-dependent birth--death model. lineage generates a complete tree including the species that go extinct; rbdtree generates a tree with only the species until present; drop.fossil is a utility function to remove the extinct species.

Usage

rlineage(birth, death, Tmax = 50, BIRTH = NULL,
         DEATH = NULL, eps = 1e-6)
rbdtree(birth, death, Tmax = 50, BIRTH = NULL,
        DEATH = NULL, eps = 1e-6)
drop.fossil(phy, tol = 1e-8)

Arguments

birth, death
a numeric value or a (vectorized) function specifying how speciation and extinction rates vary through time.
Tmax
a numeric value giving the length of the simulation.
BIRTH, DEATH
a (vectorized) function which is the primitive of birth or death. This can be used to speed-up the computation. By default, numerical integration is done.
eps
a numeric value giving the time resolution of the simulation; this may be increased (e.g., 0.001) to shorten computation times.
phy
an object of class "phylo".
tol
a numeric value giving the tolerance to consider a species as extinct.

Value

  • An object of class "phylo".

Details

Both functions use continuous-time algorithms described in the references. The models are time-dependent birth--death models as described in Kendall (1948). Speciation (birth) and extinction (death) rates may be constant or vary through time according to an Rfunction specified by the user. In the latter case, BIRTH and/or DEATH may be used if the primitives of birth and death are known. In these functions time is the formal argument and must be named t.

References

Kendall, D. G. (1948) On the generalized ``birth-and-death'' process. Annals of Mathematical Statistics, 19, 1--15.

Paradis, E. (2011) Time-dependent speciation and extinction from phylogenies: a least squares approach. Evolution, 65, 661--672.

See Also

yule, yule.time, birthdeath, rtree, stree

Examples

Run this code
plot(rlineage(0.1, 0)) # Yule process with lambda = 0.1
plot(rlineage(0.1, 0.05)) # simple birth-death process
b <- function(t) 1/(1 + exp(0.2*t - 1)) # logistic
layout(matrix(0:3, 2, byrow = TRUE))
curve(b, 0, 50, xlab = "Time", ylab = "")
mu <- 0.07
segments(0, mu, 50, mu, lty = 2)
legend("topright", c(expression(lambda), expression(mu)),
       lty = 1:2, bty = "n")
plot(rlineage(b, mu), show.tip.label = FALSE)
title("Simulated with 'rlineage'")
plot(rbdtree(b, mu), show.tip.label = FALSE)
title("Simulated with 'rbdtree'")

Run the code above in your browser using DataCamp Workspace