`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, ...)
```

formula

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 CAP.data

Data frame containing the variables on the right hand side of
the model formula.

distance

The name of the dissimilarity (or distance) index if
the LHS of the

`formula`

is a data frame instead of
dissimilarity matrix.sqrt.dist

Take square roots of dissimilarities. See section

`Details`

below.comm

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'' unavailable.add

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). Choice `"lingoes"`

(or `TRUE`

) use the
recommended method of Legendre & Anderson (1999: “method
1”) and `"cailliez"`

uses their “method 2”. The
latter is the only one in `cmdscale`

.dfun

Distance or dissimilarity function used. Any function
returning standard

`"dist"`

and taking the index name as the
first argument can be used. metaMDSdist

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.na.action

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

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

`rda`

or to
`metaMDSdist`

. - The functions return an object of class

`capscale`

or
`dbrda`

which inherits from `rda`

. See
`cca.object`

for description of the result object. 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 with `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 dissimmilarities
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. Both methods define
total inertia of conditions, constraints and residuals identically.
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 similar 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.

Non-Euclidean dissimilarities can produce negative eigenvalues
(Legendre & Anderson 1999, McArdle & Anderson 2001). The total
inertia and `anova.cca`

tests for constraints will also
include the effects of imaginary axes with negative eigenvalues
following 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 postive eigenvalues. If negative eigenvalues
are disturbing, `capscale`

lets you to distort the
dissimilarities so that only non-negative eigenvalues will be
produced using argument `add = TRUE`

(this argument is passed
to `cmdscale`

). 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`

.

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`

. 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