I have a data set with approximately 500 observations on eight key variables. There are a lot of missing data; only about 1/12 of the observations are complete. I am using PROC MI and MIANALYZE in SAS to run various regressions on multiply imputed data, and this is working well. (There are about 200 variables in total, and there are high correlations among them which helps multiple imputation.)

However, I would also like to do factor analysis on the imputed data. This does not appear to be easily done in SAS, and it poses some interesting challenges:

  1. The signs of the factors are arbitrary, so different imputations could yield opposite signs;
  2. What was factor 1 in one imputation could be factor 2 in another imputation (although in this case, with so few key variables, it is likely that one factor is enough),

and probably other issues as well.

I could do exploratory factor analysis on each imputed data set, of course, and I could then average them on a sort of ad-hoc basis, but this seems very sloppy.

Some Googling did not reveal any solutions, but ... well, Google doesn't always find everything.

Any help, ideas, references appreciated. I have access to SAS and to R.

  • 2
    $\begingroup$ @Stef's advise is right. Use procrustes rotation to identify which factor in one sample corresponds (similar) to which in the other. The rotation leaves you orthogonal rotation matrix which you can use to "translate" one loading matrix into the other if they proved to be in accordance. $\endgroup$
    – ttnphns
    Commented Dec 27, 2012 at 10:55
  • 3
    $\begingroup$ If you were doing a confirmatory FA using SEM, I think you could deal with the missing data under the same MAR assumption with expectation-maximization/ML (e.g. palgrave-journals.com/jt/journal/v11/n1/abs/5740069a.html). However, I'm not sure how to take advantage of the all of the auxiliary information you have, or how this might apply to exploratory FA. Just a thought. $\endgroup$
    – D L Dahly
    Commented Dec 27, 2012 at 14:07

2 Answers 2


Factor analysis or principal components analysis may indeed yield solutions whose answers are rotated or mirrored versions of each other, so averaging the person scores is not a good idea. Several authors have explored the use of Procrustes analysis to correct for the rotational indetermination, so try searching on 'multiple imputation' and 'procrustes'.


Do confirmatory factor analysis instead, which would help fixing the loadings to have the same sign in all the imputations. At its heart, EFA is exploratory, while MI framework is that of parameter estimation. They just don't go together well: MI is not particularly suitable either for testing or exploratory analysis. EFA only makes sense if you know nothing about your data, which is rarely the case: if you designed the instrument, you must have had some idea in mind what you wanted to measure, and can just cut to the meat of that with CFA.

  • $\begingroup$ Interesting comment, @StasK. I see EFA used a lot when you know something about the data, or suspect something; I see CFA used relatively little. $\endgroup$
    – Peter Flom
    Commented Aug 8, 2013 at 13:35
  • 1
    $\begingroup$ EFA is easier to do: just dump everything into the kitchen sink. With CFA, you have to get yourself into trouble of writing some syntax of grouping variables into factors, or drawing the diagrams in Stata or AMOS GUI. Few people have the extra 5 minutes to do that... although they do seem to have the couple of months to revise the papers thus written. $\endgroup$
    – StasK
    Commented Aug 8, 2013 at 13:58
  • $\begingroup$ This is an interesting suggestion. So, if I have a large data set, where only a small percentage of cases would be affected by case wise deletion (say 4-5%), would it be sensible to conduct EFA on the original data set and than perform repeated CFA on the imputed data sets? How would you go about pooling the resulting loadings and extracted factor scores? $\endgroup$
    – crsh
    Commented Oct 23, 2013 at 13:53
  • $\begingroup$ EFA followed by CFA is rarely a good thing to do. You are using your data twice, and your type I error is essentially out of control. $\endgroup$
    – StasK
    Commented Oct 23, 2013 at 19:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.