Skip to contents

Rank correlations between dissimilarity indices and gradient separation.

Usage

rankindex(grad, veg, indices = c("euc", "man", "gow", "bra", "kul"),
          stepacross = FALSE, method = "spearman", 
    metric = c("euclidean", "mahalanobis", "manhattan", "gower"),
    ...)

Arguments

grad

The gradient variable or matrix.

veg

The community data matrix.

indices

Dissimilarity indices compared, partial matches to alternatives in vegdist. Alternatively, it can be a (named) list of functions returning objects of class 'dist'.

stepacross

Use stepacross to find a shorter path dissimilarity. The dissimilarities for site pairs with no shared species are set NA using no.shared so that indices with no fixed upper limit can also be analysed.

method

Correlation method used.

metric

Metric to evaluate the gradient separation. See Details.

...

Other parameters to stepacross.

Details

A good dissimilarity index for multidimensional scaling should have a high rank-order similarity with gradient separation. The function compares most indices in vegdist against gradient separation using rank correlation coefficients in cor. The gradient separation between each point is assessed using given metric. The default is to use Euclidean distance of continuous variables scaled to unit variance, or to use Gower metric for mixed data using function daisy when grad has factors. The other alternatives are Mahalanabis distances which are based on grad matrix scaled so that columns are orthogonal (uncorrelated) and have unit variance, or Manhattan distances of grad variables scaled to unit range.

The indices argument can accept any dissimilarity indices besides the ones calculated by the vegdist function. For this, the argument value should be a (possibly named) list of functions. Each function must return a valid 'dist' object with dissimilarities, similarities are not accepted and should be converted into dissimilarities beforehand.

Value

Returns a named vector of rank correlations.

References

Faith, F.P., Minchin, P.R. and Belbin, L. (1987). Compositional dissimilarity as a robust measure of ecological distance. Vegetatio 69, 57-68.

Author

Jari Oksanen, with additions from Peter Solymos

Note

There are several problems in using rank correlation coefficients. Typically there are very many ties when \(n(n-1)/2\) gradient separation values are derived from just \(n\) observations. Due to floating point arithmetics, many tied values differ by machine epsilon and are arbitrarily ranked differently by rank used in cor.test. Two indices which are identical with certain transformation or standardization may differ slightly (magnitude \(10^{-15}\)) and this may lead into third or fourth decimal instability in rank correlations. Small differences in rank correlations should not be taken too seriously. Probably this method should be replaced with a sounder method, but I do not yet know which... You may experiment with mantel, anosim or even protest.

Earlier version of this function used method = "kendall", but that is far too slow in large data sets.

The functions returning dissimilarity objects should be self contained, because the ... argument passes additional parameters to stepacross and not to the functions supplied via the indices argument.

See also

Examples

data(varespec)
data(varechem)
## The variables are automatically scaled
rankindex(varechem, varespec)
#>       euc       man       gow       bra       kul 
#> 0.2396330 0.2735087 0.2288358 0.2837910 0.2839834 
rankindex(varechem, wisconsin(varespec))
#>       euc       man       gow       bra       kul 
#> 0.4200990 0.4215642 0.3708606 0.4215642 0.4215642 
## Using non vegdist indices as functions
funs <- list(Manhattan=function(x) dist(x, "manhattan"),
    Gower=function(x) cluster:::daisy(x, "gower"),
    Ochiai=function(x) designdist(x, "1-J/sqrt(A*B)"))
rankindex(scale(varechem), varespec, funs)
#> Manhattan     Gower    Ochiai 
#> 0.2735087 0.2288358 0.1696862