Let
be the
matrix of loadings from a variable-directed multivariate method, e.g., canonical variate analysis or factor analysis. This matrix represents the relationship between the original
variables and the
orthogonal linear combinations of these variables, the canonical variates or factors. The latter are only unique up to a rotation in the
-dimensional space they define. A rotation can then be found that simplifies the structure of the matrix of loadings, and hence the relationship between the original and the derived variables. That is, the elements,
, of the rotated matrix,
, are either relatively large or small. The rotations may be found by minimizing the criterion:
where the constant
gives a family of rotations with
giving varimax rotations and
giving quartimax rotations.
It is generally advised that factor loadings should be standardized, so that the sum of squared elements for each row is one, before computing the rotations.
The matrix of rotations,
, such that
, is computed using first an algorithm based on that described by
Cooley and Lohnes (1971), which involves the pairwise rotation of the factors. Then a final refinement is made using a method similar to that described by
Lawley and Maxwell (1971), but instead of the eigenvalue decomposition, the algorithm has been adapted to incorporate a singular value decomposition.
-
1:
– Nag_RotationLoading
Input
-
On entry: indicates if the matrix of loadings is to be row standardized before rotation.
- The loadings are row standardized.
- The loadings are left unstandardized.
Constraint:
or .
-
2:
– double
Input
-
On entry: the criterion constant, , with giving varimax rotations and giving quartimax rotations.
Constraint:
.
-
3:
– Integer
Input
-
On entry: the number of original variables, .
Constraint:
.
-
4:
– Integer
Input
-
On entry: the number of derived variates or factors, .
Constraint:
.
-
5:
– double
Input/Output
-
On entry: the matrix of loadings, . must contain the loading for the th variable on the th factor, for and .
On exit: if
the elements of
fl are standardized so that the sum of squared elements for each row is
and then after, the computation of the rotations are rescaled; this may lead to slight differences between the input and output values of
fl. If
,
fl will be unchanged on exit.
-
6:
– Integer
Input
-
On entry: the stride separating matrix column elements in the arrays
fl,
flr.
Constraint:
.
-
7:
– double
Output
-
On exit: the rotated matrix of loadings, . will contain the rotated loading for the th variable on the th factor, for and .
-
8:
– double
Output
-
Note: the th element of the matrix is stored in .
On exit: the matrix of rotations, .
-
9:
– Integer
Input
-
On entry: the stride separating matrix column elements in the array
r.
Constraint:
.
-
10:
– double
Input
-
On entry: indicates the accuracy required. The iterative procedure of
Cooley and Lohnes (1971) will be stopped and the final refinement computed when the change in
is less than
. If
acc is greater than or equal to
but less than
machine precision, or if
acc is greater than
, then
machine precision will be used instead.
It is suggested that
acc be set to 0.00001.
Constraint:
.
-
11:
– Integer
Input
-
On entry: the maximum number of iterations. It is suggested that
maxit be set to 30.
Constraint:
.
-
12:
– Integer *
Output
-
On exit: the number of iterations performed.
-
13:
– NagError *
Input/Output
-
The NAG error argument (see
Section 7 in the Introduction to the NAG Library CL Interface).
The accuracy is determined by the value of
acc.
Background information to multithreading can be found in the
Multithreading documentation.
If the results of a principal component analysis as carried out by
g03aac are to be rotated, the loadings as returned in the array
by
g03aac can be supplied via the argument
fl to
g03bac. The resulting rotation matrix can then be used to rotate the principal component scores as returned in the array
by
g03aac. The function
f16yac may be used for this matrix multiplication.
The example is taken from page 75 of
Lawley and Maxwell (1971). The results from a factor analysis of ten variables using three factors are input and rotated using varimax rotations without standardizing rows.