# rotatefactors, return not documented for oblique

Discussion in 'MATLAB' started by Lee Newman, Jul 7, 2009.

1. ### Lee NewmanGuest

When using B= rotatefactors(A,...) with an oblique method (e.g., promax), the help documentation does not specify what is actually returned in B. I assume that it is the *pattern* matrix from the rotation, not the *structure* matrix, but there are debates over what should be used for the loadings.

Can anyone confirm that B is, in fact, the pattern matrix from an oblique rotation?

Cheers,
Lee

Lee Newman, Jul 7, 2009

2. ### Peter PerkinsGuest

Lee, there's a lot of different terminology surrounding PCA and FA, and I'm not familiar with these terms. ROTATEFACTORS takes as an input a matrix of coefficients or loadings. In PCA, for example, each column of that matrix is the coordinates of a PC in the original data space. ROTATEFACTORS returns a rotated version of those coefs, i.e., each column is the coordinates of a rotated PC, but still in the original data space.

Hope this helps.

Peter Perkins, Jul 8, 2009

3. ### Lee NewmanGuest

Lee, there's a lot of different terminology surrounding PCA and FA, and I'm not familiar with these terms. ROTATEFACTORS takes as an input a matrix of coefficients or loadings. In PCA, for example, each column of that matrix is the coordinates of a PC in the original data space. ROTATEFACTORS returns a rotated version of those coefs, i.e., each column is the coordinates of a rotated PC, but still in the original data space.
Right, but there are many options for rotation, falling into two classes -- Orthogonal, and Oblique. With orthogonal rotation, there is no ambiguity about what would be returned -- it would just be the rotated loading matrix. With Oblique rotations, there is no rotated "loading matrix" per se, but rather oblique rotation produces two matrices typically called a "pattern matrix" and a "structure matrix". There is some debate in the literature of which of these should be used as the "loading", ergo my question.... I assume when using oblique rotation (like promax) that ROTATEFACTORS returns the "pattern matrix", but I wanted to confirm this. (It really should return both matrices).

Excerpt from http://faculty.chass.ncsu.edu/garson/PA765/factor.htm
In oblique rotation, one gets both a pattern matrix and a structure matrix. The structure matrix is simply the factor loading matrix as in orthogonal rotation, representing the variance in a measured variable explained by a factor on both a unique and common contributions basis. The pattern matrix, in contrast, contains coefficients which just represent unique contributions. The more factors, the lower the pattern coefficients as a rule since there will be more common contributions to variance explained. For oblique rotation, the researcher looks at both the structure and pattern coefficients when attributing a label to a factor.

Lee Newman, Jul 8, 2009
4. ### Peter PerkinsGuest

Lee, below is a bit of code I cobbled together a long time ago. I recall having a good deal of difficulty getting a consensus on the terminology from the various sources. I believe Harman is considered a primary source.

Luckily, I think this answers your question, i.e., ROTATEFACTORS (or using rotation from FACTORAN) returns the pattern matrix.

%% Terminology in Oblique Rotations
% The notation and terminology used in describing oblique rotations in
% Factor Analysis varies among authors. In particular, what are known as
% the pattern and structure matrices, and the primary and reference axes,
% can be confusing. Below is the code to compute the primary axis
% quantities in the notation used by one popular reference, Harman (1976).
% This notation is different than the names used in FACTORAN's return argument
% list, and in other references.
[P, Usq, Tinv] = ...
factoran(grades, 2, 'rotate', 'promax', 'maxit',200);
P; % primary factor pattern matrix
T = inv(Tinv); % primary axis transformation matrix
Phi = T'*T; % primary factor correlation matrix
S = P*Phi; % primary factor structure matrix

%%
% Here is code to compute the corresponding reference axis quantities.
D = diag(1./sqrt(diag(inv(Tinv * Tinv'))));
% col normalize transpose
Lambda = Tinv' * D; % reference factor transformation matrix
W = S*inv(D); % reference factor pattern matrix
Psi = Lambda'*Lambda; % reference factor correlation matrix
V = W*Psi; % reference factor structure matrix

%%
% Finally, you can compute the initial (unrotated) factor pattern from the
% primary factor pattern matrix and the primary axis transformation matrix.
A = P*T;

Peter Perkins, Jul 9, 2009