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 ofA
are 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