Exploratory factor analysis
When there is a questionnaire with many items, exploratory factor analysis (EFA) asks how many dimensions stand behind them and which items belong to each dimension – without defining the structure in advance. The page checks whether the data are suitable (KMO, Bartlett, the determinant), determines the number of factors by parallel analysis, by Kaiser or by a number you choose, extracts (principal axis factoring, maximum likelihood or principal components), rotates (oblimin, promax, varimax), and computes Cronbach's alpha for each factor and factor scores. Following Field (2024, chapter 18), Pallant (2020, chapter 15) and Brown (2015, chapter 2).
Loading the data
Paste columns directly from the spreadsheet (including the header row) – or a correlation matrix – select them in Excel, copy, and paste here:
Items and options
When to use?
Factor analysis answers one question: which items "go together", and what stands behind them. Field lists three uses – understanding the structure of a set of variables, constructing a questionnaire, and reducing many variables to a few dimensions "while retaining as much of the information as possible" (2024, section 18.2). A factor is "an unobservable variable that influences more than one observed measure and that accounts for the correlations among these observed measures" (Brown, 2015, p. 10).
Exploratory – the data determine the structure: you do not define in advance how many factors there are and which item belongs to which factor (Brown, 2015, pp. 11, 19). Confirmatory (CFA) – the researcher defines the structure in advance and tests it. In questionnaire development, exploratory analysis is used first, and then, in another sample, confirmatory analysis (ibid., p. 12) – the page "Confirmatory factor analysis".
Factors or components?
Two families that look similar in the output. Principal component analysis (PCA) explains all the variance of the items, and "does not estimate unmeasured variables, it just transforms measured ones" (Field, 2024, Section 18.3). Factor analysis explains only the shared variance – the correlations between the items – and assumes that each item also includes unique variance and measurement error (ibid., Section 18.3.2; Brown, 2015, p. 11).
The sources disagree, and here it is both. Brown is firm: if the goal fits the common factor model – for example, constructing a questionnaire that measures concepts – then PCA is "conceptually and mathematically inconsistent" (2015, p. 20), and factor estimates replicate better in CFA (ibid.). Pallant demonstrates PCA, and quotes Tabachnick and Fidell: factors when you want a theoretical solution "uncontaminated by unique and error variability", components when you want an "empirical summary" of the data (2020, chapter 15). Field demonstrates principal axis factoring, and notes that the results are usually similar, but with fewer than 20 items and low communalities (below .4) they may differ (2024, section 18.4.3). On this page the default is factor analysis (PAF), and PCA is available.
Are the data suitable?
Sample size. "A sample of 300 or more will probably provide a stable factor solution" (Field, 2024, Section 18.5.3). Comrey and Lee call 100 "poor", 300 "good" and 1,000 "excellent" (as cited there); but the required size also depends on the loadings and communalities: a factor with four loadings above .6 is stable at any sample size (Guadagnoli & Velicer, 1988), and when all communalities are above .6, even fewer than 100 may suffice (MacCallum et al., 1999; both as cited there). Pallant settles for 150 or more and a ratio of at least five participants per item (2020, chapter 15).
The correlations. Expect many above .3 – otherwise there is nothing to group (Pallant, 2020, Chapter 15; Field, 2024, Section 18.5.4) – and no correlations above .9, which are almost duplicates. The determinant of the correlation matrix should be above 0.00001; below that – extreme multicollinearity (Field, 2024, Box 18.3).
KMO (Kaiser–Meyer–Olkin) – how much of the correlations between the items stem from something shared and not from single pairs: the ratio of the sum of squared correlations to the sum of squared correlations and partial correlations. Above .9 "marvellous", .8 "meritorious", .7 "middling", .6 "mediocre", .5 "miserable", and below .5 – unacceptable (Kaiser & Rice, 1974, as cited in Field, 2024, section 18.5.2). Pallant requires at least .6 (2020, chapter 15). Each item also has its own KMO (MSA) – "above 0.5 at a bare minimum"; for an item below it, consider removing it and rerunning (Field, 2024, Section 18.7.1). Bartlett's test tests whether the correlation matrix is an identity matrix – that is, whether there is no correlation at all. Pallant asks for it to be significant (2020, chapter 15); Field points out that in a large sample it is "almost always" significant, and therefore "pointless" – unless it is not significant (2024, section 18.5.4).
Extraction
Principal axis factoring (PAF) – replaces the 1 on the diagonal of the correlation matrix with the communality estimate, starts from the squared multiple correlation of each item with all the others (SMC), and iterates until the communalities stabilize (Field, 2024, Sections 18.4.2, 18.4.4). Maximum likelihood (ML) – also gives a goodness-of-fit test and fit indices, but requires multivariate normality, and is more prone to improper solutions; PAF is "free of distributional assumptions". Therefore Brown recommends PAF when the distribution is far from normal or when ML fails, and ML when the assumptions hold (2015, pp. 19-20). Principal components – the eigenvalues and eigenvectors of the correlation matrix itself.
How many factors?
"The most important decision" in exploratory factor analysis (Brown, 2015, p. 20). The eigenvalue of a factor is how much of the variance it explains; the sum of the eigenvalues is the number of items (ibid., pp. 22-23).
- Kaiser – eigenvalue above 1. The SPSS default, and the worst of them all: it "overestimates" the number of factors (Field, 2024, Section 18.4.5), and the cutoff is arbitrary – because of sampling error, an eigenvalue of .99 or 1.01 (Brown, 2015, p. 23).
- The scree plot (scree; Cattell, 1966, as cited in Field, 2024, Section 18.4.5) – retain the factors before "the elbow", the last sharp drop. Subjective (Brown, 2015, p. 24), and reliable "when there are more than 200 participants" (Stevens, 2002, as cited in Field).
- Parallel analysis (Horn, 1965, as cited in Field & Pallant) – compare each eigenvalue with the eigenvalue in the same position in random datasets of the same size, with no structure at all, and retain a factor as long as the real value is larger than the random one. This is the recommended default: Field – "it's not a bad idea to choose parallel analysis as the default" (2024, section 18.4.5); Pallant – the most accurate of the three (2020, chapter 15). On this page – 100 datasets by default, as in Pallant, with a seed, so that the downloaded script reproduces them exactly. The default is seed 2026; "New seed" gives a different seed, and the "random" column changes by a few thousandths – when a real eigenvalue is very close to the criterion, it is worth checking several seeds or increasing the number of datasets.
Mean or 95th percentile? Both: Horn, Pallant and Brown compare with the mean of the random values (Pallant, 2020, Chapter 15; Brown, 2015, pp. 24-25); Glorfeld (1995, as cited in Brown, 2015, p. 33, Note 7) recommends the 95th percentile, to correct a slight tendency to extract too many, and Field uses it in his example (2024, section 18.8). The default on this page – the mean. And two more tools: the communalities after extraction – low communalities suggest that too few factors were extracted (Field, 2024, Section 18.4.5); and the residuals – the difference between the correlations and what the factors reproduce: if more than 50% of them are larger than 0.05, "there are grounds for concern" (section 18.7.2). ML also has a χ² test, but you do not choose by it alone (Brown, 2015, p. 26).
Rotation
With more than one factor there are infinitely many solutions that fit the data equally well, and rotation chooses the simplest of them to interpret – "simple structure": for each item one high loading, and for each factor a few items with high loadings (Thurstone, 1947, as cited in Brown, 2015, p. 27). Rotation does not change the fit (ibid.). Orthogonal (varimax) – the factors remain uncorrelated. Oblique (direct oblimin, promax) – they are allowed to be correlated.
All three sources recommend oblique: "in most cases oblique rotation is preferred because it provides a more realistic representation" of the relationships between the factors, and if the factors really are uncorrelated, it will give almost the same solution (Brown, 2015, p. 28); Pallant "always" starts with oblique, and if the correlations between the factors are above .3 – reports it (2020, chapter 15); Field: there are "good reasons" to think that orthogonal rotations do not suit data about people, and among the oblique ones – direct oblimin with δ = 0 is "sensible for most analyses" (2024, section 18.4.6). The default on this page – direct oblimin with Kaiser normalization, as in SPSS.
In an oblique rotation there are two matrices: the pattern matrix – the unique relationship of the item with each factor, like a partial regression coefficient; and the structure matrix – the correlations between the item and the factor, equal to the pattern multiplied by the matrix of correlations between the factors. "Most researchers interpret the pattern matrix" (Field, 2024, Section 18.7.4; Brown, 2015, pp. 28-29), and the structure is worth checking and reporting (Field; Pallant). A correlation above .80-.85 between two factors suggests that they are not really separate (Brown, 2015, p. 28).
Interpreting the loadings
A loading is, approximately, the correlation between the item and the factor (Field, 2024, Section 18.3.1). Stevens recommends interpreting loadings above .4, "and some choose .3; there is nothing magic about these numbers" (as cited in Field, 2024, section 18.4.7; also Brown, 2015, p. 27). In the output, hide loadings below .3 and sort by size (Field, 2024, Section 18.6.4; Pallant, 2020, Chapter 15). An item that loads on two factors is assigned to the factor with the higher loading; if the loadings are similar – perhaps the item is "not good at discriminating" between the two concepts (Field, 2024, Section 18.7.3). A reverse-worded item loads negatively (section 18.9.4). The factor is named according to what the items that load on it have in common – and the software does not do this for you (Pallant, 2020, Chapter 15).
Reliability and factor scores
After the analysis, compute Cronbach's alpha for each factor separately, after reversing the reverse-worded items (Field, 2024, Sections 18.9.3-18.9.4) – the page does this automatically, according to the factor on which each item loads most strongly and according to the sign of the loading. A value of .7-.8 is "widely accepted", but general thresholds are "not sensible", and alpha is not a measure of the scale being unidimensional (ibid.). For a full computation, with "alpha if item deleted" – the page "Cronbach's alpha and scale score".
Factor scores are computed by the regression method (Thurstone; Field, 2024, Section 18.3.3; Brown, 2015, p. 32), and can be downloaded as new columns in the file. But "usually the factor scores themselves are not used", but rather the sum or mean of the items that load on the factor (Field, 2024, Section 18.7.5). Factor scores also have "indeterminacy": infinitely many sets of scores fit the same loadings; the page reports the determinacy coefficient – the correlation between the score and the factor – and Gorsuch requires at least .80 (as cited in Brown, 2015, p. 32).
How to read the output?
Table 1 – data suitability; Table 2 (collapsed) – KMO for each item; Table 3 and Figure 1 – the eigenvalues, the parallel analysis and the scree plot; Table 4 – the loadings (in an oblique rotation – the pattern matrix) with the communalities, followed by the structure matrix (collapsed) and the correlations between the factors; the last table – alpha for each factor.
In the example (306 students with complete data, 12 items): KMO = .78 – "middling", and all items above .5; χ²(66) = 824.33, p < .001; the determinant .064. Three eigenvalues – 3.27, 1.76, 1.69 – are higher than the random mean (1.34, 1.25, 1.18), and the fourth, 0.80, is lower than 1.12: parallel analysis and Kaiser agree on three factors. After PAF and oblimin: workload, engagement and support, each with four items, and the reversed item in each loads negatively; "I study with classmates" loads both on engagement (.35) and on support (.41) – a cross-loading. The correlations between the factors are .24-.30 in absolute value, and alpha is .69, .73 and .74.
Assumptions and warnings
Level of measurement. The correlations on this page are Pearson correlations; factor analysis of Likert items assumes they are close enough to an interval scale (site convention – the page "Variables and levels of measurement"). For dichotomous items Field suggests tetrachoric correlations (2024, section 18.5.5) – not on this page. Distribution. Normality matters only for tests and generalization (ibid.); ML requires it (Brown, 2015, p. 19). Missing values. The page omits participants with a missing value in any of the items; Field warns against "pairwise" exclusion, in which "the estimates can go haywire" (2024, section 18.6.4).
Heywood cases. A communality of 1 or more – usually when too many factors were extracted or when the data are problematic (Brown, 2015, p. 19; Chapter 5, Note 7, p. 185); the page warns about it. Wording effects. Reverse-worded items can create a "factor" that is not a concept but a method – a unidimensional scale with mixed wordings "tends" to come out as two factors (Brown, 2015, pp. 3, 202). "Researcher degrees of freedom". An exploratory analysis is full of decisions – the number of factors, extraction, rotation, which items to remove – and so it should "only guide future hypotheses" (Field, 2024, Section 18.7.6).
What this page does not compute. Polychoric and tetrachoric correlations, the MAP test, quartimax, equamax and geomin rotations, Bartlett and Anderson-Rubin scores, analysis of a covariance matrix, and ESEM.
And how do you do it in SPSS?
Analyze › Dimension Reduction › Factor: enter the items; in Descriptives – KMO and Bartlett's test, Determinant, Anti-image and Reproduced; in Extraction – the method and the number of factors; in Rotation – the rotation; in Options – Sorted by size and Suppress small coefficients with .3 (Field, 2024, Section 18.6; Pallant, 2020, Chapter 15). Parallel analysis is not in the menu; Field runs it through R inside SPSS (SPSS Tip 18.1), and Pallant – in separate software (2020, chapter 15). SPSS stops the extraction after 25 iterations by default (Field, 2024, Section 18.6.2); the page's syntax asks for 1,000 and tight convergence, as on the page. The syntax also includes RELIABILITY for each factor. In PSPP, the free software, we ran PAF and PCA with varimax and promax; it has no ML or oblimin. The menu paths are general information about the software.
And how do you do it in R?
The psych package (Revelle): KMO, cortest.bartlett, fa (PAF, ML) and principal (PCA), and alpha; the rotation – from GPArotation. Note: fa with rotate = "oblimin" rotates without Kaiser normalization, and so gives slightly different loadings from SPSS; to get SPSS and the page – GPArotation::oblimin(L, normalize = TRUE), as in the script below. The parallel analysis in the script builds the random datasets with rnorm, with the same seed and the same generator as the page. The script below was run verbatim on the English sample file (R 4.3.3, psych 2.4.1), and the values in the comments are identical to the page. The site rule for comments in R: a UTF-8 file, every comment line starts with an English word, and English variable names.
# Exploratory factor analysis – Professor Stat. This file is saved in UTF-8; every comment line starts with an English word
suppressMessages({ library(readxl); library(psych); library(GPArotation) }) # install.packages(c("readxl", "psych", "GPArotation"))
# Loading: the "Data" sheet in the English sample file; the 12 items, listwise deletion
d <- as.data.frame(read_excel("C:/Rdata/DATA_efa_example_eng.xlsx", sheet = "Data"))
x <- na.omit(d[, 3:14]); R <- cor(x); n <- nrow(x); n
# Result: 306
# Data suitability
KMO(R)$MSA; cortest.bartlett(R, n = n)$chisq; det(R)
# Result: KMO = .780, χ²(66) = 824.33, determinant .064
# Parallel analysis: 100 random datasets of the same size; seed 2026 – as on the page
ev <- eigen(R)$values
set.seed(2026); rnd <- t(sapply(1:100, function(r) eigen(cor(matrix(rnorm(n * 12), n, 12)), only.values = TRUE)$values))
round(rbind(data = ev, random = colMeans(rnd))[, 1:5], 3)
# Result: 3.269, 1.759, 1.688 above 1.337, 1.250, 1.177; the fourth, 0.801, below 1.116 – three factors
# PAF with three factors, then direct oblimin with Kaiser normalization (as in SPSS)
L <- unclass(fa(R, nfactors = 3, fm = "pa", rotate = "none", n.obs = n, max.iter = 1000, min.err = 1e-9)$loadings)
r <- GPArotation::oblimin(L, normalize = TRUE)
print(round(unclass(r$loadings), 2)); round(r$Phi, 2)
# Result: workload – .53 to .67 (load4 −.59), engagement – .46 to .84, support – .41 to .79; correlations between the factors .24 to .30 in absolute value
# The order and sign of the factors may differ from the page – the page sorts by the sum of squared loadings and flips the sign so that the column sum is positive
# Alpha for each factor – the fourth item in each set is reversed (in support – the third)
psych::alpha(x[, 1:4], keys = c(1, 1, 1, -1))$total$raw_alpha
psych::alpha(x[, 5:8], keys = c(1, 1, 1, -1))$total$raw_alpha
psych::alpha(x[, 9:12], keys = c(1, 1, -1, 1))$total$raw_alpha
# Result: .69, .73, .74
Reporting the results
What to report: the extraction method, how the number of factors was determined ("including parallel analysis"), the rotation, the explained variance and the eigenvalues, and a table with all the loadings, not only the high ones (Pallant, 2020, Chapter 15); the data suitability (KMO); and a table of loadings in which loadings above .40 are in bold, with the eigenvalues, percentage of variance and alpha in the last rows (Field, 2024, Section 18.8, Table 18.1). Field also recommends sharing the correlation matrix, so that others can reproduce the analysis (ibid.). Formatting rules (APA, 2020, Section 6.36): loadings, correlations and KMO – without a zero before the decimal point; χ² – with. The results paragraph in the output is built this way, in English.
Common mistakes
Choosing the number of factors by Kaiser. It "overestimates", especially with many items (Field, 2024, Section 18.4.5).
Orthogonal rotation "because it is the default". In data about people the factors are almost always correlated (Field, 2024, Section 18.4.6; Brown, 2015, p. 28).
Interpreting the structure matrix instead of the pattern matrix, or reporting only one of them without saying which (Field, 2024, Section 18.7.4; Pallant, 2020, Chapter 15).
Computing alpha on all the items together, or without reversing reversed items – alpha comes out low, and even negative (Field, 2024, Section 18.9.4).
Calling PCA "factor analysis" without saying so. Field himself admits that he treats them as if they were one (2024, section 18.2, note 2) – but in the report, write what was run.
Confirming a structure on the same sample in which it was discovered. Exploratory and confirmatory – in separate samples (Brown, 2015, p. 12).
References
American Psychological Association. (2020). Publication manual of the American Psychological Association (7th ed.). https://doi.org/10.1037/0000165-000
Brown, T. A. (2015). Confirmatory factor analysis for applied research (2nd ed.). Guilford Press.
Field, A. (2024). Discovering statistics using IBM SPSS statistics (6th ed.). Sage.
Pallant, J. (2020). SPSS survival manual: A step by step guide to data analysis using IBM SPSS (7th ed.). Routledge.
Cattell (1966), Comrey and Lee (1992), Guadagnoli and Velicer (1988), Kaiser and Rice (1974), MacCallum et al. (1999) and Stevens (2002) – as cited in Field (2024); Horn (1965) – in Pallant (2020) and Field; Tabachnick and Fidell (2013) – in Pallant; Glorfeld (1995), Gorsuch (1983), Hu and Bentler (1999) and Thurstone (1947) – in Brown (2015). According to the site rule, the reference list includes only sources that were read in the original. Field and Pallant are cited by section and chapter (the e-books do not preserve the printed page numbers), Brown – by the printed page. Chapter 18 of Field, chapter 15 of Pallant, and chapter 2 and pages from chapters 1, 3 and 5 of Brown were read. The computation on this page is verified against R 4.3.3 (psych, GPArotation, factanal, varimax, promax – including the parallel analysis, sample by sample), against PSPP, and against Table 2.2 of Brown (2015) – the eigenvalues, the initial communalities, the ML loadings and χ².
Errors we found in the sources. Pallant (2020, chapter 15): the communalities printed for the two-component solution are taken from the four-component solution (with two components they are impossible – for example .714 for an item whose maximum is about .27; in the text itself .258); and in Table 15.2 "898" instead of .898. Field (2024, section 18.8): "more than 40% of the variance" is taken from the initial eigenvalues, when the solution itself explains 36.28%; and the mean communality in section 18.7.2 is computed from the initial column. Brown (2015): on p. 15, O1 is called "tearfulness" (in the table – hopelessness); on p. 27, correlations between factors "between zero and one" – they can be negative.