metaMDS performs Nonmetric
Multidimensional Scaling (NMDS), and tries to find a stable solution
using several random starts. In addition, it standardizes the
scaling in the result, so that the configurations are easier to
interpret, and adds species scores to the site ordination. The
metaMDS function does not provide actual NMDS, but it calls
another function for the purpose. Currently monoMDS is
the default choice, and it is also possible to call the
isoMDS (metaMDS(comm, distance = "bray", k = 2, trymax = 20,
engine = c("monoMDS", "isoMDS"), autotransform =TRUE,
noshare = (engine == "isoMDS"), wascores = TRUE, expand = TRUE,
trace = 1, plot = FALSE, previous.best, ...)
## S3 method for class 'metaMDS':
plot(x, display = c("sites", "species"), choices = c(1, 2),
type = "p", shrink = FALSE, ...)
## S3 method for class 'metaMDS':
points(x, display = c("sites", "species"),
choices = c(1,2), shrink = FALSE, select, ...)
## S3 method for class 'metaMDS':
text(x, display = c("sites", "species"), labels,
choices = c(1,2), shrink = FALSE, select, ...)
## S3 method for class 'metaMDS':
scores(x, display = c("sites", "species"), shrink = FALSE,
choices, ...)
metaMDSdist(comm, distance = "bray", autotransform = TRUE,
noshare = TRUE, trace = 1, commname, zerodist = "ignore",
distfun = vegdist, ...)
metaMDSiter(dist, k = 2, trymax = 20, trace = 1, plot = FALSE,
previous.best, engine = "monoMDS", maxit = 200, ...)
initMDS(x, k=2)
postMDS(X, dist, pc=TRUE, center=TRUE, halfchange, threshold=0.8,
nthreshold=10, plot=FALSE, ...)
metaMDSredist(object, ...)dist structure or as a symmetric square matrix.
In the latter case all other stages are skipped except random
starts and centring and pcvegdist.autotransform = FALSE.stepacross. The
argument can be logical or a numerical value greater than zero
and less than one. If TRUEwascores.wascores.trace = 2 or higher will be
more voluminous.par(ask = TRUE) with this option.metaMDS result (or a dissimilarity structure for
initMDS."p" for points, "t" for text, and
"n" for axes only."sites" or "species".TRUE for displayed items or a vector of indices
of displayed items.comm: should not be given if the
function is called directly."fail" or "add" a small positive value, or
"ignore". monoMDS accepts zero dissimilarities
and the default is zedist object and accepting argument method can be used
(but some extra arguments may cause name conflicts).TRUE when dissimilarities were evaluated within
metaMDS and the dissimilarity index has an upper limit of
$1$. If FALSE, the ordination dissimilarities are scaled
metaMDS.metaMDS passes all arguments to its component functions
metaMDSdist, metaMDSiter, postMDS, and to
distfun and engine.metaMDS returns an object of class
metaMDS. The final site ordination is stored in the item
points, and species ordination in the item species,
and the stress in item stress (NB, the scaling of the stress
depends on the engine: isoMDS uses
percents, and monoMDS proportions in the range $0
\ldots 1$). The other items store the information on the steps taken
and the items returned by the engine function. The object has
print, plot, points and text methods.
Functions metaMDSdist and metaMDSredist return
vegdist objects. Function initMDS returns a
random configuration which is intended to be used within
isoMDS only. Functions metaMDSiter and
postMDS returns the result of NMDS with updated
configuration.metaMDS is a
wrapper function that calls several other functions to combine
Minchin's (1987) recommendations into one command. The complete
steps in metaMDS are:
wisconsin). If the values look
very large, the function also performssqrttransformation. Both of these standardizations are generally found
to improve the results. However, the limits are completely
arbitrary (at present, data maximum 50 triggerssqrtand$>9$triggerswisconsin). If you want to
have a full control of the analysis, you should setautotransform = FALSEand standardize and transform data
independently. Theautotransformis intended for community
data, and for other data types, you should setautotransform
= FALSE. This step is perfomed usingmetaMDSdist.vegdistcan be used. Functionrankindexcan be used for finding the test winner
for you data and gradients. The default choice may be bad if you
analyse other than community data, and you should probably select
an appropriate index using argumentdistance. This step is
performed usingmetaMDSdist.stepacrossdissimilarities, or flexible shortest paths among all sites. The
default NMDSengineismonoMDSwhich is able
to break tied values at the maximum dissimilarity, and this often
is sufficient to handle cases with no shared species, and
therefore the default is not to usestepacrosswithmonoMDS. FunctionisoMDSdoes
not handle tied values adequately, and therefore the default is to
usestepacrossalways when there are sites with no
shared species withengine = "isoMDS". Thestepacrossis triggered by optionnoshare. If
you do not like manipulation of original distances, you should setnoshare = FALSE. This step is skipped if input data were
dissimilarities instead of community data. This step is performed
usingmetaMDSdist.metaMDSis to first run NMDS starting with the
metric scaling (cmdscalewhich usually finds a good
solution but often close to a local optimum), or use theprevious.bestsolution if supplied, and take its solution
as the standard (Run 0). ThenmetaMDSstarts NMDS
from several random starts (maximum number is given bytrymax). FunctionmonoMDSdefaults random
starts, butisoMDSdefaults tocmdscale, and there random starts are generated byinitMDS. If a solution is better (has a lower stress) than
the previous standard, it is taken as the new standard. If the
solution is better or close to a standard,metaMDScompares
two solutions using Procrustes analysis (functionprocrusteswith optionsymmetric = TRUE). If
the solutions are very similar in their Procrustesrmseand
the largest residual is very small, the solutions are regarded as
convergent and the better one is taken as the new standard. Please
note that the conditions are stringent, and you may have found
good and relatively stable solutions although the function is not
yet satisfied. Settingtrace = TRUEwill monitor the final
stresses, andplot = TRUEwill display Procrustes overlay
plots from each comparison. This step is performed usingmetaMDSiter. This is the only step performed if input data
(comm) were dissimilarities.metaMDSwill runpostMDSfor the final result. FunctionpostMDSprovides the
following ways ofMDSrotateyou can alternatively rotate
the configuration so that the first axis is parallel to an
environmental variable); Half-change scaling scales the
configuration so that one unit means halving of community
similarity from replicate similarity. Half-change scaling is
based on closer dissimilarities where the relation between
ordination distance and community dissimilarity is rather linear
(the limit is set by argumentthreshold). If there are
enough points below this threshold (controlled by the parameternthreshold), dissimilarities are regressed on distances.
The intercept of this regression is taken as the replicate
dissimilarity, and half-change is the distance where similarity
halves according to linear regression. Obviously the method is
applicable only for dissimilarity indices scaled to$0 \ldots
1$, such as Kulczynski, Bray-Curtis and Canberra indices. If
half-change scaling is not used, the ordination is scaled to the
same range as the original dissimilarities.wascoreswith given value of parameterexpand. The expansion of weighted averages can be undone
withshrink = TRUEinplotorscoresfunctions, and the calculation of species scores can be suppressed
withwascores = FALSE.Minchin, P.R. (1987) An evaluation of relative robustness of techniques for ecological ordinations. Vegetatio 69, 89--107.
monoMDS (and isoMDS),
decostand,
wisconsin,
vegdist, rankindex, stepacross,
procrustes, wascores, MDSrotate,
ordiplot.## The recommended way of running NMDS (Minchin 1987)
##
data(dune)
# Global NMDS using monoMDS
sol <- metaMDS(dune)
sol
plot(sol, type="t")
## Start from previous best solution
sol <- metaMDS(dune, previous.best = sol)
## Local NMDS and stress 2 of monoMDS
sol2 <- metaMDS(dune, model = "local", stress=2)
sol2
## Use Arrhenius exponent 'z' as a binary dissimilarity measure
sol <- metaMDS(dune, distfun = betadiver, distance = "z")
solRun the code above in your browser using DataLab