bd.time {ape}R Documentation

Time-Dependent Birth-Death Models

Description

This function fits a used-defined time-dependent birth-death model.

Usage

bd.time(phy, birth, death, BIRTH = NULL, DEATH = NULL,
        ip, lower, upper, fast = FALSE, boot = 0, trace = 0)

Arguments

phy

an object of class "phylo".

birth

either a numeric (if speciation rate is assumed constant), or a (vectorized) function specifying how the birth (speciation) probability changes through time (see details).

death

id. for extinction probability.

BIRTH

(optional) a vectorized function giving the primitive of birth.

DEATH

id. for death.

ip

a numeric vector used as initial values for the estimation procedure. If missing, these values are guessed.

lower, upper

the lower and upper bounds of the parameters. If missing, these values are guessed too.

fast

a logical value specifying whether to use faster integration (see details).

boot

the number of bootstrap replicates to assess the confidence intervals of the parameters. Not run by default.

trace

an integer value. If non-zero, the fitting procedure is printed every trace steps. This can be helpful if convergence is particularly slow.

Details

Details on how to specify the birth and death functions and their primitives can be found in the help page of yule.time.

The model is fitted by minimizing the least squares deviation between the observed and the predicted distributions of branching times. These computations rely heavily on numerical integrations. If fast = FALSE, integrations are done with R's integrate function. If fast = TRUE, a faster but less accurate function provided in ape is used. If fitting a complex model to a large phylogeny, a strategy might be to first use the latter option, and then to use the estimates as starting values with fast = FALSE.

Value

A list with the following components:

Author(s)

Emmanuel Paradis

References

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

See Also

ltt.plot, birthdeath, yule.time, LTT

Examples

set.seed(3)
tr <- rbdtree(0.1, 0.02)
bd.time(tr, 0, 0) # fits a simple BD model
bd.time(tr, 0, 0, ip = c(.1, .01)) # 'ip' is useful here
## the classic logistic:
birth.logis <- function(a, b) 1/(1 + exp(-a*t - b))
## Not run: 
bd.time(tr, birth.logis, 0, ip = c(0, -2, 0.01))
## slow to get:
## $par
##            a            b        death
## -0.003486961 -1.995983179  0.016496454
##
## $SS
## [1] 20.73023

## End(Not run)

[Package ape version 5.8 Index]