R: Permutation Test for Constrained Correspondence Analysis,...

anova.cca {vegan} | R Documentation

## Permutation Test for Constrained Correspondence Analysis, Redundancy Analysis and Constrained Analysis of Principal Coordinates

### Description

The function performs an ANOVA like permutation test for Constrained Correspondence Analysis (`cca`), Redundancy Analysis (`rda`) or distance-based Redundancy Analysis (dbRDA, `capscale`) to assess the significance of constraints.

### Usage

    ## S3 method for class 'cca'
    anova(object, ..., permutations = how(nperm=999),
         by = NULL, model = c("reduced", "direct", "full"),
         parallel = getOption("mc.cores"), strata = NULL,
         cutoff = 1, scope = NULL)
    ## S3 method for class 'cca'
    permutest(x, permutations = how(nperm = 99),
         model = c("reduced", "direct"), first = FALSE, strata = NULL,
         parallel = getOption("mc.cores"),  ...)

### Arguments

`object` | One or several result objects from `cca`, `rda` or `capscale`. If there are several result objects, they are compared against each other in the order they were supplied. For a single object, a test specified in `by` or an overall test is given.
`x` | A single ordination result object.
`permutations` | a list of control values for the permutations as returned by the function `how`, or the number of permutations required, or a permutation matrix where each row gives the permuted indices.
`by` | Setting `by = "axis"` will assess significance for each constrained axis, and setting `by = "terms"` will assess significance for each term (sequentially from first to last), and setting `by = "margin"` will assess the marginal effects of the terms (each marginal term analysed in a model with all other variables)
`model` | Permutation model: `model="direct"` permutes community data, and `model="reduced"` permutes residuals of the community data after Conditions (partial model).
`parallel` | Use parallel processing with the given number of cores.
`strata` | An integer vector or factor specifying the strata for permutation. If supplied, observations are permuted only within the specified strata. It is an error to use this when `permutations` is a matrix, or a `how` defines `blocks`. This is a legacy argument that will be deprecated in the future: use `permutations = how(..., blocks)` instead.
`cutoff` | Only effective with `by="axis"` where stops permutations after an axis exceeds the `cutoff`.
`scope` | Only effective with `by="margin"` where it can be used to select the marginal terms for testing. The default is to test all marginal terms in `drop.scope`.
`first` | Analyse only significance of the first axis.
`...` | Parameters passed to other functions. `anova.cca` passes all arguments to `permutest.cca`. In `anova` with `by = "axis"` you can use argument `cutoff` (defaults `1`) which stops permutations after exceeding the given level.

### Details

Functions `anova.cca` and `permutest.cca` implement ANOVA like permutation tests for the joint effect of constraints in `cca`, `rda` or `capscale`. Functions `anova.cca` and `permutest.cca` differ in printout style and in interface. Function `permutest.cca` is the proper workhorse, but `anova.cca` passes all parameters to `permutest.cca`.

Function `anova` can analyse a sequence of constrained ordination models. The analysis is based on the differences in residual deviance in permutations of nested models.

The default test is for the sum of all constrained eigenvalues. Setting `first = TRUE` will perform a test for the first constrained eigenvalue. Argument `first` can be set either in `anova.cca` or in `permutest.cca`. It is also possible to perform significance tests for each axis or for each term (constraining variable) using argument `by` in `anova.cca`. Setting `by = "axis"` will perform separate significance tests for each constrained axis. All previous constrained axes will be used as conditions (“partialled out”) and a test for the first constrained eigenvalues is performed (Legendre et al. 2011). You can stop permutation tests after exceeding a given significance level with argument `cutoff` to speed up calculations in large models. Setting `by = "terms"` will perform separate significance test for each term (constraining variable). The terms are assessed sequentially from first to last, and the order of the terms will influence their significance. Setting `by = "margin"` will perform separate significance test for each marginal term in a model with all other terms. The marginal test also accepts a `scope` argument for the `drop.scope` which can be a character vector of term labels that are analysed, or a fitted model of lower scope. The marginal effects are also known as “Type III” effects, but the current function only evaluates marginal terms. It will, for instance, ignore main effects that are included in interaction terms. In calculating pseudo-F, all terms are compared to the same residual of the full model.

Community data are permuted with choice `model="direct"`, and residuals after partial CCA/ RDA/ dbRDA with choice `model="reduced"` (default). If there is no partial CCA/ RDA/ dbRDA stage, `model="reduced"` simply permutes the data and is equivalent to `model="direct"`. The test statistic is “pseudo-F”, which is the ratio of constrained and unconstrained total Inertia (Chi-squares, variances or something similar), each divided by their respective ranks. If there are no conditions (“partial” terms), the sum of all eigenvalues remains constant, so that pseudo-F and eigenvalues would give equal results. In partial CCA/ RDA/ dbRDA, the effect of conditioning variables (“covariables”) is removed before permutation, and these residuals are added to the non-permuted fitted values of partial CCA (fitted values of `X ~ Z`). Consequently, the total Chi-square is not fixed, and test based on pseudo-F would differ from the test based on plain eigenvalues. CCA is a weighted method, and environmental data are re-weighted at each permutation step using permuted weights.

### Value

The function `anova.cca` calls `permutest.cca` and fills an `anova` table. Additional attributes are `Random.seed` (the random seeds used), `control` (the permutation design, see how) and `F.perm` (the permuted test statistics).

### Note

Some cases of `anova` need access to the original data on constraints (at least `by = "term"` and `by = "margin"`), and they may fail if data are unavailable.

### Author(s)

Jari Oksanen

### References

Legendre, P. and Legendre, L. (2012). Numerical Ecology. 3rd English ed. Elsevier.

Legendre, P., Oksanen, J. and ter Braak, C.J.F. (2011). Testing the significance of canonical axes in redundancy analysis. Methods in Ecology and Evolution 2, 269–277.

### See Also

`anova.cca`, `cca`, `rda`, `capscale` to get something to analyse. Function `drop1.cca` calls `anova.cca` with `by = "margin"`, and `add1.cca` an analysis for single terms additions, which can be used in automatic or semiautomatic model building (see `deviance.cca`).

### Examples

    data(varespec)
    data(varechem)
    vare.cca <- cca(varespec ~ Al + P + K, varechem)
    ## overall test
    anova(vare.cca)

[Package vegan version 2.4-3 Index]