R: [Partial] Distance-based Redundancy Analysis

capscale {vegan} | R Documentation

## [Partial] Distance-based Redundancy Analysis

### Description

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.

### Usage

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

### Arguments

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

### Details

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

### Value

The functions return an object of class `capscale` or `dbrda` which inherits from `rda`. See `cca.object` for description of the result object.

### Note

The function `capscale` was originally developed as a variant of constrained analysis of proximities (Anderson & Willis 2003), but these developments made it became identical to dbRDA. In older version of vegan the total inertia and permutation tests were based only on real axes, but in vegan 2.4-0 they also include the imaginary components following McArdle & Anderson (2001). For compatibility with the old versions of vegan, you can use function `oldCapscale` to discard the effects of imaginary dimensions (negative eigenvalues).

The inertia is named after the dissimilarity index as defined in the dissimilarity data, or as `unknown distance` if such an information is missing. Function `rda` usually divides the ordination scores by number of sites minus one. In this way, the inertia is variance instead of sum of squares, and the eigenvalues sum up to variance. Many dissimilarity measures are in the range 0 to 1, so they have already made a similar division. If the largest original dissimilarity is less than or equal to 4 (allowing for `stepacross`), this division is undone in `capscale` and original dissimilarities are used. Keyword `mean` is added to the inertia in cases where division was made, e.g. in Euclidean and Manhattan distances. Inertia is based on squared index, and keyword `squared` is added to the name of distance, unless data were square root transformed (argument `sqrt.dist = TRUE`). If an additive constant was used with argument `add`, `Lingoes adjusted` or `Cailliez adjusted` is added to the the name of inertia, and the value of the constant is printed.

### Author(s)

Jari Oksanen

### References

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.

### See Also

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

### Examples

    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")

[Package vegan version 2.4-3 Index]