# Choose a Model by Permutation Tests in Constrained Ordination

### Description

Automatic stepwise model building for constrained ordination methods
(`cca`

, `rda`

, `capscale`

).
The function `ordistep`

is modelled after `step`

and
can do forward, backward and stepwise model selection using permutation tests.
Function `ordiR2step`

performs forward model choice solely on adjusted
*R2* and P-value, for ordination objects created by `rda`

or `capscale`

.

### Usage

1 2 3 4 5 6 | ```
ordistep(object, scope, direction = c("both", "backward", "forward"),
Pin = 0.05, Pout = 0.1, permutations = how(nperm = 199), steps = 50,
trace = TRUE, ...)
ordiR2step(object, scope, direction = c("both", "forward"),
Pin = 0.05, R2scope = TRUE, permutations = how(nperm = 499),
trace = TRUE, R2permutations = 1000, ...)
``` |

### Arguments

`object` |
In |

`scope` |
Defines the range of models examined in the stepwise search.
This should be either a single formula, or a list containing
components |

`direction` |
The mode of stepwise search, can be one of |

`Pin, Pout` |
Limits of permutation |

`R2scope` |
Use adjusted |

`permutations` |
a list of control values for the permutations as
returned by the function |

`steps` |
Maximum number of iteration steps of dropping and adding terms. |

`trace` |
If positive, information is printed during the model building. Larger values may give more information. |

`R2permutations` |
Number of permutations used in the estimation of
adjusted |

`...` |
Any additional arguments to |

### Details

The basic functions for model choice in constrained ordination are
`add1.cca`

and `drop1.cca`

. With these functions,
ordination models can be chosen with standard **R** function
`step`

which bases the term choice on AIC. AIC-like
statistics for ordination are provided by functions
`deviance.cca`

and `extractAIC.cca`

(with
similar functions for `rda`

). Actually, constrained
ordination methods do not have AIC, and therefore the `step`

may not be trusted. This function provides an alternative using
permutation *P*-values.

Function `ordistep`

defines the model, `scope`

of models
considered, and `direction`

of the procedure similarly as
`step`

. The function alternates with `drop`

and
`add`

steps and stops when the model was not changed during one
step. The `-`

and `+`

signs in the summary
table indicate which stage is performed. The number of permutations
is selected adaptively with respect to the defined decision limit. It
is often sensible to have `Pout`

*>* `Pin`

in stepwise
models to avoid cyclic adds and drops of single terms.

Function `ordiR2step`

builds model so that it maximizes
adjusted *R2* (function `RsquareAdj`

) at every
step, and stopping when the adjusted *R2* starts to
decrease, or the adjusted *R2* of the `scope`

is
exceeded, or the selected permutation *P*-value is exceeded
(Blanchet et al. 2008). The second criterion is ignored with option
`R2step = FALSE`

, and the third criterion can be ignored
setting `Pin = 1`

(or higher). The `direction`

has
choices `"forward"`

and `"both"`

, but it is very
exceptional that a term is dropped with the adjusted *R2*
criterion. Adjusted *R2* cannot be calculated if the number
of predictors is higher than the number of observations, but such
models can be analysed with `R2scope = FALSE`

. The
*R2* of `cca`

is based on simulations (see
`RsquareAdj`

) and different runs of `ordiR2step`

can give different results.

Functions `ordistep`

(based on *P* values) and `ordiR2step`

(based on adjusted *R2* and hence on eigenvalues) can select
variables in different order.

### Value

Functions return the selected model with one additional
component, `anova`

, which contains brief information of steps
taken. You can suppress voluminous output during model building by
setting `trace = FALSE`

, and find the summary of model history
in the `anova`

item.

### Author(s)

Jari Oksanen

### References

Blanchet, F. G., Legendre, P. & Borcard, D. (2008) Forward selection
of explanatory variables. *Ecology* 89, 2623–2632.

### See Also

The function handles constrained ordination methods `cca`

,
`rda`

and `capscale`

. The underlying functions
are `add1.cca`

and `drop1.cca`

, and the
function is modelled after standard `step`

(which also can
be used directly but uses AIC for model choice, see
`extractAIC.cca`

). Function `ordiR2step`

builds upon
`RsquareAdj`

.

### Examples

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | ```
## See add1.cca for another example
### Dune data
data(dune)
data(dune.env)
mod0 <- rda(dune ~ 1, dune.env) # Model with intercept only
mod1 <- rda(dune ~ ., dune.env) # Model with all explanatory variables
## With scope present, the default direction is "both"
ordistep(mod0, scope = formula(mod1), perm.max = 200)
## Example without scope. Default direction is "backward"
ordistep(mod1, perm.max = 200)
## Example of ordistep, forward
## Not run:
ordistep(mod0, scope = formula(mod1), direction="forward", perm.max = 200)
## End(Not run)
### Mite data
data(mite)
data(mite.env)
mite.hel = decostand(mite, "hel")
mod0 <- rda(mite.hel ~ 1, mite.env) # Model with intercept only
mod1 <- rda(mite.hel ~ ., mite.env) # Model with all explanatory variables
## Example of ordiR2step with default direction = "both"
## (This never goes "backward" but evaluates included terms.)
step.res <- ordiR2step(mod0, mod1, perm.max = 200)
step.res$anova # Summary table
## Example of ordiR2step with direction = "forward"
## Not run:
step.res <- ordiR2step(mod0, scope = formula(mod1), direction="forward")
step.res$anova # Summary table
## End(Not run)
``` |