Learn R Programming

vegan (version 1.6-0)

procrustes: Procrustes Rotation of Two Configurations

Description

Function procrustes rotates a configuration to maximum similarity with another configuration. Function protest tests the non-randomness (`significance') between two configurations.

Usage

procrustes(X, Y, scale = TRUE, symmetric = FALSE)
## S3 method for class 'procrustes':
summary(object, ...)
## S3 method for class 'procrustes':
plot(x, kind=1, choices=c(1,2), xlab, ylab, main,
     ar.col = "blue", len=0.05, ...)
## S3 method for class 'procrustes':
residuals(object, ...)
## S3 method for class 'procrustes':
fitted(object, truemean = TRUE, ...)
protest(X, Y, permutations = 1000, strata)

Arguments

X
Target matrix
Y
Matrix to be rotated.
scale
Allow scaling of axes of Y.
symmetric
Use symmetric Procrustes statistic (the rotation will still be non-symmetric).
x, object
An object of class procrustes.
kind
The kind of plot produced: kind=1 plots shifts in two configurations and kind=2 plots an impulse diagram of residuals.
choices
Axes (dimensions) plotted.
xlab, ylab
Axis labels, if defaults unacceptable.
main
Plot title, if default unacceptable.
truemean
Use the original range of target matrix instead of centring the fitted values.
permutations
Number of permutation to assess the significance of the symmetric Procrustes statistic.
strata
An integer vector or factor specifying the strata for permutation. If supplied, observations are permuted only within the specified strata.
ar.col
Arrow colour.
len
Width of the arrow head.
...
Other parameters passed to functions.

Value

  • Function procrustes returns an object of class procrustes with items. Function protest inherits from procrustes, but amends that with some new items:
  • YrotRotated matrix Y.
  • XTarget matrix.
  • ssSum of squared differences between X and Yrot.
  • rotationOrthogonal rotation matrix.
  • translationTranslation of the origin.
  • scaleScaling factor.
  • symmetricType of ss statistic.
  • callFunction call.
  • t0This and the following items are only in class protest: Procrustes correlation from non-permuted solution.
  • tProcrustes correlations from permutations.
  • signif`Significance' of t
  • permutationsNumber of permutations.
  • strataThe name of the stratifying variable.
  • stratum.valuesValues of the stratifying variable.

Details

Procrustes rotation rotates a matrix to maximum similarity with a target matrix minimizing sum of squared differences. Procrustes rotation is typically used in comparison of ordination results. It is particularly useful in comparing alternative solutions in multidimensional scaling. If scale=FALSE, the function only rotates matrix Y. If scale=TRUE, it scales linearly configuration Y for maximum similarity. Since Y is scaled to fit X, the scaling is non-symmetric. However, with symmetric=TRUE, the configurations are scaled to equal dispersions and a symmetric version of the Procrustes statistic is computed.

Instead of matrix, X and Y can be results from an ordination from which scores can extract results.

Function plot plots a procrustes object and returns invisibly an ordiplot object so that function identify.ordiplot can be used for identifying points. The items in the ordiplot object are called heads and points with kind=1 (ordination diagram) and sites with kind=2 (residuals). In ordination diagrams, the arrow heads point to the target configuration, which may be either logical or illogical. Function plot passes parameters to underlying plotting functions.

Function residuals returns the pointwise residuals, and fitted the fitted values, either centred to zero mean (if truemean=FALSE) or with the original scale (these hardly make sense if symmetric = TRUE). In addition, there are summary and print methods.

If matrix X has a lower number of columns than matrix Y, then matrix X will be filled with zero columns to match dimensions. This means that the function can be used to rotate an ordination configuration to an environmental variable (most practically extracting the result with the fitted function).

Function protest calls procrustes(..., symmetric = TRUE) repeatedly to estimate the `significance' of the Procrustes statistic. Function protest uses a correlation-like statistic derived from the symmetric Procrustes sum of squares $ss$ as $r =\sqrt{(1-ss)}$, and sometimes called $m_{12}$. Function protest has own print method, but otherwise uses procrustes methods. Thus plot with a protest object yields a ``Procrustean superimposition plot.''

References

Mardia, K.V., Kent, J.T. and Bibby, J.M. (1979). Multivariate Analysis. Academic Press.

Peres-Neto, P.R. and Jackson, D.A. (2001). How well do multivariate data sets match? The advantages of a Procrustean superimposition approach over the Mantel test. Oecologia 129: 169-178.

See Also

isoMDS, initMDS for obtaining objects for procrustes, and mantel for an alternative to protest without need of dimension reduction.

Examples

Run this code
data(varespec)
vare.dist <- vegdist(wisconsin(varespec))
library(MASS)  ## isoMDS
library(mva)   ## cmdscale to start isoMDS
mds.null <- isoMDS(vare.dist, tol=1e-7)
## This was a good seed for me: your rng may vary.
set.seed(237)
mds.alt <- isoMDS(vare.dist, initMDS(vare.dist), maxit=200, tol=1e-7)
vare.proc <- procrustes(mds.alt$points, mds.null$points)
vare.proc
summary(vare.proc)
plot(vare.proc)
plot(vare.proc, kind=2)
residuals(vare.proc)
## Reset rng:
rm(.Random.seed)

Run the code above in your browser using DataLab