orthobasis.phylo {adephylo} R Documentation

## Computes Moran's eigenvectors from a tree or a phylogenetic proximity matrix

### Description

The function `orthobasis.phylo` (also nicknamed `me.phylo`) computes Moran's eigenvectors (ME) associated to a tree. If the tree has 'n' tips, (n-1) vectors will be produced. These vectors form an orthonormal basis: they are centred to mean zero, have unit variance, and are uncorrelated. Each vector models a different pattern of phylogenetic autocorrelation. The first vectors are those with maximum positive autocorrelation, while the last vectors are those with maximum negative autocorrelation. ME can be used, for instance, as regressors to remove phylogenetic autocorrelation from data (see references).

### Usage

```orthobasis.phylo(x = NULL, prox = NULL, method = c("patristic", "nNodes",
"oriAbouheif", "Abouheif", "sumDD"), f = function(x) {     1/x })
```

### Arguments

 `x` A tree of class `phylo`, phylo4 or phylo4d. `prox` a matrix of phylogenetic proximities as returned by `proxTips`. `method` a character string (full or abbreviated without ambiguity) specifying the method used to compute proximities; possible values are: - `patristic`: (inversed sum of) branch lengths - `nNodes`: (inversed) number of nodes on the path between the nodes - `oriAbouheif`: original Abouheif's proximity, with diagonal (see details in `proxTips`) - `Abouheif`: Abouheif's proximity (see details in `proxTips`) - `sumDD`: (inversed) sum of direct descendants of all nodes on the path (see details in `proxTips`). `f` a function to change a distance into a proximity.

### Details

ME can be obtained from a tree, specifying the phylogenetic proximity to be used. Alternatively, they can be obtained directly from a matrix of phylogenetic proximities as constructed by `proxTips`.

### Value

An object of class `orthobasis`. This is a data.frame with Moran's eigenvectors in column, with special attributes:
- attr(...,"values"): Moran's index for each vector - attr(...,"weights"): weights of tips; current implementation uses only uniform weights

### Author(s)

Thibaut Jombart tjombart@imperial.ac.uk

### References

Peres-Neto, P. (2006) A unified strategy for estimating and controlling spatial, temporal and phylogenetic autocorrelation in ecological models Oecologica Brasiliensis 10: 105-119.

Dray, S.; Legendre, P. \& Peres-Neto, P. (2006) Spatial modelling: a comprehensive framework for principal coordinate analysis of neighbours matrices (PCNM) Ecological Modelling 196: 483-493.

Griffith, D. \& Peres-Neto, P. (2006) Spatial modeling in ecology: the flexibility of eigenfunction spatial analyses Ecology 87: 2603-2613.

### See Also

- `proxTips` which computes phylogenetic proximities between tips.

- `treePart` which can compute an orthobasis based on the topology of a phylogeny.

### Examples

```
if(require(ape) && require(phylobase)){

## SIMPLE EXAMPLE ##
## make a tree
x <- rtree(50)

## compute Moran's eigenvectors
ME <- me.phylo(x, met="Abouheif")
ME

## plot the 10 first vectors
obj <- phylo4d(x, as.data.frame(ME[,1:10]))
table.phylo4d(obj, cex.sym=.7, cex.lab=.7)

## Not run:
## REMOVING PHYLOGENETIC AUTOCORRELATION IN A MODEL ##
## use example in ungulates dataset
data(ungulates)
tre <- read.tree(text=ungulates\$tre)
plot(tre)

## look at two traits
afbw <- log(ungulates\$tab[,1])
neonatw <- log((ungulates\$tab[,2]+ungulates\$tab[,3])/2)
names(afbw) <- tre\$tip.label
names(neonatw) <- tre\$tip.label
plot(afbw, neonatw) # relationship between traits
lm1 <- lm(neonatw~afbw)
abline(lm1)

lm1
resid1 <- residuals(lm1)
orthogram(resid1, tre) # residuals are autocorrelated

## compute Moran's eigenvectors (ME)
myME <- me.phylo(tre, method="Abou")
lm2 <- lm(neonatw ~ myME[,1] + afbw) # use for ME as covariable
resid2 <- residuals(lm2)
orthogram(resid2, tre) # there is no longer phylogenetic autocorrelation

## see the difference
table.phylo4d(phylo4d(tre, cbind.data.frame(resid1, resid2)))

## End(Not run)
}

```

[Package adephylo version 1.1-11 Index]