I'm using R's factanal function for factor analysis. I know from reading that there are various ways of picking how many factors to use in the analysis. I don't know which to choose, or how to do any of them.

Here's the data I have so far from factanal. I don't understand what SS loadings are, or why degrees_of_freedom is not = min(#rows,#columns) - #factors.

Just judging from the Cumulative Var, which I think I understand, I would guess that 2 is the right number of factors, but am I right? And if so, how can I convince others that this is the right number of factors?

factanal(x = charges[3:8], factors = 1)

#                Factor1
# SS loadings      4.779
# Proportion Var   0.797

Test of the hypothesis that 1 factor is sufficient. The chi square statistic is 279.13 on 9 degrees of freedom. The p-value is 6.9e-55

factanal(x = charges[3:8], factors = 2, scores = "regression")

#                Factor1 Factor2
# SS loadings      2.817   2.544
# Proportion Var   0.470   0.424
# Cumulative Var   0.470   0.894

Test of the hypothesis that 2 factors are sufficient. The chi square statistic is 77.1 on 4 degrees of freedom. The p-value is 7.15e-16

factanal(x = charges[3:8], factors = 3)

#                Factor1 Factor2 Factor3
# SS loadings      2.769   2.618   0.063
# Proportion Var   0.461   0.436   0.010
# Cumulative Var   0.461   0.898   0.908

The degrees of freedom for the model is 0 and the fit was 0.1047

  • 1
    $\begingroup$ For reproducibility, please use a built-in dataset or add your dataset in the question. $\endgroup$
    – Max Ghenis
    Mar 5, 2017 at 2:12

2 Answers 2


There are several approaches to determining the number of factors to extract for exploratory factor analysis (EFA). However, practically all of them boil down to be either visual, or analytical.

Visual approaches are mostly based on visual representation of factors' eigenvalues (so called scree plot - see this page and this page), depending on extracted factor number. A scree plot allows to determine the number of factors to extract by detecting an area, where the curve makes relatively sharp drop (called "elbow"). Note that the scree plot term is also applicable to principal component analysis (PCA) - for a basic example, see this page.

Analytical approaches are based on various criteria and heuristics, including Kaiser criterion (eigenvalue greater than one), variance explained criterion (this heuristic's cut-off values vary from 0.8-0.9 to as low as 0.5, depending on researcher's specific goals), parallel analysis, Very Simple Structure (VSS) criterion, Velicer's MAP test and other techniques (see more details here and here, as well as via links within).

While I've tried to answer your question briefly and give mainly an overview of the topic, there are many nice answers to similar or related questions on Cross Validated, which I highly recommend you to review. For example, for PCA vs. EFA basic arguments, see this discussion. For much more advanced arguments on this topic, see this and this discussion. For applying VSS criterion, using R, see this discussion. For parallel analysis, see this discussion.

  • 1
    $\begingroup$ Technically the Kaiser criterion for common factor analysis (CFA) is eigenvalue greater than zero. In Kaiser's paper he used the term "factor analysis" to apply to the eigendecomposition of the correlation matrix—what we today call principal component analysis. The equivalent logic of for the eigendecomposition of the correlation matrix with the diagonal replaced with the "communalities" (what we today call CFA) works out to be $\lambda>0$. See doyenne.com/Software/files/PA_for_PCA_vs_FA.pdf $\endgroup$
    – Alexis
    Jan 25, 2015 at 18:38
  • 1
    $\begingroup$ @Alexis: Thank you for your clarification. The referenced paper is indeed interesting and I will study it. However, it seems to cover a special case of applying Kaiser criterion in the context of parallel analysis, which to the best of my knowledge is not always the case. I also wanted to mention that I find using the abbreviation CFA for common factor analysis a bit questionable, considering the popularity of using CFA to refer to confirmatory factor analysis. Perhaps, it helps that the paper does not seem to involve any references to the latter meaning of the abbreviation. $\endgroup$ Jan 26, 2015 at 2:12
  • 1
    $\begingroup$ @AlexksandrBlekh I think I disagree: my point about Kaiser holds from his actual paper, the link I provided simple drew out the math, albeit in the context of Horn's parallel analysis. Eigenvalue > 1 was articulated for principal component analysis, not for common factor analysis. The math in the latter works out to eigenvalue > 0. "CFA" is a semantic... refer to it as FA or something else or don't use acronyms as you like. :) $\endgroup$
    – Alexis
    Jan 26, 2015 at 3:47
  • $\begingroup$ @Alexis: Fair enough! Thank you, again, for clarifying. Point taken (still requires me to analyze the papers, though, to really understand those things :-). $\endgroup$ Jan 26, 2015 at 4:44
  • 1
    $\begingroup$ Updated link: alexisdinno.com/Software/files/PA_for_PCA_vs_FA.pdf $\endgroup$
    – Alexis
    Oct 12, 2017 at 0:23

I think that I cant help you specifically with R, but a common step on verifying the number of factors is to either look at the loadings and retaining as many factors as those ones with a value of 1 or more. This is the most straight way to pick the factors. If you want, you can manage to get the "scree plot", wich gives you a more visual insight on the number of factors but is more subjective. In that plot, when you get a "fall" in the curve plotted might indicate the number of factors. This approach is good when you want to reduce the number of variables of a big dataset with many variables highly correlated. So two is the number of factors to extract in your case.

Instead, if you want to really cluster variables and this factor has a meaning on people or economic behavior, you might want to select only the two or three highest loadings, because you will be able to access the Component Plot in Rotated Space, i.e. the graphical representation of the variables in a two-dimensional (or three-dimensional) space, wich gives you clues on interpreting the factor if this is your goal.

Since you put the theoretical references for your studies at the end of your work, you will be telling others that you are not doing something sparse - it´s based on proofs stated by others. Statistically speaking, you could run a correlation analysis between the scores obtained from the pca with the response variable, for example. If the PCA was ok and the original variables are also correlated with this response variable, your factor will also be and you´ll have a very solid and understandable number to convince people.

Hope this helped you in some way.If I have said anything wrong, anyone please correct me.

  • 1
    $\begingroup$ Same comment to you as to @AleksandrBlekh ... The eigenvalue > 1 rule articulated by Kaiser was for the eigendecomposition of the correlation matrix (ie.. PCA, not factor analysis, though he used that label). The math for common factor analysis works out to retain if eigenvalues > 0. See Gently Clarifying the Application of Horn’s Parallel Analysis to Principal Component Analysis Versus Factor Analysis $\endgroup$
    – Alexis
    Jan 25, 2015 at 20:20
  • 1
    $\begingroup$ The most important comment here is that the Kaiser criterion is woefully generous. Any factor accounting for more than the variance attributable to one average item is retained. That is nearly always choosing too many factors. Which makes it more of a pity that this remains the SPSS default :-(. Better by far to use a method which corrects for chance, like parallel analysis or, better still, move to EFA, or full SEM modelling. $\endgroup$
    – tim
    Oct 17, 2016 at 9:13
  • $\begingroup$ @leonardop Updated link: alexisdinno.com/Software/files/PA_for_PCA_vs_FA.pdf $\endgroup$
    – Alexis
    Oct 12, 2017 at 0:23

Your Answer

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

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