Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Maximum likelihood factor analysis with promax rotation

    Hi,
    I am new to Stata, so forgive me if my question is really vague.
    I have been told to recreate the three factor CFA from this paper: https://peerj.com/articles/1312/. The ultimate goal is to be able to make a SEM equal to "Figure" 1 in this paper.
    Under the "Exploratory factor analysis"-section, the authors say that they have used a maximum likelihood factor analysis with promax rotation. There are many tutorials explaining how to execute and interpret this in SPSS, but I can't find any for Stata.
    So:
    1) Does anyone have any idea how to do an MLFA with promax rotation? I see that Stata has a command called "rotate, promax oblique", but I find Statas instructions regarding execution and interpretation of this command hard to understand (http://www.stata.com/manuals13/mvrotate.pdf#mvrotate)
    2) What do Stata mean when it says promax power? From manual: "we recommend that you keep the power in the range (1,4] and not restricted to integers. Specifying promax is equivalent to promax(3)."

    Any tip or helping hand would be greatly appreciated.

  • #2
    Originally posted by Margit Gaarden View Post
    1) Does anyone have any idea how to do an MLFA with promax rotation?
    Basically, it's
    Code:
    factor <your list of variables goes here>, ml
    followed by
    Code:
    rotate , promax
    An example is shown below, if that will help. Start at the "Begin here" comment (the beginning of the output is just to create an illustrative dataset). In the example, I used the same defaults as SPSS with regard to power (a.k.a., Kappa—see answer to your next question below) and Kaiser normalization.

    Originally posted by Margit Gaarden View Post
    2) What do Stata mean when it says promax power?
    If you're familiar with SPSS, it's the same as what SPSS calls Kappa. Stata's default is 3, and according to that Web page, SPSS's is 4.

    .ÿversionÿ14.2

    .ÿ
    .ÿclearÿ*

    .ÿsetÿmoreÿoff

    .ÿsetÿseedÿ1386467

    .ÿ
    .ÿtempnameÿZeroÿCommÿCorr

    .ÿmatrixÿdefineÿ`Zero'ÿ=ÿJ(3,ÿ3,ÿ0)

    .ÿmatrixÿdefineÿ`Comm'ÿ=ÿJ(3,ÿ3,ÿ0.5)ÿ+ÿI(3)ÿ*ÿ0.5

    .ÿmatrixÿdefineÿ`Corr'ÿ=ÿ(ÿ///
    >ÿÿÿÿÿÿÿÿÿ`Comm',ÿ`Zero',ÿ`Zero'ÿ\ÿ///
    >ÿÿÿÿÿÿÿÿÿ`Zero',ÿ`Comm',ÿ`Zero'ÿ\ÿ///
    >ÿÿÿÿÿÿÿÿÿ`Zero',ÿ`Zero',ÿ`Comm')

    .ÿforvaluesÿiÿ=ÿ1/9ÿ{
    ÿÿ2.ÿÿÿÿÿÿÿÿÿlocalÿvarlistÿ`varlist'ÿy`i'
    ÿÿ3.ÿ}

    .ÿquietlyÿdrawnormÿ`varlist',ÿdoubleÿcorr(`Corr')ÿn(500)

    .ÿ
    .ÿ*
    .ÿ*ÿBeginÿhere
    .ÿ*
    .ÿ
    .ÿ//ÿHowÿtoÿdoÿmaximumÿlikelihoodÿexploratoryÿfactorÿanalysis
    .ÿfactorÿ`varlist',ÿfactors(3)ÿmlÿnolog
    (obs=500)

    Factorÿanalysis/correlationÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNumberÿofÿobsÿÿÿÿ=ÿÿÿÿÿÿÿÿ500
    ÿÿÿÿMethod:ÿmaximumÿlikelihoodÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRetainedÿfactorsÿ=ÿÿÿÿÿÿÿÿÿÿ3
    ÿÿÿÿRotation:ÿ(unrotated)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNumberÿofÿparamsÿ=ÿÿÿÿÿÿÿÿÿ24
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSchwarz'sÿBICÿÿÿÿ=ÿÿÿÿ155.709
    ÿÿÿÿLogÿlikelihoodÿ=ÿ-3.279252ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(Akaike's)ÿAICÿÿÿ=ÿÿÿÿ54.5585

    ÿÿÿÿ--------------------------------------------------------------------------
    ÿÿÿÿÿÿÿÿÿFactorÿÿ|ÿÿÿEigenvalueÿÿÿDifferenceÿÿÿÿÿÿÿÿProportionÿÿÿCumulative
    ÿÿÿÿ-------------+------------------------------------------------------------
    ÿÿÿÿÿÿÿÿFactor1ÿÿ|ÿÿÿÿÿÿ1.60510ÿÿÿÿÿ-0.02440ÿÿÿÿÿÿÿÿÿÿÿÿ0.3610ÿÿÿÿÿÿÿ0.3610
    ÿÿÿÿÿÿÿÿFactor2ÿÿ|ÿÿÿÿÿÿ1.62950ÿÿÿÿÿÿ0.41767ÿÿÿÿÿÿÿÿÿÿÿÿ0.3665ÿÿÿÿÿÿÿ0.7275
    ÿÿÿÿÿÿÿÿFactor3ÿÿ|ÿÿÿÿÿÿ1.21183ÿÿÿÿÿÿÿÿÿÿÿÿ.ÿÿÿÿÿÿÿÿÿÿÿÿ0.2725ÿÿÿÿÿÿÿ1.0000
    ÿÿÿÿ--------------------------------------------------------------------------
    ÿÿÿÿLRÿtest:ÿindependentÿvs.ÿsaturated:ÿÿchi2(36)ÿ=ÿ1021.41ÿProb>chi2ÿ=ÿ0.0000
    ÿÿÿÿLRÿtest:ÿÿÿ3ÿfactorsÿvs.ÿsaturated:ÿÿchi2(12)ÿ=ÿÿÿÿ6.48ÿProb>chi2ÿ=ÿ0.8899

    Factorÿloadingsÿ(patternÿmatrix)ÿandÿuniqueÿvariances

    ÿÿÿÿ-----------------------------------------------------------
    ÿÿÿÿÿÿÿÿVariableÿ|ÿÿFactor1ÿÿÿFactor2ÿÿÿFactor3ÿ|ÿÿÿUniquenessÿ
    ÿÿÿÿ-------------+------------------------------+--------------
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy1ÿ|ÿÿÿ0.5522ÿÿÿÿ0.4695ÿÿÿ-0.1190ÿ|ÿÿÿÿÿÿ0.4605ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy2ÿ|ÿÿÿ0.5103ÿÿÿÿ0.4220ÿÿÿ-0.1019ÿ|ÿÿÿÿÿÿ0.5512ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy3ÿ|ÿÿÿ0.5436ÿÿÿÿ0.4888ÿÿÿ-0.1414ÿ|ÿÿÿÿÿÿ0.4456ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy4ÿ|ÿÿ-0.1613ÿÿÿÿ0.4412ÿÿÿÿ0.4943ÿ|ÿÿÿÿÿÿ0.5350ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy5ÿ|ÿÿ-0.2372ÿÿÿÿ0.3579ÿÿÿÿ0.5532ÿ|ÿÿÿÿÿÿ0.5096ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy6ÿ|ÿÿ-0.1623ÿÿÿÿ0.4283ÿÿÿÿ0.5037ÿ|ÿÿÿÿÿÿ0.5365ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy7ÿ|ÿÿÿ0.4043ÿÿÿ-0.4180ÿÿÿÿ0.3797ÿ|ÿÿÿÿÿÿ0.5176ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy8ÿ|ÿÿÿ0.5524ÿÿÿ-0.3932ÿÿÿÿ0.3402ÿ|ÿÿÿÿÿÿ0.4244ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy9ÿ|ÿÿÿ0.4087ÿÿÿ-0.3957ÿÿÿÿ0.3213ÿ|ÿÿÿÿÿÿ0.5731ÿÿ
    ÿÿÿÿ-----------------------------------------------------------

    .ÿ
    .ÿ//ÿHowÿtoÿdoÿpromaxÿrotationÿwithÿSPSSÿdefaultsÿ(powerÿ=ÿ4ÿ&ÿKaiserÿnormalization)
    .ÿrotate,ÿpromax(4)ÿnormalizeÿblanks(0.3)

    Factorÿanalysis/correlationÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNumberÿofÿobsÿÿÿÿ=ÿÿÿÿÿÿÿÿ500
    ÿÿÿÿMethod:ÿmaximumÿlikelihoodÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRetainedÿfactorsÿ=ÿÿÿÿÿÿÿÿÿÿ3
    ÿÿÿÿRotation:ÿobliqueÿpromaxÿ(Kaiserÿon)ÿÿÿÿÿÿÿÿÿNumberÿofÿparamsÿ=ÿÿÿÿÿÿÿÿÿ24
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿSchwarz'sÿBICÿÿÿÿ=ÿÿÿÿ155.709
    ÿÿÿÿLogÿlikelihoodÿ=ÿ-3.279252ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(Akaike's)ÿAICÿÿÿ=ÿÿÿÿ54.5585

    ÿÿÿÿ--------------------------------------------------------------------------
    ÿÿÿÿÿÿÿÿÿFactorÿÿ|ÿÿÿÿÿVarianceÿÿÿProportionÿÿÿÿRotatedÿfactorsÿareÿcorrelated
    ÿÿÿÿ-------------+------------------------------------------------------------
    ÿÿÿÿÿÿÿÿFactor1ÿÿ|ÿÿÿÿÿÿ1.56586ÿÿÿÿÿÿÿ0.3522
    ÿÿÿÿÿÿÿÿFactor2ÿÿ|ÿÿÿÿÿÿ1.50687ÿÿÿÿÿÿÿ0.3389
    ÿÿÿÿÿÿÿÿFactor3ÿÿ|ÿÿÿÿÿÿ1.44620ÿÿÿÿÿÿÿ0.3253
    ÿÿÿÿ--------------------------------------------------------------------------
    ÿÿÿÿLRÿtest:ÿindependentÿvs.ÿsaturated:ÿÿchi2(36)ÿ=ÿ1021.41ÿProb>chi2ÿ=ÿ0.0000
    ÿÿÿÿLRÿtest:ÿÿÿ3ÿfactorsÿvs.ÿsaturated:ÿÿchi2(12)ÿ=ÿÿÿÿ6.48ÿProb>chi2ÿ=ÿ0.8899

    Rotatedÿfactorÿloadingsÿ(patternÿmatrix)ÿandÿuniqueÿvariances

    ÿÿÿÿ-----------------------------------------------------------
    ÿÿÿÿÿÿÿÿVariableÿ|ÿÿFactor1ÿÿÿFactor2ÿÿÿFactor3ÿ|ÿÿÿUniquenessÿ
    ÿÿÿÿ-------------+------------------------------+--------------
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy1ÿ|ÿÿÿ0.7341ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿ0.4605ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy2ÿ|ÿÿÿ0.6690ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿ0.5512ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy3ÿ|ÿÿÿ0.7452ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿ0.4456ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy4ÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.6757ÿ|ÿÿÿÿÿÿ0.5350ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy5ÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.7024ÿ|ÿÿÿÿÿÿ0.5096ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy6ÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0.6777ÿ|ÿÿÿÿÿÿ0.5365ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy7ÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿ0.6984ÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿ0.5176ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy8ÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿ0.7481ÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿ0.4244ÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿy9ÿ|ÿÿÿÿÿÿÿÿÿÿÿÿÿ0.6525ÿÿÿÿÿÿÿÿÿÿÿ|ÿÿÿÿÿÿ0.5731ÿÿ
    ÿÿÿÿ-----------------------------------------------------------
    ÿÿÿÿ(blanksÿrepresentÿabs(loading)<.3)

    Factorÿrotationÿmatrix

    ÿÿÿÿ-----------------------------------------
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|ÿFactor1ÿÿFactor2ÿÿFactor3ÿ
    ÿÿÿÿ-------------+---------------------------
    ÿÿÿÿÿÿÿÿÿFactor1ÿ|ÿÿ0.7500ÿÿÿ0.6512ÿÿ-0.2762ÿ
    ÿÿÿÿÿÿÿÿÿFactor2ÿ|ÿÿ0.6392ÿÿ-0.5745ÿÿÿ0.5947ÿ
    ÿÿÿÿÿÿÿÿÿFactor3ÿ|ÿ-0.1700ÿÿÿ0.4958ÿÿÿ0.7550ÿ
    ÿÿÿÿ-----------------------------------------

    .ÿ
    .ÿexit

    endÿofÿdo-file


    .

    Comment


    • #3
      Thank you Joseph Coveney for the example! That's really helpful I have some additional questions, if you don't mind:

      Under the "Exploratory factor analysis"-section in the experiment I am reproducing (https://peerj.com/articles/1312/), the authors write:
      "Three factors were extracted, but several items were cross-loaded. For instance, Item 1 was loaded on factors 2 (loading=.487) and 3 (loading=.465)."

      1) Will I be able to recreate their maximum likelihood factor analysis with promax rotation by using these commands?

      factor 'varlist', factors(3) ml nolog <--- as three factors were extracted
      rotate, promax(#) normalize blanks(0.2) <--- Since there should at least be a difference of 0.2 between loadings.

      2) ....and then be able to see the cross-loading in the "Rotated factor loading"-table?

      3) If the table does not show me any loadings between Variable 1 and Factor 2 and 3, does that mean that I have done something wrong in one of my previous steps?

      Comment


      • #4
        I don't know whether you'll get the same results as in the article. There might be small differences between the two results due to algorithmic differences or default setting differences in the two software packages. But, the code you show seems to be on the right track. You can omit the blanks(). It's just to make a somewhat cleaner display.

        Comment

        Working...
        X