Learn R Programming

phytools (version 2.1-1)

brownieREML: REML version of brownie.lite

Description

Fits a multi-rate Brownian motion evolution model using REML. (See brownie.lite for more details.)

Usage

brownieREML(tree, x, maxit=2000, ...)

Value

An object of class "brownieREML" containing the following components:

sig2.single

is the rate, \(\sigma^2\), for a single rate model - this is usually the "null" model.

logL1

log-likelihood of the single-rate model.

sig2.multiple

is a length p (for p rates) vector of BM rates (\(\sigma_1^2\), \(\sigma_2^2\), and so on) from the multi-rate model.

logL2

log-likelihood of the multi-rate model.

convergence

numerical value from optim.

Arguments

tree

an object of class "phylo" or "simmap". (See read.simmap and make.simmap for more information about the latter object class.)

x

a vector of tip values for species. names(x) should be the species names.

maxit

an optional integer value indicating the maximum number of iterations for optimization - may need to be increased for large trees.

...

optional arguments.

Author

Liam Revell liam.revell@umb.edu

Details

This function takes an object of class "phylo" or an object of class "simmap" with a mapped binary or multi-state trait (see read.simmap) and data for a single continuously valued character. It then uses restricted maximum likelihood (REML) to fit the Brownian rate variation ("noncensored") model of O'Meara et al. (2006; Evolution). This function is similar to brownie.lite but uses REML (which is faster and unbiased) instead of ML. REML optimization takes advantage of Felsenstein's (1985) contrasts algorithm.

References

Felsenstein, J. (1985) Phylogenies and the comparative method. American Naturalist, 125, 1-15.

O'Meara, B. C., C. Ane, M. J. Sanderson, and P. C. Wainwright (2006) Testing for different rates of continuous trait evolution using likelihood. Evolution, 60, 922-933.

Revell, L. J. (2024) phytools 2.0: an updated R ecosystem for phylogenetic comparative methods (and other things). PeerJ, 12, e16505.

See Also

brownie.lite, evol.vcv, evol.rate.mcmc, ratebytree

Examples

Run this code
## load data from Revell & Collar (2009)
data(sunfish.tree)
data(sunfish.data)
## extract character of interest
gape.width<-setNames(sunfish.data$gape.width,
    rownames(sunfish.data))
## fit model
multiBM.reml<-brownieREML(sunfish.tree,
	gape.width)
print(multiBM.reml)

Run the code above in your browser using DataLab