Sources

R packages

"ape" (Paradis et al 2004)

"TreeSim" (Stadler 2014)

Codes

We begin by simulating trees that we will use below to simulate traits.

Example 1: trees simulated by random splits

library(ape)
tr <- rtree(10)
tr
## 
## Phylogenetic tree with 10 tips and 9 internal nodes.
## 
## Tip labels:
## 	t2, t7, t5, t4, t10, t1, ...
## 
## Rooted; includes branch lengths.
TR <- rmtree(10, 10)
TR
## 10 phylogenetic trees

The function rmtree calls repeatedly rtree and outputs the result in the appropriate format (here the object TR).

Example 2: trees simulated by speciation–extinction

trbd <- rlineage(0.1, 0.05)
Ntip(trbd)
## [1] 24
trbd2 <- rbdtree(0.1, 0.05)
Ntip(trbd2)
## [1] 22
is.ultrametric(trbd)
## [1] FALSE
is.ultrametric(trbd2)
## [1] TRUE
is.ultrametric(drop.fossil(trbd))
## [1] TRUE
Ntip(drop.fossil(trbd))
## [1] 12

The function rlineage simulates a tree which includes the extinct species, so this tree is not ultrametric. The function rbdtree does the same but the extinct species are not output, so the final tree is ultrametric. The function drop.fossil deletes the lineages with no descendants at present (the end of the simulation). Note that the number of species at the end of the simulation (n) is a random variable.

Example 3: conditional simulation of speciation–extinction trees

The package TreeSim makes possible to simulate trees with a fixed value of n. The functions are sim.bd.age, sim.bd.taxa, and sim.bd.taxa.age, where the name of the function indicates whether the simulation is done with fixed T (age) and/or n (taxa).

In this example, we simulate two trees wiht n = 10, T = 50, λ = 0.1, and μ = 0.05:

library(TreeSim)
TR2 <- sim.bd.taxa.age(n = 10, numbsim = 2, lambda = 0.1, mu = 0.05, age = 50)
TR2
## [[1]]
## 
## Phylogenetic tree with 10 tips and 9 internal nodes.
## 
## Tip labels:
## 	t6, t9, t5, t8, t1, t3, ...
## 
## Rooted; includes branch lengths.
## 
## [[2]]
## 
## Phylogenetic tree with 10 tips and 9 internal nodes.
## 
## Tip labels:
## 	t1, t3, t6, t9, t5, t4, ...
## 
## Rooted; includes branch lengths.

The trees are returned in a simple list, but the class can be changed easily:

class(TR2) <- "multiPhylo"
TR2
## 2 phylogenetic trees

The functions in this package have some options to simulate random sampling of taxa.

References