Announcement

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

  • Factor scores.

    Hello!

    I was wondering how can I get factor scores which have mean = 0 and sd = 1.
    I'm using the following commands:

    Code:
    use https://stats.idre.ucla.edu/stat/stata/output/m255, clear
    drop if missing(sexism,facsex, facnat, facrank, studrank, grade, salary, yrsut, nstud)
    polychoric facsex facnat facrank studrank grade salary yrsut nstud
    return list
    matrix r = r(R)
    factormat r, n(1250) pcf sds(stdev) means(mean)
    predict fac1, regression
    I'm not sure whether the scores produced by stata are correct.

  • #2
    For anything you like you can standardize as specified using the dedicated egen function.

    You've been a member for quite a while now. Please read and act on the FAQ Advice.

    Specifically, #12 explains that you should give the provenance of community-contributed commands you refer to -- here polychoric -- while #6 explains our strong preference for full real names.

    Comment


    • #3
      Hello! I have the following question: Why do stata's factor scores differ froom other software? or I'm missing something.

      Code:
      use https://stats.idre.ucla.edu/stat/stata/output/m255, clear
      drop if missing(sexism,facsex, facnat, facrank, studrank, grade, salary, yrsut, nstud)
      polychoric facsex facnat facrank studrank grade salary yrsut nstud
      return list
      matrix r = r(R)
      tabstat facsex facnat facrank studrank grade salary yrsut nstud, stat(mean) save
      tabstatmat mean
      tabstat facsex facnat facrank studrank grade salary yrsut nstud, stat(sd) save
      tabstatmat stdev
      factormat r, n(1250) pcf sds(stdev) means(mean)
      predict fac1, regression

      Comment


      • #4
        I don't see any evidence in post #3 that Stata's factor scores differ from those of other software.

        Comment


        • #5
          The following is run immediately after your sample code.
          Code:
          . summarize fac1
          
              Variable |        Obs        Mean    Std. Dev.       Min        Max
          -------------+---------------------------------------------------------
                  fac1 |      1,250    1.56e-09    .9407693  -1.925668   2.311322
          From the documentation for factor postestimation in the Stata Multivariate Statistics Reference Manual PDF included in your Stata installation and accessible from Stata's Help menu we see the following discussion of similar output from their Example 10.

          Technical note

          Are common factors not supposed to be normalized to have mean 0 and standard deviation 1? In our example above, the mean is 4.5 × 10−9 and the standard deviation is 0.88. Why is that?

          For the mean, the deviation from zero is due to numerical roundoff, which would diminish dramatically if we had typed predict double f1 instead. The explanation for the standard deviation of 0.88, on the other hand, is not numerical roundoff. At a theoretical level, the factor is supposed to have standard deviation 1, but the estimation method almost never yields that result unless an exact solution to the factor model is found. This happens for the same reason that, when you regress y onx, you do not get the same equation as if you regress x on y, unless x and y are perfectly collinear.

          Comment


          • #6
            Rather than fitting an EFA from the polychoric correlation matrix via -factormat- and then trying to predict factor scores from the categorical variables—a dicey proposition—you might be better off fitting your EFA using -gsem-, which can handle the categorical variables directly and predict valid factor scores using them.

            Take a look at this method for fitting EFA models using Stata's SEM commands.

            Or else use Mplus.

            Comment

            Working...
            X