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 factor
loadings matrix A ( observed variables, factors) to
the 'varimax' criterion and returns the rotated loadings B, the
same size as A.
[B, T] = rotatefactors (…) also returns the
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''varimax' (default)'quartimax''equamax''parsimax''orthomax''Coeff'.'promax''varimax' solution raised to the power 'Power'.'procrustes''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'sqrt (eps).'Maxit''Coeff''Method' is 'orthomax'.
The default is 1 (equivalent to 'varimax').'Power''promax' target, a scalar greater than or
equal to 1. The default is 4.'Target''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