Performs a multiple Procrustes analysis (P.G.N. Digby).

### Options

`PROTATE` = string tokens |
Printed output required from each Procrustes rotation (`rotations` , `coordinates` , `residuals` , `sums` ); default `*` i.e. no output |
---|---|

`PPCO` = string tokens |
Printed output required from the `PCO` analysis (`roots` , `scores` , `centroid` ); default `root` , `score` , `cent` |

`SCALING` = string token |
Whether isotropic scaling should be used for the Procrustes rotations (`no` , `yes` ); default `no` |

`STANDARDIZE` = string tokens |
Whether to centre the configurations and/or normalize them to unit sums-of-squares for the Procrustes rotations (`centre` , `normalize` ); default `cent` , `norm` |

### Parameters

`DATA` = pointers |
Each pointer points to a set of matrices holding the original input configurations |
---|---|

`LRV` = LRVs |
Stores the latent vectors (i.e. coordinates), roots and trace from the `PCO` analysis |

`CENTROID` = diagonal matrices |
Stores the squared distances of the points representing the input configurations from their overall centroid from the `PCO` analysis |

`DISTANCES` = symmetric matrices |
Stores the residual sums-of-squares from the Procrustes rotations |

### Description

An *N* × *V* matrix represents a configuration of points, for each of *N* units, in *V* dimensions. Given a set of *M* such matrices, a multiple Procrustes analysis compares them in pairs, keeping the residual sums-of-squares, and performs a principal coordinate analysis of the residual sums-of-squares to obtain an ordination representing the individual configurations. The rows of the matrices must represent the same set of units, in the same order; however there is no need for them to have the same number of columns (although generally they will do). An example of the use of multiple Procrustes analysis is given by Digby & Kempton (1987, pages 121-3).

The configurations of points are specified using the `DATA`

parameter. This supplies a pointer containing a matrix with the data for each configuration. The `PROTATE`

option controls the output from the individual Procrustes rotations, and the `PPCO`

option controls that from the principal coordinate analysis. There are *M*×(*M*-1)/2 Procrustes rotations so, by default, `PROTATE=*`

to suppress any output. The `SCALING`

and `STANDARDIZE`

options control the way in which the Procrustes rotations are carried out, using the `SCALING`

and `STANDARDIZE`

options of `ROTATE`

. However, the combination of `SCALING=yes`

and `STANDARDIZE=centre`

should not be used, because then the results will be dependent on the order of the input matrices.

The `LRV`

and `CENTROID`

parameters can be used to save results from the principal coordinates analysis, and the `DISTANCES`

parameter can be used to save the symmetric matrix of the residual sums-of-squares from the Procrustes analyses.

Options: `PROTATE`

, `PPCO`

, `SCALING`

, `STANDARDIZE`

.

Parameters: `DATA`

, `LRV`

, `CENTROID`

, `DISTANCES`

.

### Method

The pairwise Procrustes rotations are performed using the `ROTATE`

directive, and the residual sums-of-squares are stored in a symmetric matrix of order *M*. This matrix is then used as input to a principal coordinate analysis, performed using the `PCO`

directive on a suitably transformed copy of the matrix.

### Reference

Digby, P.G.N. & Kempton, R.A (1987). *Multivariate Analysis of Ecological Communities*. Chapman & Hall, London.

### See also

Directives: `ROTATE`

. `FACROTATE`

.

Procedure: `GENPROCRUSTES`

.

Commands for: Multivariate and cluster analysis.

### Example

CAPTION 'PCOPROCRUSTES example',\ !t('Data are abundances of 16 grass species on 9 plots of land,',\ '(Digby & Kempton 1987); however, only part of Table 1.1 is used.');\ STYLE=meta,plain UNITS [NVALUES=16] READ [SERIAL=yes] Abund[1...6] 15.5 2.5 7.2 0.2 1.0 0.0 2.2 33.2 0.0 0.3 6.1 0.0 6.9 0.7 0.0 0.1 : 4.0 1.0 13.1 6.1 1.6 0.0 1.5 11.7 3.6 12.0 9.5 0.0 0.0 2.5 0.3 0.4 : 1.0 28.8 6.1 37.6 0.0 0.0 7.8 1.0 0.0 0.6 2.9 0.0 0.0 5.3 1.0 1.4 : 0.0 36.8 0.3 37.0 0.0 1.3 2.7 0.0 0.0 0.0 0.0 0.0 0.0 0.7 1.5 4.5 : 19.6 0.0 9.5 0.0 0.0 0.0 0.0 48.7 0.0 0.0 4.8 0.1 0.3 1.0 2.7 0.7 : 82.7 0.0 17.2 0.0 0.0 0.0 0.0 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 : CALCULATE LogAbund[1...6] = LOG10(Abund[1...6] + 1) & PrsAbund[1...6] = Abund[1...6] > 0 CAPTION !T('Form similarity matrices using 5 different methods on',\ 'suitably transformed copies of the data.') FSIMILARITY [SIMILARITY=Sjaccard] PrsAbund[]; Jaccard & [SIMILARITY=Ssmc] PrsAbund[]; simplematching & [SIMILARITY=Scity] LogAbund[]; cityblock & [SIMILARITY=Secol] LogAbund[]; ecological & [SIMILARITY=Spythag] LogAbund[]; Pythagorean POINTER [NVALUES=7] Config MATRIX [ROWS=16; COLUMNS=6] Config[] LRV [ROWS=16; COLUMNS=6] Pcol CAPTION !T('Use PCO on each similarity matrix, to get 5 ordinations',\ 'of 16 points in 6 dimensions.') FOR Dsim=Sjaccard,Ssmc,Scity,Secol,Spythag; Dcpco=Config[1...5] PCO Dsim; LRV=Pcol CALCULATE Dcpco = Pcol[1] ENDFOR CAPTION !T('Use correspondence analysis on the data, and the data',\ 'transformed to presence/absence, to get 2 more',\ 'ordinations of 16 points in 6 dimensions.') MATRIX [ROWS=16; COLUMNS=6] MatAbund CALCULATE MatAbund$[*; 1...6] = Abund[] CORANALYSIS MatAbund; ROW=Config[6] CALCULATE MatAbund = MatAbund > 0 CORANALYSIS MatAbund; ROW=Config[7] TEXT [VALUES=Jc,SM,CB,Ec,Py,CA,CP] Points SYMMETRICMATRIX [ROWS=Points] MPdist CAPTION !T('Use multiple Procrustes analysis to compare the',\ '7 different ordination methods.') PCOPROCRUSTES Config; LRV=MPLRV; DISTANCE=MPdist PRINT MPdist; FIELD=8; DECIMALS=4 CALCULATE MPscore[1,2] = MPLRV[1]$[*; 1,2] FOR [NTIMES=1] GRAPH [TITLE='Multiple Procrustes analysis: first two dimensions'; \ YTITLE='Dimension 2'; XTITLE='Dimension 1'; EQUAL=scale;\ NROWS=37; NCOLUMNS=61] MPscore[2]; MPscore[1]; SYMBOLS=Points CAPTION 'The 7 methods are plotted as the points:' PRINT [SQUASH=yes] !t(Jc,SM,CB,Ec,Py,CA,CP),!t(\ 'Jaccard similarity coefficient;',\ 'simple-matching similarity coefficient;',\ 'city-block similarity coefficient;',\ 'ecological similarity coefficient;',\ 'Pythagorean similarity coefficient;',\ 'correspondence analysis of data;',\ 'correspondence analysis of presence/absence.');\ JUST=right,left; SKIP=2 SKIP [FILETYPE=output] 1 ENDFOR