`sim.fbd`

functions

`FossilSim`

can be used to simulate trees directly from a
fossilized-birth death process using the `sim.fbd`

family of
functions, whose interface is similar to the `sim.bd`

functions in `TreeSim`

. These functions return a list of
`SAtree`

objects, since the simulated trees may contain
sampled ancestors represented as tips with zero-length branches.

## Simulating trees from a time-homogeneous fossilized-birth death
process

As in `TreeSim`

, trees can be simulated while conditioning
either on the number of sampled extant taxa (using the
`sim.fbd.taxa`

function), or on the total age of the process
(using the `sim.fbd.age`

function). These functions require
the fossil sampling rate parameter `psi`

as an argument, but
otherwise take the same arguments as the `sim.bd.taxa`

and
`sim.bd.age`

functions in `TreeSim`

.

```
trees <- sim.fbd.taxa(n = 10, numbsim = 10, lambda = 3, mu = 2, psi = 2)
plot(trees[[1]])
```

A stratigraphic range representation of the tree and fossil samples
can be plotted using the `rangeplot.asymmetric`

function,
which assumes that all speciation events are asymmetric.

`rangeplot.asymmetric(trees[[1]])`

Note that when simulating a complete tree
(`complete = TRUE`

), tips in the resulting
`SAtree`

object represent extinction events, whereas they
represent fossil sampling events in the tree without unsampled lineages
(`complete = FALSE`

). The `complete`

field of
resulting the `SAtree`

object is set to the value of the
`complete`

function argument.

```
trees <- sim.fbd.taxa(n = 10, numbsim = 10, lambda = 3, mu = 2, psi = 2, complete = T)
print(trees[[1]]$complete)
```

`## [1] TRUE`

`rangeplot.asymmetric(trees[[1]])`

## Simulating trees from an episodic fossilized-birth death
process

Trees can also be simulated from a time-varying, piecewise constant
fossilized birth-death process using the
`sim.fbd.rateshift.taxa`

function. Apart from a vector of
interval specific `psi`

parameters, this function also takes
most of the same arguments as the corresponding
`sim.rateshift.taxa`

function in `TreeSim`

. At the
moment, this function assumes the sampling fraction of extant taxa
(`frac`

) is equal to 1.0 in all time intervals.

```
trees = sim.fbd.rateshift.taxa(n = 10, numbsim = 1, lambda = c(2,1), mu = c(0,0.3), psi = c(1,0.1), times = c(0,0.3))
rangeplot.asymmetric(trees[[1]])
```