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.
# S3 method for 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 cca
permutest(x, permutations = how(nperm = 99),
model = c("reduced", "direct", "full"), by = NULL, first = FALSE,
strata = NULL, parallel = getOption("mc.cores"), ...)
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).
One or several result objects from cca
,
rda
, dbrda
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.
A single ordination result object.
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.
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). Function permutest
accepts choices
"terms"
for sequential test of terms, and "onedf"
for sequential test of one-degree-of-freedom contrasts.
Permutation model: model="direct"
permutes
community data, model="reduced"
permutes residuals
of the community data after Conditions (partial model),
model = "full"
permutes residuals after Conditions and
Constraints.
Use parallel processing with the given number of cores.
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.
Only effective with by="axis"
where stops
permutations after an axis exceeds the cutoff
\(p\)-value.
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
.
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.
Jari Oksanen
Functions anova.cca
and permutest.cca
implement ANOVA
like permutation tests for the joint effect of constraints in
cca
, rda
, dbrda
or
capscale
. Function anova
is intended as a more
user-friendly alternative to permutest
(that is the real
workhorse).
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
significances. 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 degrees of freedom. 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 the total Chi-square is not fixed, and test based on
pseudo-\(F\) would differ from the test based on plain
eigenvalues.
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.
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
).
data(varespec, varechem)
mod <- cca(varespec ~ Al + P + K, varechem)
## overall test
anova(mod)
## tests for individual terms
anova(mod, by="term")
anova(mod, by="margin")
## test for adding all environmental variables
anova(mod, cca(varespec ~ ., varechem))
Run the code above in your browser using DataLab