evol.vcv: Likelihood test for variation in the evolutionary variance-covariance matrix
Description
Fits a multi-regime multivariate Brownian motion model following Revell & Collar (2009).
Usage
evol.vcv(tree, X, maxit=2000, vars=FALSE, ...)
Arguments
Value
An object of class "evol.vcv" with the following elements:
R.single
vcv matrix for the single rate matrix model.
vars.single
optionally, a matrix containing the variances of the elements of R.single.
logL1
log-likelihood for single matrix model.
k1
number of parameters in the single matrix model.
R.multiple
m x m x p array containing the p estimated vcv matrices for the p regimes painted on the tree.
vars.multiple
optionally, an array containing the variances of the parameter estimates in R.multiple.
logL.multiple
log-likelihood of the multi-matrix model.
k2
number of parameters estimated in this model.
P.chisq
P-value of the \(\chi^2\) test on the likelihood ratio.
convergence
logical value indicating whether or not the optimization has converged.
Details
The function takes an object of class "simmap" with a mapped binary or multi-state trait and data for an arbitrary number of continuously valued character. It then fits the multiple evolutionary variance-covariance matrix (rate matrix) model of Revell & Collar (2009; Evolution).
evol.vcv performs optimization by maximizing the likelihood with respect to the Cholesky matrices using optim. Optimization is by method="Nelder-Mead". Using box constraints does not make sense here as they would be applied to the Cholesky matrix rather than the target parameters. Users may have to increase maxit for large trees and/or more than two traits.
References
Revell, L. J. (2024) phytools 2.0: an updated R ecosystem for phylogenetic comparative methods (and other things). PeerJ, 12, e16505.
Revell, L. J., and D. C. Collar (2009) Phylogenetic analysis of the evolutionary correlation using likelihood. Evolution, 63, 1090-1100.
## load data from Revell & Collar (2009)data(sunfish.tree)
data(sunfish.data)
## fit multi-correlation modelsunfish.fit<-evol.vcv(sunfish.tree,sunfish.data[,2:3])
print(sunfish.fit)