rotatefactors, return not documented for oblique

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

  1. Lee Newman

    Lee Newman Guest

    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
    #1
    1. Advertisements

  2. 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
    #2
    1. Advertisements

  3. Lee Newman

    Lee Newman Guest

    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
    #3
  4. 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.
    load examgrades
    [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
    #4
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.