Announcement

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

  • Factor Analysis vs. SEM

    I am running factor analysis on information regarding education. I am aware that I do not have sufficient variables and could have a problem of identification. However, when I ran factor analysis using the factor command in stata I obtain a result and when I run a simple latent SEM, it does not converge. Aren't they supposed to be doing the same thing? Example: factor x1 x2 x3 vs. SEM (x1<-X) (x2<-X) (x3<-X), latent(X) nocapslatent

  • #2
    factor is exploratory factor analysis and SEM is non-exploratory. They do very different things. Look them up.
    As for your problem:
    clear
    set obs 100
    g X=rnormal()
    g x1= X + rnormal()
    g x2= X + rnormal()
    g x3=X + rnormal()
    sem (x1<-X) (x2<-X) (x3<-X),latent(X) nocapslatent


    This runs fine. Your problem is probably related to the data - it may not be identified somehow.
    Please read the FAQ on asking questions and using dataex to provide data.

    Comment


    • #3
      Cross-posted at http://stats.stackexchange.com/review/close/124652 (although likely to be closed there as off-topic). Please note our policy on cross-posting, which is that you are asked to tell us about it. http://www.statalist.org/forums/help#crossposting

      Comment


      • #4
        Thank you very much for your help and sorry for the inconvenience. I am new to these forums so I will take a closer look at the rules on posting questions.

        Comment


        • #5
          Originally posted by Maria Sarabia View Post
          . . .when I ran factor analysis using the factor command in stata I obtain a result and when I run a simple latent SEM, it does not converge.
          Try
          Code:
          factor x1 x2 x3, factors(1) ml
          and see whether it gives you a warning such as "Beware: solution is a Heywood case (i.e., invalid or boundary values of uniqueness)".

          You might be able to get sem to converge by adding one or more constraints to the parameter estimates. For example, you could try something like standardizing the indicator variables to mean 0 and standard deviation 1 and then applying corresponding constraints to sem, and if it converges, then backing off incrementally (forgo completely standardizing each indicator variable in turn and removing the corresponding contraint) as far as you feel you can and still get an interpretable fitted model.
          Code:
          forvalues i = 1/3 {
              egen double x`i'_std = std(x`i')
              constraint define `i' _b[x`i'_std:_cons] = 0
          }
          sem (x?_std <- X), variance(e.x1_std@1 e.x2_std@1 e.x3_std@1) constraints(1/3) nocnsreport
          If you happen to know that the residual variances of the indicator variables ought to be the same or similar, then you can start with constraining the corresponding sem parameter estimates to be the same, and see whether that gets you closer to where you want to go.

          Comment


          • #6
            I'd also add that there are differences in the underlying assumptions of the two approaches. The factor command is an interface to different forms of dimensionality reduction techniques like principal components without assumption about any nature of an underlying causal relationship. SEM, conversely, is derived with explicit causal relationships being defined between latent and manifest variables.

            Comment

            Working...
            X