Description Usage Arguments Details Value Author(s) References See Also Examples
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
.
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, ...)
|
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 P-values for adding ( |
R2scope |
Use adjusted R2 as the stopping criterion: only models with lower adjusted R2 than scope are accepted. |
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. |
... |
Any additional arguments to |
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. Function
uses adjusted R2 as the criterion, and it cannot be used if
the criterion cannot be calculated. Therefore it is unavailable for
cca
. 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
.
Functions ordistep
(based on P values) and ordiR2step
(based on adjusted R2 and hence on eigenvalues) can select
variables in different order.
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.
Jari Oksanen
Blanchet, F. G., Legendre, P. & Borcard, D. (2008) Forward selection of explanatory variables. Ecology 89, 2623–2632.
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
.
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)
|
Loading required package: permute
Loading required package: lattice
This is vegan 2.4-3
Start: dune ~ 1
Df AIC F Pr(>F)
+ Management 3 87.082 2.8400 0.005 **
+ Moisture 3 87.707 2.5883 0.005 **
+ Manure 4 89.232 1.9539 0.010 **
+ A1 1 89.591 1.9217 0.070 .
+ Use 2 91.032 1.1741 0.280
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: dune ~ Management
Df AIC F Pr(>F)
- Management 3 89.62 2.84 0.005 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Df AIC F Pr(>F)
+ Moisture 3 85.567 1.9764 0.005 **
+ Manure 3 87.517 1.3902 0.055 .
+ A1 1 87.424 1.2965 0.265
+ Use 2 88.284 1.0510 0.440
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: dune ~ Management + Moisture
Df AIC F Pr(>F)
- Moisture 3 87.082 1.9764 0.010 **
- Management 3 87.707 2.1769 0.005 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Df AIC F Pr(>F)
+ Manure 3 85.762 1.1225 0.285
+ A1 1 86.220 0.8359 0.570
+ Use 2 86.842 0.8027 0.765
Call: rda(formula = dune ~ Management + Moisture, data = dune.env)
Inertia Proportion Rank
Total 84.1237 1.0000
Constrained 46.4249 0.5519 6
Unconstrained 37.6988 0.4481 13
Inertia is variance
Eigenvalues for constrained axes:
RDA1 RDA2 RDA3 RDA4 RDA5 RDA6
21.588 14.075 4.123 3.163 2.369 1.107
Eigenvalues for unconstrained axes:
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13
8.241 7.138 5.355 4.409 3.143 2.770 1.878 1.741 0.952 0.909 0.627 0.311 0.227
Start: dune ~ A1 + Moisture + Management + Use + Manure
Df AIC F Pr(>F)
- A1 1 85.933 0.7933 0.660
- Use 2 86.056 0.8330 0.630
- Manure 3 87.357 1.0737 0.365
- Management 2 87.672 1.1976 0.225
- Moisture 3 88.818 1.3320 0.170
Step: dune ~ Moisture + Management + Use + Manure
Df AIC F Pr(>F)
- Use 2 85.762 0.8441 0.635
- Manure 3 86.842 1.1004 0.355
- Management 2 87.201 1.2054 0.315
- Moisture 3 88.546 1.4355 0.120
Step: dune ~ Moisture + Management + Manure
Df AIC F Pr(>F)
- Manure 3 85.567 1.1225 0.325
- Management 2 86.060 1.1986 0.255
- Moisture 3 87.517 1.5788 0.055 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: dune ~ Moisture + Management
Df AIC F Pr(>F)
- Moisture 3 87.082 1.9764 0.015 *
- Management 3 87.707 2.1769 0.005 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Call: rda(formula = dune ~ Moisture + Management, data = dune.env)
Inertia Proportion Rank
Total 84.1237 1.0000
Constrained 46.4249 0.5519 6
Unconstrained 37.6988 0.4481 13
Inertia is variance
Eigenvalues for constrained axes:
RDA1 RDA2 RDA3 RDA4 RDA5 RDA6
21.588 14.075 4.123 3.163 2.369 1.107
Eigenvalues for unconstrained axes:
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13
8.241 7.138 5.355 4.409 3.143 2.770 1.878 1.741 0.952 0.909 0.627 0.311 0.227
Start: dune ~ 1
Df AIC F Pr(>F)
+ Management 3 87.082 2.8400 0.005 **
+ Moisture 3 87.707 2.5883 0.005 **
+ Manure 4 89.232 1.9539 0.015 *
+ A1 1 89.591 1.9217 0.040 *
+ Use 2 91.032 1.1741 0.305
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: dune ~ Management
Df AIC F Pr(>F)
+ Moisture 3 85.567 1.9764 0.005 **
+ Manure 3 87.517 1.3902 0.065 .
+ A1 1 87.424 1.2965 0.210
+ Use 2 88.284 1.0510 0.370
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: dune ~ Management + Moisture
Df AIC F Pr(>F)
+ Manure 3 85.762 1.1225 0.29
+ A1 1 86.220 0.8359 0.62
+ Use 2 86.842 0.8027 0.70
Call: rda(formula = dune ~ Management + Moisture, data = dune.env)
Inertia Proportion Rank
Total 84.1237 1.0000
Constrained 46.4249 0.5519 6
Unconstrained 37.6988 0.4481 13
Inertia is variance
Eigenvalues for constrained axes:
RDA1 RDA2 RDA3 RDA4 RDA5 RDA6
21.588 14.075 4.123 3.163 2.369 1.107
Eigenvalues for unconstrained axes:
PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13
8.241 7.138 5.355 4.409 3.143 2.770 1.878 1.741 0.952 0.909 0.627 0.311 0.227
Step: R2.adj= 0
Call: mite.hel ~ 1
R2.adjusted
<All variables> 0.43670383
+ WatrCont 0.26084533
+ Shrub 0.20716190
+ Topo 0.15205437
+ Substrate 0.07718348
+ SubsDens 0.02632468
<none> 0.00000000
Df AIC F Pr(>F)
+ WatrCont 1 -84.336 25.35 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.2608453
Call: mite.hel ~ WatrCont
R2.adjusted
<All variables> 0.4367038
+ Shrub 0.3177536
+ Topo 0.3120057
+ Substrate 0.3091579
+ SubsDens 0.3066715
<none> 0.2608453
Df AIC F Pr(>F)
+ Shrub 2 -88.034 3.836 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.3177536
Call: mite.hel ~ WatrCont + Shrub
R2.adjusted
<All variables> 0.4367038
+ Substrate 0.3653551
+ Topo 0.3525851
+ SubsDens 0.3446967
<none> 0.3177536
Df AIC F Pr(>F)
+ Substrate 6 -87.768 1.8251 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.3653551
Call: mite.hel ~ WatrCont + Shrub + Substrate
R2.adjusted
<All variables> 0.4367038
+ Topo 0.4004249
+ SubsDens 0.3901844
<none> 0.3653551
Df AIC F Pr(>F)
+ Topo 1 -90.924 4.5095 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.4004249
Call: mite.hel ~ WatrCont + Shrub + Substrate + Topo
R2.adjusted
<All variables> 0.4367038
+ SubsDens 0.4367038
<none> 0.4004249
Df AIC F Pr(>F)
+ SubsDens 1 -94.489 4.7999 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.4367038
Call: mite.hel ~ WatrCont + Shrub + Substrate + Topo + SubsDens
R2.adj Df AIC F Pr(>F)
+ WatrCont 0.26085 1 -84.336 25.3499 0.002 **
+ Shrub 0.31775 2 -88.034 3.8360 0.002 **
+ Substrate 0.36536 6 -87.768 1.8251 0.002 **
+ Topo 0.40042 1 -90.924 4.5095 0.002 **
+ SubsDens 0.43670 1 -94.489 4.7999 0.002 **
<All variables> 0.43670
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0
Call: mite.hel ~ 1
R2.adjusted
<All variables> 0.43670383
+ WatrCont 0.26084533
+ Shrub 0.20716190
+ Topo 0.15205437
+ Substrate 0.07718348
+ SubsDens 0.02632468
<none> 0.00000000
Df AIC F Pr(>F)
+ WatrCont 1 -84.336 25.35 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.2608453
Call: mite.hel ~ WatrCont
R2.adjusted
<All variables> 0.4367038
+ Shrub 0.3177536
+ Topo 0.3120057
+ Substrate 0.3091579
+ SubsDens 0.3066715
<none> 0.2608453
Df AIC F Pr(>F)
+ Shrub 2 -88.034 3.836 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.3177536
Call: mite.hel ~ WatrCont + Shrub
R2.adjusted
<All variables> 0.4367038
+ Substrate 0.3653551
+ Topo 0.3525851
+ SubsDens 0.3446967
<none> 0.3177536
Df AIC F Pr(>F)
+ Substrate 6 -87.768 1.8251 0.004 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.3653551
Call: mite.hel ~ WatrCont + Shrub + Substrate
R2.adjusted
<All variables> 0.4367038
+ Topo 0.4004249
+ SubsDens 0.3901844
<none> 0.3653551
Df AIC F Pr(>F)
+ Topo 1 -90.924 4.5095 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.4004249
Call: mite.hel ~ WatrCont + Shrub + Substrate + Topo
R2.adjusted
<All variables> 0.4367038
+ SubsDens 0.4367038
<none> 0.4004249
Df AIC F Pr(>F)
+ SubsDens 1 -94.489 4.7999 0.002 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Step: R2.adj= 0.4367038
Call: mite.hel ~ WatrCont + Shrub + Substrate + Topo + SubsDens
R2.adj Df AIC F Pr(>F)
+ WatrCont 0.26085 1 -84.336 25.3499 0.002 **
+ Shrub 0.31775 2 -88.034 3.8360 0.002 **
+ Substrate 0.36536 6 -87.768 1.8251 0.004 **
+ Topo 0.40042 1 -90.924 4.5095 0.002 **
+ SubsDens 0.43670 1 -94.489 4.7999 0.002 **
<All variables> 0.43670
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.