rlineage {ape} | R Documentation

## Tree Simulation Under the Time-Dependent Birth–Death Models

### Description

These three functions simulate phylogenies under any time-dependent birth–death model: `rlineage` generates a complete tree including the species going extinct before present; `rbdtree` generates a tree with only the species living at present (thus the tree is ultrametric); `rphylo` generates a tree with a fixed number of species at present time. `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)
    rphylo(n, birth, death, BIRTH = NULL, DEATH = NULL,
           T0 = 50, fossils = FALSE, eps = 1e-06)
    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, a 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.
`n` | the number of species living at present time.
`T0` | the time at present (for the backward-in-time algorithm).
`fossils` | a logical value specifying whether to output the lineages going extinct.
`phy` | an object of class `"phylo"`.
`tol` | a numeric value giving the tolerance to consider a species as extinct.

### Details

These three functions use continuous-time algorithms: `rlineage` and `rbdtree` use the forward-in-time algorithms described in Paradis (2011), whereas `rphylo` uses a backward-in-time algorithm from Stadler (2011). 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 R function 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`.

Note that `rphylo` simulates trees in a way similar to what the package TreeSim does, the difference is in the parameterization of the time-dependent models which is here the same than used in the two other functions. In this parameterization scheme, time is measured from past to present (see details in Paradis 2015 which includes a comparison of these algorithms).

The difference between `rphylo` and `rphylo(... fossils = TRUE)` is the same than between `rbdtree` and `rlineage`.

### Value

An object of class `"phylo"`.

### Author(s)

Emmanuel Paradis

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

Paradis, E. (2015) Random phylogenies and the distribution of branching times. Manuscript.

Stadler, T. (2011) Simulating trees with a fixed number of extant species. Systematic Biology, 60, 676–684.

### See Also

`yule`, `yule.time`, `birthdeath`, `rtree`, `stree`

### Examples

    set.seed(10)
    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'")

[Package ape version 5.1 Index]