In cases, data is ordered categorical, exploratory factor analysis (EFA) is best implemented using polychoric correlations and diagonally weighted least squares (for example, see here).

To my knowledge, the only way of impementing factor analysis using DWLS in R is lavaan. It requires specifying an EFA within a CFA framework (E/ CFA). For more info, see amongst others here).

However, E/ CFA also requires one to choose an anchor item for each factor whose cross-loadings are fixed to zero. It therefore is more restrictive than conventional EFA. In fact, E/ CFA is considered an "intermediate step" between EFA and CFA (see here on page 83).

To my knowledge, the only software package that allows one to run an EFA with DWLS is Mplus. But it is also quite costly. Thus, my only option is lavaan in R. However, I would I then select anchor items?

As of now, my thinking is to run a fa within R using weighted least squares to get an idea of the items with the highest loading on each factor. Based on these results I could then select the anchor items and then run E/ CFA with lavaan. However, would this be robust enough? Are there better ways?


Remember that factor analysis in general is rotationally indeterminate, and more broadly is at risk of having more free parameters than can be estimated. Constraints are necessary to achieve some degree of identifiability. Different sets of constraints may achieve solutions that equivalent except for rotation--but one rotation(which fa may provide) may lack the feature that you are looking for. So the question is what attributes are you seeking in the solution? If you don't have a preference, then just pick different "anchor items" for each factor, and go.

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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