# bd.time

##### Time-Dependent Birth-Death Models

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 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 `fast = FALSE`

.

##### Value

- A list with the following components:
- par

SS the minimized sum of squares. convergence output convergence criterion from `nlminb`

.message id. iterations id. evaluations id.

##### References

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

##### See Also

##### 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))
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
```

*Documentation reproduced from package ape, version 2.7-3, License: GPL (>= 2)*