1. Home
  2. ROTATE directive

ROTATE directive

Does a Procrustes rotation of one configuration of points to fit another.

Options

PRINT = string tokens Printed output required (rotations, coordinates, residuals, sums); default * i.e. no printing
SCALING = string token Whether or not isotropic scaling is allowed (yes, no); default no
STANDARDIZE = string tokens Whether to centre the configurations (at the origin), and/or to normalize them (to unit sum of squares) prior to rotation (centre, normalize); default cent,norm
SUPPRESSREFLECTION = string token Whether to suppress reflection (yes, no); default no

Parameters

XINPUT = matrices Inputs the fixed configuration
YINPUT = matrices Inputs the configuration to be fitted
XOUTPUT = matrices To store the (standardized) fixed configuration
YOUTPUT = matrices To store the fitted configuration
ROTATION = matrices To store the rotation matrix
RESIDUALS = matrices or variates To store distances between the (standardized) fixed and fitted configurations
RSS = scalars To store the residual sum of squares

Description

The ROTATE directive provides orthogonal Procrustes rotation. You must set the parameters XINPUT and YINPUT, which specify respectively the fixed configuration and the configuration that you want to be translated and rotated; these are called X and Y above. The other parameters are used for saving results from the analysis. For X and Y to refer to the same set of objects they must have the same number of rows, and each object must be represented by the same row in both X and Y. If the XINPUT matrix is n×p and the YINPUT matrix is n×q, Genstat does the analysis using matrices that are n×r, where r is max(p, q). The smaller matrix is expanded with columns of zeros, as explained above.

The PRINT option specifies which results you want to print; the settings are as follows.

    coordinates specifies that the fixed and fitted configurations are to be printed; note that the fixed configuration is printed after any standardization (see below), and the fitted configuration is printed after standardization and rotation.
    residuals prints the residual distances of the points in the fixed configuration from the fitted points; this is after any standardization and rotation.
    rotations prints the orthogonal rotation matrix.
    sums prints an analysis of variance giving the sums of squares of each configuration, and the residual sum of squares; if scaling is used, the scaling factor is also printed.

The three other options of the ROTATE directive control the form of analysis. The SCALING option specifies whether you want least-squares scaling to be applied to the standardized YINPUT matrix when finding the best fit to the fixed configuration. You should set SCALING=yes if you want scaling; Genstat will then print the least-squares scaling factor with the analysis of variance. By default there is no scaling.

The STANDARDIZE option specifies what preliminary standardization is to be applied to the XINPUT and YINPUT matrices. It has settings:

    centre centre the matrices to have zero column means;
    normalize normalize the matrices to unit sums of squares.

The default is STANDARDIZE=centre,normalize. The initial centring ensures that the configurations are translated to have a common centroid, and thus automatically provides the best translation of Y to match X. The normalization arranges that the residual sum of squares from rotating X to Y is the same as that for rotating Y to X. Switching off both centring and standardization is rarely advisable, but can be requested by putting STANDARDIZE=*.

With some methods of multivariate analysis, for example the analysis of skew-symmetry, the direction of travel about the origin is important. It is then undesirable to perform a reflection as part of the rotation: the SUPPRESSREFLECTION option can be used to prevent this. The default setting is no, which allows reflection to take place.

Options: PRINT, SCALING, STANDARDIZE, SUPPRESSREFLECTION.

Parameters: XINPUT, YINPUT, XOUTPUT, YOUTPUT, ROTATION, RESIDUALS, RSS.

See also

Procedures: GENPROCRUSTES, PCOPROCRUSTES, SAGRAPES.

Commands for: Multivariate and cluster analysis.

Example

" Genstat example ROTA-1: Procrustes rotation."

" Declare the two matrices which define the fixed configuration and
  the configuration to be fitted. "
MATRIX [ROWS=3; COLUMNS=2; VALUES=0,0, 3,0, 0,4] Fixed
& [VALUES=4.250,1.750, 5.917,5.814, -1.113,5.333] Tofit

" Obtain the orthogonal Procrustes rotation, printing:
    coordinates - fixed and fitted configurations; the fixed configuration
                  is printed after any standardization and the fitted
                  configuration is printed after standardization and 
                  rotation.
      residuals - the residual distances of the points in the fixed 
                  configuration from the fitted points; this is after 
                  standardisation and rotation
      rotations - the orthogonal rotation matrix "
ROTATE [PRINT=coordinates,residuals,rotations; STANDARDIZE=centre]\  
  XINPUT=Fixed; YINPUT=Tofit

" Obtain the rotation again, this time allowing for isotropic scaling and
  centring the configurations. Save the fixed and fitted configurations into
  the matrices Xout and Yout respectively."
ROTATE [PRINT=rotations,sums; SCALING=yes; STANDARDIZE=centre]\ 
  XINPUT=Fixed; YINPUT=Tofit; XOUTPUT=Xout; YOUTPUT=Yout
PRINT Xout,Yout

" Store the rotation matrix and the residual sum of squares."
ROTATE [PRINT=coordinates,residuals,sums]\  
  XINPUT=Fixed; YINPUT=Tofit; ROTATION=Rotmat; RSS=RSS
PRINT Rotmat,RSS

" Use a Procrustes rotation to assess the similarity between a mirror 
  image of the initial Tofit matrix. Often the direction of travel 
  about the origin is important and therefore it is undesirable to
  perform a reflection as part of the rotation. 
  Set the SURPRESSREFLECTION option to yes to avoid this reflection."
MATRIX [ROWS=3; COLUMNS=2; VALUES=4.250,-1.750, 5.917,-5.814, -1.113,\
  -5.333] Tofit
ROTATE [PRINT=coordinates,residuals,rotations,sums; SUPPRESSREFLECTION=yes]\ 
  XINPUT=Fixed; YINPUT=Tofit
Updated on June 18, 2019

Was this article helpful?