rotatefactors
Rotate factor loadings
Syntax
B = rotatefactors(A)
B = rotatefactors(A,'Method','orthomax','Coeff',gamma)
B = rotatefactors(A,'Method','procrustes','Target',target)
B = rotatefactors(A,'Method','pattern','Target',target)
B = rotatefactors(A,'Method','promax')
[B,T] = rotatefactors(A,...)
Description
B = rotatefactors(A) rotates the
d-by-m loadings matrix
A to maximize the varimax criterion, and returns the result in
B. Rows of A and B
correspond to variables and columns correspond to factors, for example, the
(i, j)th element of A is
the coefficient for the ith variable on the jth
factor. The matrix A usually contains principal component
coefficients created with pca or pcacov, or factor
loadings estimated with factoran.
B = rotatefactors(A,'Method','orthomax','Coeff',gamma) rotates A to
maximize the orthomax criterion with the coefficient gamma,
i.e., B is the orthogonal rotation of A that
maximizes
sum(D*sum(B.^4,1) - GAMMA*sum(B.^2,1).^2)
The default value of 1 for gamma corresponds
to varimax rotation. Other possibilities include gamma =
0, m/2, and d(m -
1)/(d + m - 2), corresponding
to quartimax, equamax, and parsimax. You can also supply 'varimax', 'quartimax', 'equamax',
or 'parsimax' for the 'method' parameter
and omit the 'Coeff' parameter.
If 'Method' is 'orthomax', 'varimax', 'quartimax', 'equamax',
or 'parsimax', then additional parameters are
'Normalize'— Flag indicating whether the loadings matrix should be row-normalized for rotation. If'on'(the default), rows ofAare normalized prior to rotation to have unit Euclidean norm, and unnormalized after rotation. If'off', the raw loadings are rotated and returned.'Reltol'— Relative convergence tolerance in the iterative algorithm used to findT. The default issqrt(eps).'Maxit'— Iteration limit in the iterative algorithm used to findT. The default is250.
B = rotatefactors(A,'Method','procrustes','Target',target) performs
an oblique procrustes rotation of A to the d-by-m target
loadings matrix target.
B = rotatefactors(A,'Method','pattern','Target',target) performs
an oblique rotation of the loadings matrix A to
the d-by-m target pattern
matrix target, and returns the result in B. target defines
the "restricted" elements of B, i.e., elements
of B corresponding to zero elements of target are
constrained to have small magnitude, while elements of B corresponding
to nonzero elements of target are allowed to take
on any magnitude.
If 'Method' is 'procrustes' or 'pattern',
an additional parameter is 'Type', the type of
rotation. If 'Type' is 'orthogonal',
the rotation is orthogonal, and the factors remain uncorrelated.
If 'Type' is 'oblique' (the
default), the rotation is oblique, and the rotated factors might be
correlated.
When 'Method' is 'pattern',
there are restrictions on target. If A has m columns,
then for orthogonal rotation, the jth column of target must
contain at least m - j zeros.
For oblique rotation, each column of target must
contain at least m - 1 zeros.
B = rotatefactors(A,'Method','promax') rotates
A to maximize the promax criterion, equivalent to an oblique Procrustes
rotation with a target created by an orthomax rotation. Use the four
orthomax parameters to control the orthomax rotation used internally
by promax.
An additional parameter for 'promax' is 'Power',
the exponent for creating promax target matrix. 'Power' must
be 1 or greater. The default is 4.
[B,T] = rotatefactors(A,...) returns the
rotation matrix T used to create B,
that is, B = A*T. You can find the correlation
matrix of the rotated factors by using inv(T'*T).
For orthogonal rotation, this is the identity matrix, while for oblique
rotation, it has unit diagonal elements but nonzero off-diagonal elements.
Examples
rng('default') % for reproducibility
X = randn(100,10);
% Default (normalized varimax) rotation:
% first three principal components.
LPC = pca(X);
[L1,T] = rotatefactors(LPC(:,1:3));
% Equamax rotation:
% first three principal components.
[L2,T] = rotatefactors(LPC(:,1:3),...
'method','equamax');
% Promax rotation:
% first three factors.
LFA = factoran(X,3,'Rotate','none');
[L3,T] = rotatefactors(LFA(:,1:3),...
'method','promax',...
'power',2);
% Pattern rotation:
% first three factors.
Tgt = [1 1 1 1 1 0 1 0 1 1; ...
0 0 0 1 1 1 0 0 0 0; ...
1 0 0 1 0 1 1 1 1 0]';
[L4,T] = rotatefactors(LFA(:,1:3),...
'method','pattern',...
'target',Tgt);
inv(T'*T) % Correlation matrix of the rotated factors
ans =
1.0000 -0.9593 -0.7098
-0.9593 1.0000 0.5938
-0.7098 0.5938 1.0000
References
[1] Harman, H. H. Modern Factor Analysis. 3rd ed. Chicago: University of Chicago Press, 1976.
[2] Lawley, D. N., and A. E. Maxwell. Factor Analysis as a Statistical Method. 2nd ed. New York: American Elsevier Publishing, 1971.
Version History
Introduced before R2006a
See Also
biplot | factoran | pca | pcacov | procrustes