These functions compute the probability density under some birth–death models, that is the probability of obtaining x species after a time t giving how speciation and extinction probabilities vary through time (these may be constant, or even equal to zero for extinction).
1 2 3 4
a numeric vector of species numbers (see Details).
a numerical value giving the probability of speciation;
can be a vector with several values for
id. for extinction.
id. for the time(s).
a logical value specifying whether the probabilities should
be returned log-transformed; the default is
a logical specifying whether the probabilities
should be computed conditional under the assumption of no extinction
a (vectorized) function specifying how the
speciation or extinction probability changes through time (see
a (vectorized) function giving the primitive
a logical value specifying whether to use faster
These three functions compute the probabilities to observe
species starting from a single one after time
t (assumed to be
continuous). The first function is a short-cut for the second one with
mu = 0 and with default values for the two other arguments.
dbdTime is for time-varying
specified as R functions.
dyule is vectorized simultaneously on its three arguments
t, according to R's rules of
dbd is vectorized simultaneously
t (to make likelihood calculations easy), and
dbdTime is vectorized only on
x; the other arguments are
eventually shortened with a warning if necessary.
The returned value is, logically, zero for values of
x out of
range, i.e., negative or zero for
dyule or if
= TRUE. However, it is not checked if the values of
positive non-integers and the probabilities are computed and returned.
The details on the form of the arguments
fast can be found in the links
a numeric vector.
If you use these functions to calculate a likelihood function, it is
strongly recommended to compute the log-likelihood with, for instance
in the case of a Yule process,
sum(dyule( , log = TRUE)) (see
Kendall, D. G. (1948) On the generalized “birth-and-death” process. Annals of Mathematical Statistics, 19, 1–15.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
x <- 0:10 plot(x, dyule(x), type = "h", main = "Density of the Yule process") text(7, 0.85, expression(list(lambda == 0.1, t == 1))) y <- dbd(x, 0.1, 0.05, 10) z <- dbd(x, 0.1, 0.05, 10, conditional = TRUE) d <- rbind(y, z) colnames(d) <- x barplot(d, beside = TRUE, ylab = "Density", xlab = "Number of species", legend = c("unconditional", "conditional on\nno extinction"), args.legend = list(bty = "n")) title("Density of the birth-death process") text(17, 0.4, expression(list(lambda == 0.1, mu == 0.05, t == 10))) ## Not run: ### generate 1000 values from a Yule process with lambda = 0.05 x <- replicate(1e3, Ntip(rlineage(0.05, 0))) ### the correct way to calculate the log-likelihood...: sum(dyule(x, 0.05, 50, log = TRUE)) ### ... and the wrong way: log(prod(dyule(x, 0.05, 50))) ### a third, less preferred, way: sum(log(dyule(x, 0.05, 50))) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.