evopca {adiv} | R Documentation |
Evolutionary Principal Component analyses
Description
The functions evopcachord
and evopcahellinger
perform two adaptations of Principal Component Analysis (PCA) for the analysis of phylogenetic diversity patterns across species communities: the evolutionary PCA based on Chord distance (evoPCAChord) and the evolutionary PCA based on Hellinger distance (evoPCAHellinger) (Pavoine 2016).
Usage
evopcachord(phyl, comm, option = c("centred", "decentred"),
w = c("evoab", "even", "speciesab"), scannf = TRUE,
nf = 2, abundance = TRUE)
evopcahellinger(phyl, comm, option = c("centred", "decentred"),
w = c("evoab", "even", "speciesab"), scannf = TRUE,
nf = 2, abundance = TRUE)
Arguments
phyl |
an object inheriting the class |
comm |
a data frame or a matrix typically with communities as rows, species as columns and presence/absence (1/0) or an index of abundance as entries. Species should be labeled as in the phylogenetic tree where they are the tips. |
option |
a string: either |
w |
a string: either |
scannf |
a logical value indicating whether the screeplot (eigenvalues) should be displayed for choosing the number of axes to be kept. |
nf |
if |
abundance |
a logical value. If |
Details
Let L_k
be the length of branch k in the phylogenetic tree (out of K branches); a_{jk}
the sum of abundances, in community j, for all species descending from branch k; w_j
a positive weight attributed to community j (the definition for w_j
is flexible with the only requirement that \sum_{j=1}^m w_j=1
);
a_{j+}=\sum_{k=1}^K L_k a_{jk}
; a_{+k}=\sum_{j=1}^m a_{jk}
; a_{++}=\sum_{j=1}^m\sum_{k=1}^K L_k a_{jk}
.
The weights of the communities (argument w
) can be "even"
(even weights, i.e. relative abundances
are considered for evolutionary units), "evoab"
(proportional to the summed abundances of all evolutionary units, i.e. absolute abundances are considered for evolutionary units), or "speciesab"
(proportional to the summed abundances of all species). Note that if the phylogenetic tree is ultrametric (the distance from any species to the root is constant), then options "evoab"
and "speciesab"
are equivalent.
In evopcahellinger
, as recommended by Rao (1995), the vector used to centre matrix (\sqrt{a_{jk}/a_{j+}})_{j,k}
in PCA can be defined as
\left(\sum_{j=1}^m w_j \sqrt{a_{jk}/a_{j+}}\right)_k
(ordinary weighted mean, option "centered"
)
or as
\left(\sqrt{(\sum_{j=1}^m w_j a_{jk})/(\sum_{k=1}^K L_k \sum_{j=1}^m w_j a_{jk})}\right)_k
(option "decentered"
); see Pavoine (2016) for an introduction of all ordination approaches.
Similarly, in evopcachord
, the vector used to centre matrix (a_{jk}/\sqrt{\sum_{k=1}^K a_{jk}^2})_{j,k}
can be defined as
\left(\sum_{j=1}^m w_j a_{jk}/\sqrt{\sum_{k=1}^K a_{jk}^2}\right)_k
(ordinary weighted mean, option "centered"
)
or as
\left((\sum_{j=1}^m w_j a_{jk})/\sqrt{\sum_{k=1}^K L_k (\sum_{j=1}^m w_j a_{jk})^2}\right)_k
(option "decentered"
).
Value
evopcachord
and evopcahellinger
both return an object of class evopca
and of class dudi
(see package ade4). Graphical tools are associated with class dudi
in packages ade4 and adegraphics (see section "Examples" below).
The returned object contains the following components:
tab |
a data frame with n rows and p columns, with communities as rows and nodes of the phylogeny as columns. Internal data frame used by the algorithm; |
cw |
weights attributed to the nodes of the phylogeny, a vector with p components; |
lw |
weights attributed to the communities, a vector with n components; |
eig |
vector of eigenvalues; |
rank |
integer, number of axes; |
nf |
integer, number of kept axes; |
c1 |
normed scores for the nodes of the phylogeny, data frame with p rows and nf columns; |
l1 |
normed scores for the communities, data frame with n rows and nf columns; |
co |
scores for the nodes of the phylogeny, data frame with p rows and nf columns; |
li |
scores for the communities, data frame with n rows and nf columns; |
call |
the original call. |
If X is an object of class evopca
, then attributes(X)$phy
contains the phylogenetic tree (of class phylo
) with names for internal nodes.
Author(s)
Sandrine Pavoine sandrine.pavoine@mnhn.fr
References
Pavoine, S. (2016) A guide through a family of phylogenetic dissimilarity measures among sites. Oikos, 125, 1719–1732.
Rao, C.R. (1995) A review of canonical coordinates and an alternative to correspondence analysis using Hellinger distance. Questiio, 19, 23–63.
See Also
Examples
## Not run:
if(require(ade4) && require(ape) && require(adegraphics)){
O <- adegpar()$plabels$optim
adegpar("plabels.optim" = TRUE)
data(batcomm)
ab <- batcomm$ab
phy <- read.tree(text=batcomm$tre)
plot(phy, show.node=TRUE)
evopcaHbat <- evopcahellinger(phy, ab, scan=FALSE, nf=3)
dist(evopcaHbat$li)
evodiss(phy, ab, "Hellinger")
evopcaHbat$eig/sum(evopcaHbat$eig)
s.label(evopcaHbat$li)
s.label(evopcaHbat$co)
s.arrow(evopcaHbat$co)
inertia.dudi(evopcaHbat, row=TRUE)$row.abs
inertia.dudi(evopcaHbat, col=TRUE)$col.abs
evopcaCbat <- evopcachord(phy, ab, scan=FALSE, nf=3)
dist(evopcaCbat$li)
evodiss(phy, ab, "Chord")
evopcaCbat$eig/sum(evopcaCbat$eig)
s.label(evopcaCbat$li)
s.label(evopcaCbat$co)
s.arrow(evopcaCbat$co)
inertia.dudi(evopcaCbat, row=TRUE)$row.abs
inertia.dudi(evopcaCbat, col=TRUE)$col.abs
adegpar("plabels.optim" = O)
}
## End(Not run)