sim.character: Simulate a Character Distribution on a Tree

View source: R/sim-character.R

sim.characterR Documentation

Simulate a Character Distribution on a Tree


Simulate a character distribution (state of each species) under some simple models of trait evolution. Currently this does not return the full history (node states, and state changes) but this may be added in a future version.


sim.character(tree, pars, x0=0, model="bm", br=NULL)
make.sim.character(tree, pars, model="bm", br=NULL)



A bifurcating phylogenetic tree, in ape “phylo” format.


A set of model parameters (see Details below), as the order and interpretation depends on the model.


Root state. The default is zero, which may not make sense in all models.


Character string specifying which model to evolve the character under. Possible values are "bm", "ou", "bbm", "mk" and "meristic"; see Details.


For cases where none of the models specifiable through the model argument are sufficient, you can provide your own function. The function must have arguments x0, t, which are the state at the base of a branch and the length of time to simulate over. It must return a scalar state at the tip of the branch. Future versions may change requirements of this function, especially to allow retention of character histories along branches.


This function duplicates functionality in other packages; see sim.char in geiger in particular. The main difference here is that for continuous characters, this does not use the variance-covariance matrix, which can make it much faster for very large trees. I believe that this approach is similar to fastBM in phytools.

  • model="bm": Brownian Motion. Takes a single parameter, representing the rate of diffusion (must be positive)

  • model="ou": Ornstein-Uhlenbeck process. Takes a vector of three parameters, representing the rate of diffusion, strength of restoring force, and the "optimum" value. The first two parameters must be non-negative, and the rate of diffusion must be positive.

  • model="bbm": Bounded Brownian Motion. Takes a vector of three parameters (s2, c, d), representing the rate of diffusion, lower and upper bound, respectively. The rate of diffusion must be positive.

    model="mk": Mk model (see make.mkn). Takes a Q matrix as its argument. The element Q[i,j] represents the rate of transition from state i to state j, and the diagonal elements must be such that rowSums(Q) is zero.

    model="meristic": A special case of the Mk model, where the trait is meristic and character transitions are only possible between adjacent states. There are three parameters (k, up, down), representing the number of states, and rate of character change up (from state i to i+1) and down.


Richard G. FitzJohn

diversitree documentation built on May 29, 2024, 4:38 a.m.