[R-sig-eco] Species fit in ordination

Jari Oksanen jari.oksanen at oulu.fi
Fri Jul 30 08:51:37 CEST 2010

On 23/07/10 20:12 PM, "syrovat at sci.muni.cz" <syrovat at sci.muni.cz> wrote:

> Dear list members,
> I am creating an ordination diagram (now it is 'coca' but I would like to
> use it also with any other ordination methods - DCA, CCA - and possibly
> NMDS), where I want to show species in relation to main gradients (the
> ordination axes).
> The ordination is based on presence/absence (or abundance) of many species
> (130) and I want to show only few of them - the most important. I thing
> that showing the species best responding to the gradients (i.e. those,
> which probability of presence really change within the two-dimensional
> ordination space) would be a good practice.

You really have to define what is a good fit. Having a large change in
probability is different from explaining a large part of the variation of
observations. You may have cute, strong response and still large residuals.
In the language of linear models, you may have steep regression slope and
still large residual variance. Your question sounded like the 'slope'
component, but most statistics deal with the 'residual' component either in
absolute terms ('residuals') or in relative terms ('residuals'/'original').
> If I remember well, there was an option to display only species with
> specified fit in Canoco.
It is not in the Canoco proper (or the code that Cajo ter Braak wrote on the
base of Mark Hill's original), but on its support and wrapper functions.
These supports were originally a separate program (CanoDraw), but are no
bundled together. Here the criterion was different: it was the species
response to the constraints and not to the ordination axes. These may be
very, very different. Further, constraining uses a linear model so that you
will clearly use here linear goodness of fit to the original environmental
variables instead of non-linear response to the ordination axes.
> Is there any way to calculate the species fit in R? I think the function
> 'envfit' from the 'vegan' package is somewhat different. Maybe should I
> use 'ordisurf'?
Function goodness() for cca/rda finds the Canoco-like statistics either as
residual distances or as proportion explained. You may have to set choices,
and set summarize = TRUE. See ?goodness.cca. The text() and points()
functions for most ordination objects have 'select' argument in vegan so
that  you can pick up the cases you want to have.

In principle, you can use envfit() for species, but it implies a linear
species response to the gradients. Function ordisurf() fits a smooth
surface, and if you set knots = 2, it will fit a quadratic surface, and with
family = binomial it will something similar to Gaussian species response on
the ordination space (with family = quasipoisson it would be the Gaussian
response, but with binary responses you must use family = binomial). The
function returns an object of mgcv:::gam and you can use all mgcv:::gam
methods for further analysis of the results.
> Or would you suggest some different practice in selecting the species to
> display?
> I will be very grateful for any help.

HTH, Jari Oksanen

More information about the R-sig-ecology mailing list