PCMSim: Simulation of a phylogenetic comparative model on a tree

View source: R/PCM.R

PCMSimR Documentation

Simulation of a phylogenetic comparative model on a tree

Description

Generate trait data on a tree according to a multivariate stochastic model with one or several regimes

Usage

PCMSim(
  tree,
  model,
  X0,
  SE = matrix(0, PCMNumTraits(model), PCMTreeNumTips(tree)),
  metaI = PCMInfo(X = NULL, tree = tree, model = model, SE = SE, verbose = verbose),
  verbose = FALSE
)

Arguments

tree

a phylo object specifying a rooted tree.

model

an S3 object specifying the model (see Details).

X0

a numeric vector of length k (the number of traits) specifying the trait values at the root of the tree.

SE

a k x N matrix specifying the standard error for each measurement in X. Alternatively, a k x k x N cube specifying an upper triangular k x k factor of the variance covariance matrix for the measurement error for each node i=1, ..., N. Default: matrix(0.0, PCMNumTraits(model), PCMTreeNumTips(tree)).

metaI

a named list containing meta-information about the data and the model.

verbose

a logical indicating if informative messages should be written during execution.

Details

Internally, this function uses the PCMCond implementation for the given model class.

Value

numeric M x k matrix of values at all nodes of the tree, i.e. root, internal and tip, where M is the number of nodes: M=dim(tree$edge)[1]+1, with indices from 1 to N=length(tree$tip.label) corresponding to tips, N+1 corresponding to the root and bigger than N+1 corresponding to internal nodes. The function will fail in case that the length of the argument vector X0 differs from the number of traits specified in metaI$k. Error message: "PCMSim:: X0 must be of length ...".

See Also

PCMLik PCMInfo PCMCond

Examples

N <- 10
L <- 100.0
tr <- ape::stree(N)
tr$edge.length <- rep(L, N)
for(epoch in seq(1, L, by = 1.0)) {
  tr <- PCMTreeInsertSingletonsAtEpoch(tr, epoch)
}

model <- PCMBaseTestObjects$model_MixedGaussian_ab

PCMTreeSetPartRegimes(tr, c(`11` = 'a'), setPartition = TRUE)

set.seed(1, kind = "Mersenne-Twister", normal.kind = "Inversion")
X <- PCMSim(tr, model, X0 = rep(0, 3))



venelin/PCMBase documentation built on March 14, 2024, 8:24 p.m.