Distance-based redundancy analysis (dbRDA) is an ordination method
similar to Redundancy Analysis (rda
), but it allows
non-Euclidean dissimilarity indices, such as Manhattan or
Bray--Curtis distance. Despite this non-Euclidean feature, the analysis
is strictly linear and metric. If called with Euclidean distance,
the results are identical to rda
, but dbRDA
will be less efficient. Functions capscale
and dbrda
are
constrained versions of metric scaling, a.k.a. principal coordinates
analysis, which are based on the Euclidean distance but can be used,
and are more useful, with other dissimilarity measures. The functions
can also perform unconstrained principal coordinates analysis,
optionally using extended dissimilarities.
capscale(formula, data, distance = "euclidean", sqrt.dist = FALSE,
comm = NULL, add = FALSE, dfun = vegdist, metaMDSdist = FALSE,
na.action = na.fail, subset = NULL, ...)
dbrda(formula, data, distance = "euclidean", sqrt.dist = FALSE,
add = FALSE, dfun = vegdist, metaMDSdist = FALSE,
na.action = na.fail, subset = NULL, ...)
The functions return an object of class capscale
or
dbrda
which inherits from rda
. See
cca.object
for description of the result object.
Model formula. The function can be called only with the
formula interface. Most usual features of formula
hold,
especially as defined in cca
and rda
. The
LHS must be either a community data matrix or a dissimilarity matrix,
e.g., from
vegdist
or dist
.
If the LHS is a data matrix, function vegdist
or
function given in dfun
will be used to find the dissimilarities. The RHS defines the
constraints. The constraints can be continuous variables or factors,
they can be transformed within the formula, and they can have
interactions as in a typical formula
. The RHS can have a
special term Condition
that defines variables to be
“partialled out” before constraints, just like in rda
or cca
. This allows the use of partial dbRDA.
Data frame containing the variables on the right hand side of the model formula.
The name of the dissimilarity (or distance) index if
the LHS of the formula
is a data frame instead of
dissimilarity matrix.
Take square roots of dissimilarities. See section
Details
below.
Community data frame which will be used for finding
species scores when the LHS of the formula
was a
dissimilarity matrix. This is not used if the LHS is a data
frame. If this is not supplied, the “species scores” are
unavailable when dissimilarities were supplied. N.B., this is
only available in capscale
: dbrda
does not return
species scores. Function sppscores
can be used to add
species scores if they are missing.
Add a constant to the non-diagonal dissimilarities such
that all eigenvalues are non-negative in the underlying Principal
Co-ordinates Analysis (see wcmdscale
for
details). "lingoes"
(or TRUE
) uses the
recommended method of Legendre & Anderson (1999: “method
1”) and "cailliez"
uses their “method 2”. The
latter is the only one in cmdscale
.
Distance or dissimilarity function used. Any function
returning standard "dist"
and taking the index name as the
first argument can be used.
Use metaMDSdist
similarly as in
metaMDS
. This means automatic data transformation and
using extended flexible shortest path dissimilarities (function
stepacross
) when there are many dissimilarities based on
no shared species.
Handling of missing values in constraints or
conditions. The default (na.fail
) is to stop
with missing values. Choices na.omit
and
na.exclude
delete rows with missing values, but
differ in representation of results. With na.omit
only
non-missing site scores are shown, but na.exclude
gives
NA
for scores of missing observations. Unlike in
rda
, no WA scores are available for missing
constraints or conditions.
Subset of data rows. This can be a logical vector
which is TRUE
for kept observations, or a logical
expression which can contain variables in the working
environment, data
or species names of the community data
(if given in the formula or as comm
argument).
Other parameters passed to underlying functions (e.g.,
metaMDSdist
).
Jari Oksanen
Functions capscale
and dbrda
provide two alternative
implementations of dbRDA. Function capscale
is based on
Legendre & Anderson (1999): the dissimilarity data are first
ordinated using metric scaling, and the ordination results are
analysed as rda
. Function dbrda
is based on
McArdle & Anderson (2001) and directly decomposes
dissimilarities. It does not use rda
but a parallel
implementation adapted for analysing dissimilarities and returns a
subset of rda
items. With Euclidean distances both
results are identical to rda
. Other dissimilarities
may give negative eigenvalues associated with imaginary
axes. Negative eigenvalues are handled differently: capscale
ignores imaginary axes and analyses only real axes with positive
eigenvalues, and dbrda
directly analyses dissimilarities and
can give negative eigenvalues in any component.
If the user supplied a community data frame instead of
dissimilarities, the functions will find dissimilarities using
vegdist
or distance function given in dfun
with
specified distance
. The functions will accept distance
objects from vegdist
, dist
, or any other
method producing compatible objects. The constraining variables can be
continuous or factors or both, they can have interaction terms, or
they can be transformed in the call. Moreover, there can be a
special term Condition
just like in rda
and
cca
so that “partial” analysis can be performed.
Function dbrda
does not return species scores, and they can
also be missing in capscale
, but they can be added after the
analysis using function sppscores
.
Non-Euclidean dissimilarities can produce negative eigenvalues
(Legendre & Anderson 1999, McArdle & Anderson 2001). If there are
negative eigenvalues, the printed output of capscale
will add
a column with sums of positive eigenvalues and an item of sum of
negative eigenvalues, and dbrda
will add a column giving the
number of real dimensions with positive eigenvalues. If negative
eigenvalues are disturbing, functions let you to distort the
dissimilarities so that only non-negative eigenvalues will be
produced with argument add = TRUE
. Alternatively, with
sqrt.dist = TRUE
, square roots of dissimilarities will be
used which may help in avoiding negative eigenvalues (Legendre &
Anderson 1999).
The functions can be also used to perform ordinary metric scaling
a.k.a. principal coordinates analysis by using a formula with only a
constant on the left hand side, or comm ~ 1
. With
metaMDSdist = TRUE
, the function can do automatic data
standardization and use extended dissimilarities using function
stepacross
similarly as in non-metric multidimensional
scaling with metaMDS
.
Anderson, M.J. & Willis, T.J. (2003). Canonical analysis of principal coordinates: a useful method of constrained ordination for ecology. Ecology 84, 511--525.
Gower, J.C. (1985). Properties of Euclidean and non-Euclidean distance matrices. Linear Algebra and its Applications 67, 81--97.
Legendre, P. & Anderson, M. J. (1999). Distance-based redundancy analysis: testing multispecies responses in multifactorial ecological experiments. Ecological Monographs 69, 1--24.
Legendre, P. & Legendre, L. (2012). Numerical Ecology. 3rd English Edition. Elsevier.
McArdle, B.H. & Anderson, M.J. (2001). Fitting multivariate models to community data: a comment on distance-based redundancy analysis. Ecology 82, 290--297.
rda
, cca
, plot.cca
,
anova.cca
, vegdist
,
dist
, cmdscale
, wcmdscale
for underlying and related functions. Function sppscores
can add species scores or replace existing species scores.
The function returns similar result object as rda
(see
cca.object
). This section for rda
gives a
more complete list of functions that can be used to access and
analyse dbRDA results.
data(varespec)
data(varechem)
## Basic Analysis
vare.cap <- capscale(varespec ~ N + P + K + Condition(Al), varechem,
dist="bray")
vare.cap
plot(vare.cap)
anova(vare.cap)
## Avoid negative eigenvalues with additive constant
capscale(varespec ~ N + P + K + Condition(Al), varechem,
dist="bray", add =TRUE)
## Avoid negative eigenvalues by taking square roots of dissimilarities
capscale(varespec ~ N + P + K + Condition(Al), varechem,
dist = "bray", sqrt.dist= TRUE)
## Principal coordinates analysis with extended dissimilarities
capscale(varespec ~ 1, dist="bray", metaMDS = TRUE)
## dbrda
dbrda(varespec ~ N + P + K + Condition(Al), varechem,
dist="bray")
## avoid negative eigenvalues also with Jaccard distances
dbrda(varespec ~ N + P + K + Condition(Al), varechem,
dist="jaccard")
Run the code above in your browser using DataLab