Skip to contents

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

Usage

# S3 method for class 'metaMDS'
goodness(object, dis, ...)
# Default S3 method
stressplot(object, dis, pch, p.col = "blue", l.col = "red", 
    lwd = 2, ...)

Arguments

object

A result object from metaMDS, monoMDS or isoMDS.

dis

Dissimilarities. This should not be used with metaMDS or monoMDS, but must be used with isoMDS.

pch

Plotting character for points. Default is dependent on the number of points.

p.col, l.col

Point and line colours.

lwd

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.

Details

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 \(R^2 = 1-S^2\). The “linear fit” is the squared correlation between fitted values and ordination distances. For monoMDS, the “linear fit” and \(R^2\) 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.

Value

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

Author

Jari Oksanen.

See also

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

Examples

data(varespec)
mod <- metaMDS(varespec)
#> Square root transformation
#> Wisconsin double standardization
#> Run 0 stress 0.1843196 
#> Run 1 stress 0.2410643 
#> Run 2 stress 0.1948413 
#> Run 3 stress 0.1825658 
#> ... New best solution
#> ... Procrustes: rmse 0.0416189  max resid 0.1517616 
#> Run 4 stress 0.2383056 
#> Run 5 stress 0.2096851 
#> Run 6 stress 0.2329653 
#> Run 7 stress 0.1825658 
#> ... New best solution
#> ... Procrustes: rmse 2.732084e-05  max resid 8.096006e-05 
#> ... Similar to previous best
#> Run 8 stress 0.1825658 
#> ... Procrustes: rmse 1.167373e-05  max resid 3.019892e-05 
#> ... Similar to previous best
#> Run 9 stress 0.2092456 
#> Run 10 stress 0.1976154 
#> Run 11 stress 0.2331577 
#> Run 12 stress 0.2330486 
#> Run 13 stress 0.1948413 
#> Run 14 stress 0.2356726 
#> Run 15 stress 0.1955838 
#> Run 16 stress 0.2339637 
#> Run 17 stress 0.2088293 
#> Run 18 stress 0.2138946 
#> Run 19 stress 0.2136761 
#> Run 20 stress 0.2352729 
#> *** Best solution repeated 2 times
stressplot(mod)

gof <- goodness(mod)
gof
#>  [1] 0.02984516 0.03513715 0.04189194 0.04598243 0.04003134 0.03441442
#>  [7] 0.03294898 0.03050145 0.03060754 0.02994058 0.03526332 0.02621426
#> [13] 0.03830984 0.02980913 0.03369611 0.02225897 0.03561569 0.03505254
#> [19] 0.06577496 0.03268352 0.03503121 0.02956628 0.05168013 0.04601957
plot(mod, display = "sites", type = "n")
points(mod, display = "sites", cex = 2*gof/mean(gof))