pic.ortho: Phylogenetically Independent Orthonormal Contrasts

View source: R/pic.R

pic.orthoR Documentation

Phylogenetically Independent Orthonormal Contrasts

Description

This function computes the orthonormal contrasts using the method described by Felsenstein (2008). Only a single trait can be analyzed; there can be several observations per species.

Usage

pic.ortho(x, phy, var.contrasts = FALSE, intra = FALSE)

Arguments

x

a numeric vector or a list of numeric vectors.

phy

an object of class "phylo".

var.contrasts

logical, indicates whether the expected variances of the contrasts should be returned (default to FALSE).

intra

logical, whether to return the intraspecific contrasts.

Details

The data x can be in two forms: a vector if there is a single observation for each species, or a list whose elements are vectors containing the individual observations for each species. These vectors may be of different lengths.

If x has names, its values are matched to the tip labels of phy, otherwise its values are taken to be in the same order than the tip labels of phy.

Value

either a vector of contrasts, or a two-column matrix with the contrasts in the first column and their expected variances in the second column (if var.contrasts = TRUE). If the tree has node labels, these are used as labels of the returned object.

If intra = TRUE, the attribute "intra", a list of vectors with the intraspecific contrasts or NULL for the species with a one observation, is attached to the returned object.

Author(s)

Emmanuel Paradis

References

Felsenstein, J. (2008) Comparative methods with sampling error and within-species variation: Contrasts revisited and revised. American Naturalist, 171, 713–725.

See Also

pic, varCompPhylip

Examples

tr <- rcoal(30)
### a single observation per species:
x <- rTraitCont(tr)
pic.ortho(x, tr)
pic.ortho(x, tr, TRUE)
### different number of observations per species:
x <- lapply(sample(1:5, 30, TRUE), rnorm)
pic.ortho(x, tr, intra = TRUE)

ape documentation built on May 29, 2024, 10:50 a.m.