Exploratory Factor Analysis — EFA / PAF

📋 Example — Cognitive Test with 8 Subtests
300 people complete a cognitive test with 8 subtests: V1–V4 assess verbal ability, S1–S4 spatial reasoning. It's unclear in advance how many latent factors underlie this and which items belong to which factor — that's exactly what exploratory factor analysis (EFA) is meant to uncover. The sliders on the left set the true measurement model (unknown in practice): loading λ, cross-loading λx, factor correlation φ — so you can directly observe how changing the model affects the scree plot, loadings, and the reliability of the total score.
← CTT Foundations: a single test score What measurement model underlies the loadings? → Structure already known from theory? → Confirmatory Factor Analysis Measure the same structure in two groups? → Measurement Invariance
Approach — From Items to Factors
Items & measurement model. 8 items (V1–V4, S1–S4), N = 300. What is set here via sliders would, in practice, have to be estimated from real item responses.
Correlation matrix R. From the item responses (or here: from the measurement model) follows how strongly each pair of items is related. → view reduced matrix Rr
Factor extraction — eigenvalues & scree plot. How many factors explain the shared variance? The Kaiser criterion (eigenvalue > 1) is common but rather permissive — parallel analysis (comparison with eigenvalues of random, uncorrelated data of the same size) is more robust. → view scree plot
Rotation & loading matrix. The unrotated solution is rotated (varimax/oblique) to obtain an interpretable simple structure — which item loads on which factor? The table and biplot show the same information twice, once as numbers and once spatially. → loading table · → biplot
Final communality h² & reliability. The loading table already shows how much variance of each item is jointly explained by the factors. What follows from this for the reliability (α, ω) of the total score? → view reliability
Correlation Matrix — Reduced Rr (Final h² on the Diagonal)
Each cell is the (measurement-model-implied) correlation between two items — teal = positive, orange = negative. The gray-shaded diagonal is not a correlation value but h². In practice, h² is not known in advance: PAF starts with an initial estimate — usually the squared multiple correlation SMC, i.e. the R² from the joint regression of each item on all p−1 remaining items (not on a single other item) — and improves it iteratively until h² converges. This tool skips the estimation entirely: since the population model (Λ, Φ) is known via the sliders, the model-implied ("true") communality is placed directly on the diagonal.
Scree Plot — Eigenvalues (from R)
Kaiser criterion (dashed line at eigenvalue = 1): keep factors with eigenvalue > 1. Common, but notoriously too permissive — it barely depends on the number of items or sample size and often overestimates the number of factors. Parallel analysis (Horn, 1965) is more robust: many datasets of uncorrelated random variables of the same size (n people, p items) are simulated, and only factors whose eigenvalue exceeds the 95th percentile of the simulated eigenvalues are kept. This removes factors that, in a real scree plot, sit just above 1 and are actually sampling noise.
Factor Loading Table & Final Communalities (PAF)
Factor Loading Biplot (F1 vs. F2)
How to Read the Table & Biplot
Both show the same information twice — once as numbers, once spatially. The table lists, for each of the 8 items, the loadings on F1 and F2 as well as h² (proportion of variance jointly explained by both factors) and u² = 1−h² (remainder). SSL (sum of squared loadings) and % var. in the last row show how much total variance each factor explains across all 8 items.

In the biplot, every point is an item, and its coordinates are exactly the same loadings (F1 = x, F2 = y) — the same numbers as in the table, just shown as position instead of number. Near the F1 axis = loads almost purely on F1; near the F2 axis = almost purely on F2; near the origin = low loadings on both factors (poorly explained item, low communality). Distance from the origin grows with h². After varimax rotation, well-separated items cluster near the axes (simple structure); items between the axes have notable cross-loadings on both factors. Under oblique rotation, the factor axes sit at an angle of arccos(φ) to each other instead of at a right angle — the drawn axes themselves then show the factor correlation.

Only V1 and S1 are shown as representatives of their group — the remaining items sit (in this simplified model) at exactly the same positions.
Reliability of the Total Score  —  Derived from the EFA Structure
ωh
Omega hierarchical (McDonald)
Here, reliability is a byproduct of the factor structure (ωh grows with the factor correlation φ). The α-vs-ω question itself — when α underestimates or feigns unidimensionality — is explored in depth by its own tool: → Reliability: α vs. ω
Flashcards — Exploratory Factor Analysis
EFA vs. PCA
Exploratory factor analysis (EFA) only explains the shared variance of the items — it uses a reduced correlation matrix with communalities h² on the diagonal. Principal component analysis (PCA) explains all variance (including error) and uses ones on the diagonal. This is a conceptually important difference.
The communality h² is the proportion of an item's variance explained by the common factors. There are two time points: the initial communality (starting estimate before extraction, usually the squared multiple correlation SMC — the R² from the joint regression of the item on all other items, not a single one) and the final communality (after extraction: h² = sum of squared loadings across all retained factors — what the factor solution actually accounts for). The table in this tool always shows the final h². The uniqueness u² = 1 − h² contains measurement error and item-specific variance.
Eigenvalues & Scree Plot
A factor's eigenvalue shows how much variance (in units of standardized items) it explains. The scree plot shows the eigenvalues sorted by size. The Kaiser criterion (eigenvalue > 1) and the scree elbow are the most common criteria for determining the number of factors.
Rotation & Simple Structure
Varimax rotates the orthogonal axes so that each item loads as highly as possible on exactly one factor (Thurstone's simple structure). Oblique allows factor correlation (phi > 0) — more realistic, but harder to interpret. Communalities do not change under rotation.
Cronbach's Alpha
Cronbach's alpha estimates internal consistency as a function of the average inter-item correlation. A common misconception: alpha is not a measure of unidimensionality. A 2-factor structure can have identical alpha to a 1-factor structure — if the mean inter-item correlation stays the same.
Omega Total & Hierarchical
Omega total accounts for all factors and is a better lower bound on reliability than alpha. Omega hierarchical (Schmid-Leiman) measures only the share of a higher-order general factor — it rises with both phi and the cross-loading, and is 0 only when both are 0 (truly two separate factors with no shared variance at all).
❓ Help — Exploratory Factor Analysis (EFA)
Research example: a psychologist develops a cognitive test with 8 subtests. The EFA is meant to check whether 2 latent factors — verbal ability and spatial reasoning — underlie it, without specifying in advance which items belong to which factor.
Parameters
Extraction Method: PAF

This tool uses Principal Axis Factoring (PAF) — a genuine EFA method. PAF works with a reduced correlation matrix in which the diagonal is replaced by communalities h² — not by ones as in PCA. This models only the shared variance (factor variance), not the total variance.

In practice this runs iteratively: you start with an initial communality estimate (usually each item's squared multiple correlation SMC with all others), extract factors, compute new final communalities from them (h² = sum of squared loadings), and repeat until h² barely changes anymore. Since in this tool the population model (Λ, Φ) is given directly via the sliders, it skips this iteration and inserts the model-implied communality immediately — with real data, by contrast, h² is always only an estimate, not a known true value.

The scree plot shows the eigenvalues of the full R matrix (as is common in practice, since most software packages report it this way). The actual factor extraction is performed from the reduced matrix.

Reliability Indices (Add-On)

The reliability indices are computed analytically from the population structure:

r_within = lambda² + lambda_x² + 2·phi·lambda·lambda_x  (correlation within a group) r_between = 2·lambda·lambda_x + phi·(lambda²+lambda_x²)  (correlation between groups) sigma²_X = 8 + 24·r_within + 32·r_between  (variance of the total score) Alpha = (8/7)·(sigma²_X − 8) / sigma²_X Omega_total = 1 − 8·(1 − r_within) / sigma²_X Omega_hier = 64·r_between / sigma²_X  (Schmid-Leiman)

Omega hierarchical is based on the Schmid-Leiman orthogonalization: each item's loading on a higher-order general factor g equals sqrt(r_between) — because with orthogonal group factors, two items from different groups have Cov = g² exactly, regardless of whether the shared variance comes from phi (correlated factors), from cross-loadings, or from both. Omega hierarchical = 0 only when r_between = 0 (neither phi nor cross-loading creates shared variance).

Biplot & Correlation Matrix

The biplot shows each item as a point in the F1/F2 coordinate system. Items near (1,0) load highly on F1; near (0,1) highly on F2. After varimax rotation, items cluster near the axes (simple structure). Under oblique rotation, the factor axes are drawn at an angle of arccos(phi).

The correlation matrix shows the population matrix implied by the factor structure, R = Lambda·Phi·Lambda' + Psi. Teal = positive, orange = negative correlation.

References

Horn, J. L. (1965). A rationale and test for the number of factors in factor analysis. Psychometrika, 30(2), 179–185.
Mair, P. (2018). Modern Psychometrics with R. Springer.
Bühner, M. (2021). Einführung in die Test- und Fragebogenkonstruktion (4th ed.). Pearson Studium.