R: Time-Dependent Birth-Death Models

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:

- para vector of estimates with names taken from the parameters in the specified functions.

- SSthe minimized sum of squares.

- convergenceoutput convergence criterion from `nlminb`.

- messageid.

- iterationsid.

- evaluationsid.

### 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.1 Index]