Categories &

Functions List

Function Reference: rotatefactors

statistics: B = rotatefactors (A)
statistics: B = rotatefactors (A, Name, Value, …)
statistics: [B, T] = rotatefactors (…)

Rotate a factor-loading matrix.

B = rotatefactors (A) rotates the D × M factor loadings matrix A (D observed variables, M factors) to the 'varimax' criterion and returns the rotated loadings B, the same size as A.

[B, T] = rotatefactors (…) also returns the M × M rotation matrix T, so that B = A * T. For the orthogonal methods T is orthonormal (T' * T is the identity); for the oblique methods ('promax' and oblique 'procrustes') it is a general invertible matrix.

The rotation is controlled by Name/Value pairs:

'Method'
The rotation criterion, one of:
'varimax' (default)
Orthomax with a criterion coefficient of 1; maximizes the variance of the squared loadings within each factor.
'quartimax'
Orthomax with a coefficient of 0; simplifies the description of each variable.
'equamax'
Orthomax with a coefficient of M / 2.
'parsimax'
Orthomax with a coefficient of D (M - 1) / (D + M - 2).
'orthomax'
General orthomax with the coefficient given by 'Coeff'.
'promax'
Oblique rotation obtained by fitting an oblique transformation to a target built from a 'varimax' solution raised to the power 'Power'.
'procrustes'
Rotation towards the 'Target' matrix, either orthogonal or oblique according to 'Type'.
'Normalize'
'on' (default) applies Kaiser normalization (each row of A is scaled to unit length before the orthomax rotation and unscaled afterwards); 'off' disables it. Ignored by 'procrustes'.
'Reltol'
Relative convergence tolerance for the iterative orthomax rotation. The default is sqrt (eps).
'Maxit'
Maximum number of iterations for the iterative orthomax rotation. The default is 250.
'Coeff'
The orthomax coefficient used when 'Method' is 'orthomax'. The default is 1 (equivalent to 'varimax').
'Power'
The power used to build the 'promax' target, a scalar greater than or equal to 1. The default is 4.
'Target'
The target loadings matrix for 'procrustes', the same size as A. Required for that method.
'Type'
'oblique' (default) or 'orthogonal', selecting the kind of 'procrustes' rotation. The default follows MATLAB, whose 'procrustes' rotation is oblique unless told otherwise.

Note on the orthomax family: for coefficients up to 1 ('varimax', 'quartimax', and small 'orthomax') the rotation follows the same successive-SVD iteration as MATLAB and stops at the same relative tolerance. For larger coefficients ('equamax', 'parsimax') that iteration does not converge, so a monotonically convergent pairwise algorithm is used instead; it reaches the same optimum as MATLAB to that solution’s own convergence precision.

See also: factoran, pca, pcacov, procrustes

Source Code: rotatefactors

Rotate a three-factor loading matrix to the varimax criterion and recover the rotation matrix.

 A = [ 0.8, 0.2, 0.1;  0.7, 0.3, 0.0; ...
       0.1, 0.9, 0.2;  0.2, 0.8, 0.1; ...
       0.1, 0.2, 0.9;  0.0, 0.1, 0.8];
 [B, T] = rotatefactors (A, 'Method', 'varimax');
 B
B =

   8.1302e-01   1.3637e-01   1.0199e-01
   7.2128e-01   2.4445e-01   2.4792e-03
   1.6964e-01   8.8828e-01   2.0539e-01
   2.6168e-01   7.8136e-01   1.0491e-01
   1.1397e-01   1.8637e-01   9.0126e-01
   6.6235e-03   9.5063e-02   8.0057e-01

T is orthonormal and reconstructs B from A.

 max (abs (vec (A * T - B)))
ans = 0