vegan (version 2.4-2)

goodness.metaMDS: Goodness of Fit and Shepard Plot for Nonmetric Multidimensional Scaling


Function goodness.metaMDS find goodness of fit measure for points in nonmetric multidimensional scaling, and function stressplot makes a Shepard diagram.


"goodness"(object, dis, ...) "stressplot"(object, dis, pch, p.col = "blue", l.col = "red", lwd = 2, ...)


A result object from metaMDS, monoMDS or isoMDS.
Dissimilarities. This should not be used with metaMDS or monoMDS, but must be used with isoMDS.
Plotting character for points. Default is dependent on the number of points.
p.col, l.col
Point and line colours.
Line width. For monoMDS the default is lwd = 1 if more than two lines are drawn, and lwd = 2 otherwise.
Other parameters to functions, e.g. graphical parameters.


goodness returns a vector of values. Function stressplot returns invisibly an object with items for original dissimilarities, ordination distances and fitted values.


Function goodness.metaMDS finds a goodness of fit statistic for observations (points). This is defined so that sum of squared values is equal to squared stress. Large values indicate poor fit. The absolute values of the goodness statistic depend on the definition of the stress: isoMDS expresses stress in percents, and therefore its goodness values are 100 times higher than those of monoMDS which expresses the stress as a proportion.

Function stressplot draws a Shepard diagram which is a plot of ordination distances and monotone or linear fit line against original dissimilarities. In addition, it displays two correlation-like statistics on the goodness of fit in the graph. The nonmetric fit is based on stress $S$ and defined as $R2 = 1-S*S$. The “linear fit” is the squared correlation between fitted values and ordination distances. For monoMDS, the “linear fit” and $R2$ from “stress type 2” are equal.

Both functions can be used with metaMDS, monoMDS and isoMDS. The original dissimilarities should not be given for monoMDS or metaMDS results (the latter tries to reconstruct the dissimilarities using metaMDSredist if isoMDS was used as its engine). With isoMDS the dissimilarities must be given. In either case, the functions inspect that dissimilarities are consistent with current ordination, and refuse to analyse inconsistent dissimilarities. Function goodness.metaMDS is generic in vegan, but you must spell its name completely with isoMDS which has no class.

See Also

metaMDS, monoMDS, isoMDS, Shepard. Similar diagrams for eigenvector ordinations can be drawn with stressplot.wcmdscale, stressplot.cca, stressplot.rda and stressplot.capscale.


Run this code
mod <- metaMDS(varespec)
gof <- goodness(mod)
plot(mod, display = "sites", type = "n")
points(mod, display = "sites", cex = 2*gof/mean(gof))

Run the code above in your browser using DataLab