Structural equation modeling is the most miscited technique in psychology. It gets used as a synonym for "complicated analysis with arrows", when what it actually does is very specific: it estimates at the same time how each construct is measured and how the constructs relate to each other, correcting for the measurement error in your scales.
That correction is the entire reason to use SEM. Everything else — the fit indices, the diagrams, the jargon — follows from it. This guide covers when it is worth it, how many participants you need, how to estimate it, and what you have to write so the manuscript does not come back.
The two halves of a SEM
Every structural equation model has two parts, and keeping them apart in your head solves half the problems:
- The measurement model. It says which items measure which latent factor. It is, literally, a confirmatory factor analysis. This is where measurement error is separated from true variance.
- The structural model. It says which latent factors predict which. This is the part that answers your hypothesis; it is the equivalent of a path analysis, but between variables already cleaned of error.
When SEM is worth it
It is worth it when three things hold at once: your constructs are genuinely latent (anxiety, social support, quality of life — things you cannot measure with one question), you have at least three indicators per factor, and you have the sample.
If one of those is missing, there are honest, smaller alternatives:
| Your situation | What fits |
|---|---|
| Latent constructs, N ≥ 300, multi-item scales | Full SEM |
| Reliable observed variables, N ~150-300, causal chain | Path analysis |
| A simple mediation, small sample | PROCESS with bootstrap |
| Many factors, few cases per parameter | SAM (structural after measurement) |
| Nested data (students in classrooms, patients in centers) | Multilevel or multilevel SEM |
How many participants do you need?
The rule everyone repeats — "ten cases per parameter" — is a heuristic from the 1980s and it depends on nothing about your model. What actually determines the required sample are the factor loadings, the number of indicators per factor and the amount of missing data.
As rough orientation, and without replacing a power analysis: with high loadings (> .70) and three or four indicators per factor, a modest SEM estimates stably from about N = 200; with medium loadings (~.50) or factors with exactly three items you need considerably more, and below N = 150 fit indices and standard errors stop being trustworthy.
The right way to do it is a Monte Carlo power simulation (in Mplus, or the simsem package in R), stating in the manuscript the smallest effect you were powered to detect. If you are designing the study now, the sample size calculator gives you a starting point for the standard tests.
Order matters. Never interpret the structural model before the measurement model fits. If your CFA does not hold, the βs between latents are coefficients between things you cannot name. CFA first, arrows after.
Estimating it: lavaan and Mplus
In lavaan, =~ defines a latent factor ("is measured by") and ~ a regression ("is regressed on"). The whole model fits in a few lines:
model <- '
# --- measurement model ---
anxiety =~ x1 + x2 + x3
performance =~ y1 + y2 + y3
# --- structural model ---
performance ~ anxiety
'
# MLR: robust to non-normality. With ordinal items of 5 or fewer
# categories, use ordered = TRUE and the estimator becomes WLSMV.
fit <- sem(model, data = d,
estimator = "MLR", missing = "fiml")
summary(fit, standardized = TRUE, fit.measures = TRUE, rsquare = TRUE)
fitMeasures(fit, c("chisq", "df", "pvalue", "cfi", "tli",
"rmsea", "rmsea.ci.lower", "rmsea.ci.upper", "srmr"))
The estimator is not a detail. ML assumes multivariate normality, which Likert scales almost never satisfy. MLR corrects standard errors and the χ² for non-normality and is the sensible default with continuous indicators. With ordinal items of few categories, treat them as ordinal (WLSMV in lavaan and Mplus, with polychoric correlations): treating five categories as continuous biases loadings downwards.
Mplus remains the reference for the hard cases: multilevel SEM, mixture models, Monte Carlo power. jamovi and JASP run lavaan behind a graphical interface and are perfectly adequate for standard models. AMOS is drag-and-draw and comfortable to start with, but it is thin on robust estimators and missing data. Base SPSS has no SEM at all.
What to report, and in what order
A complete report has seven blocks. Skip one and you will be asked for it:
- Software, version and estimator.
- How missing data were handled (FIML, multiple imputation, listwise) and how much was missing.
- Fit of the measurement model, before anything else.
- Global fit indices: χ²(df), p; CFI; TLI; RMSEA with 90% CI; SRMR.
- Standardized factor loadings for every indicator.
- Standardized structural coefficients with CIs and p values.
- R² for each endogenous variable, plus bootstrapped indirect effects where relevant.
If your SEM compares groups — men and women, two countries, pre and post — you must establish measurement invariance before comparing latent means. Without it, the comparison does not mean what you think it means.
Six mistakes that get manuscripts returned
- Interpreting the structural model when the measurement model does not fit. The most serious and the most common.
- Treating 5-point Likert items as continuous without saying so. If you do it, justify it; otherwise use WLSMV.
- Reporting only CFI and RMSEA. χ² with its df and SRMR — the most stable of the lot — are missing.
- Respecifying with modification indices until fit passes, and presenting it as confirmatory. Every correlated residual you add needs a substantive reason in writing, not a number.
- Causal language with cross-sectional data. SEM does not turn a correlation into a cause; it only estimates it better.
- Not providing the correlation matrix and descriptives. Without them nobody can reanalyze your model, and more journals require them every year.
Before you submit
A correct SEM gets rejected because of the manuscript, not the model: an estimator that is never named, a sample size with no justification, a discussion that promises more than the design supports. If the article is already written, put it through a critical read before the editor does, while everything is still fixable.
If your model comes from health data, with clinical outcomes and small or uneven samples, that is the kind of project my biostatistics consulting for clinical studies covers.