Compares Dissimilarity Indices for Gradient Detection
rankindex.Rd
Rank correlations between dissimilarity indices and gradient separation.
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 setNA
usingno.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.
References
Faith, F.P., Minchin, P.R. and Belbin, L. (1987). Compositional dissimilarity as a robust measure of ecological distance. Vegetatio 69, 57-68.
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.
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