Stats for

Structural Equation Modeling

Path Analysis

Path analysis tests a diagram of how measured variables affect each other.

Path analysis takes several measured variables and a diagram of which affect which, estimates every arrow at once, and tests whether the arrows left out are needed.

Example

Does perfectionism go with more depressive symptoms through self-criticism and procrastination, with no direct link of its own? Three hundred students completed one online survey measuring perfectionistic concerns, self-criticism, procrastination and depressive symptoms (PHQ-9).

One Sample + 3+ Continuous Variables + Arrows Named in Advance → Path Analysis
Tests
The paths of a pre-specified model, and how well it reproduces the variables' covariances
Observations
Independent
Parametric
Yes
Headline Statistic
a_1 b_1
Fit Index
CFI
Groups
1

The Basics

When to Use It

Use it when you have several continuous variables measured on the same people and a diagram, drawn from theory before you look at the data, of which variables affect which: some exogenous variables that start the chains, and endogenous variables that the arrows point to, often with mediators in between. Path analysis fits that diagram as a structural model among measured scores: it estimates every arrow at once, splits the links into direct effects and indirect effects, and, when the diagram leaves some arrows out, tests whether it can still reproduce how the variables go together. For example:

  • Does perfectionism go with more depressive symptoms through self-criticism and procrastination, with no direct link of its own?
  • Does parental warmth predict adolescents' GPA through both academic self-efficacy and hours of homework?
  • Does sleep duration predict next-day mood through daytime sleepiness scores, which in turn predict reaction time on a vigilance task?

Vocabulary You Need

Definition Exogenous Variable

A variable whose causes lie outside the model: no arrow points into it, so the model explains none of its variance. Its variance, and its covariances with any other exogenous variables, are simply estimated from the data (many programs fix them at the sample values). Calling a variable exogenous is a modeling choice, not a finding. The data can't show that nothing in the model affects it. Glossary →

Definition Endogenous Variable

A variable with at least one arrow pointing into it, so the model predicts it from other variables. Each endogenous variable gets a residual (or disturbance): the part of it the arrows don't explain, with its own variance and an R². An endogenous variable can also send arrows onward, which is what a mediator does: it's an outcome in one equation and a predictor in the next. Glossary →

Definition Path Coefficient (b)

The estimate attached to one arrow in a path model. Unstandardized, it's a regression slope: how much higher the variable the arrow points to is predicted to be, per unit higher on the variable it comes from, holding constant every other variable with an arrow into the same one, in the units of the variable the arrow points to. Standardized (β), it's in standard deviations per standard deviation, so arrows between variables on different scales can be compared. Multiplying the coefficients along a route of arrows gives that route's indirect effect. A path coefficient describes the model's proposed direction; the data can't confirm that the arrow points the right way. Glossary →

Definition Equivalent Model

A model with different paths, often with some arrows reversed or a path swapped for a residual correlation, that predicts exactly the same covariance matrix as the model being tested. It has the same χ², degrees of freedom and fit indexes, for any data, so fit can never choose between the two. Most path models have several. Only design (what was manipulated, what was measured first) and theory can favor one over its equivalents. Glossary →

Assumptions

1. Correct Causal Order Each variable comes before the variables its arrows point to, in the order you propose.
What It Means
A path model is a claim about causal order: each arrow says which variable comes first. The analysis takes those directions as given; it can't tell your model apart from other orders that fit the same correlations, such as self-criticism feeding perfectionism.
Applies To
Relationship
How to Check
By design and theory, not by a test. Was each variable manipulated, or measured before the variables its arrows point to? With everything measured at once, the order rests on argument alone.
How Much It Matters
Everything that makes the paths mean something. Every arrow is a direction the analysis takes as given. In the perfectionism study all four measures came from one survey, and the model with self-criticism feeding perfectionism fits exactly as well as ours (Table 3), so the data can't settle the order.

If It's Violated

  • Design Change Measure perfectionism, then the two mediators, then symptoms at later waves, ideally with earlier levels of each so change can be modeled.
  • Proceed with Caveat Report which equivalent models fit identically, and why theory or design favors yours.
2. No Hidden Common Causes Nothing you left out drives any two of the variables in the chain.
What It Means
Reading the paths as effects needs no unmeasured variable that drives the predictor and the mediator, the predictor and the outcome, or the mediator and the outcome, and no common cause of the mediator and the outcome that the predictor itself changes. If one exists, the paths it touches partly reflect it, and so does the indirect effect. Randomizing the predictor rules out common causes of the predictor and either of the others; it does nothing for the mediator and the outcome, because people aren't randomized to levels of the mediator. When the predictor is only measured, every pair is open.
Applies To
Relationship
How to Check
By reasoning about the design. For each pair of variables in the chain, list plausible common causes, measure the important ones and include them as covariates, and say which ones you couldn't rule out.
How Much It Matters
A lot. A left-out common cause, such as neuroticism raising both self-criticism and depressive symptoms, gets absorbed into the paths and inflates the indirect effects. It can also show up as misfit, but a well-fitting model is no protection: many confounders leave fit untouched.

If It's Violated

  • Correction Measure likely common causes and add them to the model as exogenous variables with paths into what they affect.
  • Proceed with Caveat Report how strongly a hidden confounder would have to link a mediator and the outcome to erase that route, for example with medsens() in R's mediation package (Imai et al., 2010), one mediator at a time.
3. Correctly Specified Model Your model includes the paths and correlations that really matter.
What It Means
The model's pattern is right in the ways that count: every path, loading or covariance that matters is included, and every one the model fixes at zero really is near zero. In a factor model, the items load on the factors you assigned them to and any residuals that share something (similar wording, a shared method) are allowed to correlate; in a path model, the arrows left out of the diagram really are absent. Every estimate, and every fit index, is conditional on that pattern. An omitted path, cross-loading or residual correlation doesn't just cost fit; the model makes up for it by bending the parameters it does have.
Applies To
Covariance structure
How to Check
Specify the model from theory (and, for a factor model, item content) before seeing the data. Then look beyond the overall fit: the residual correlations for pairs the model misses, the modification indices for where it misses most, and paths, loadings or factor correlations that look implausible. Compare the model with plausible alternatives specified in advance. Fit statistics can show a model is wrong; they can't show it's right.
How Much It Matters
A lot. An arrow left out that matters, like the direct path here, shows up as misfit, and the model makes up for it by stretching the arrows it has: the indirect paths through self-criticism and procrastination get a little bigger than they should be. With only 2 degrees of freedom, the overall χ² can miss an omission a one-path test would catch.

If It's Violated

  • Design Change Specify competing models before seeing the data, such as with and without the direct path, and compare them with a χ² difference test.
  • Proceed with Caveat If you add a path the modification indices suggested, report both models and treat the new path as a hypothesis for the next sample.
4. Reliable Measures Each score measures its variable with little error.
What It Means
Regression and path models on observed scores treat each score as measured without error. Error in a predictor usually shrinks its own slope toward zero and can bias the other slopes either way, because holding a noisy score constant only partly holds the trait constant. Error in the outcome leaves raw slopes right on average but widens their intervals and shrinks standardized results such as β and r. In a path model, an unreliable mediator leaves part of the link it should carry to a direct path or to other routes.
Applies To
Relationship
How to Check
Report each scale's reliability (alpha or omega) in your own sample. With several items per variable, fit a latent-variable SEM, which separates the error out.
How Much It Matters
Some to a lot. All four scores here are 9-item scale totals; unreliable mediators shrink b₁ and b₂ and the indirect effects, and can leave a spurious direct path, which may be part of the small direct link here.

If It's Violated

5. Multivariate Normality The variables are roughly bell-shaped together (within each group, when there are groups), or the sample is big enough that it matters less.
What It Means
The variables jointly follow a multivariate normal distribution: each is roughly normal, and every weighted combination of them is too, so the scatterplot of any two is an oval cloud. When the design has groups, as in MANOVA, it applies within each group; in a multivariate regression, to the outcomes' residuals; in factor analysis and SEM, it applies to the observed variables that maximum likelihood is fitted to (for outcomes, after allowing for any predictors the model takes as given). P-values and standard errors rely on it; estimates are usually less affected, and robust standard errors or a scaled test statistic can take its place.
Applies To
Joint distribution
How to Check
Look at a histogram of each variable (or each outcome's residuals, in a model with predictors) and a scatterplot of each pair, within each group if there are groups, for strong skew, curves or stray points. Multivariate outliers show up as large squared Mahalanobis distances from the means (each group's own, if there are groups). Don't rely on a normality test as a gatekeeper: with small samples it misses real problems, and with large ones it flags trivial ones.
How Much It Matters
Some. The ML path estimates stay about right, but skewed or heavy-tailed variables, such as symptom scores piled up near zero, make χ² too large and the standard errors too small. The bootstrap intervals for the indirect effects don't rely on it. Here the four scores are close to symmetric (skew between −0.2 and 0.2).

If It's Violated

  • Robust Estimation Use robust ML (MLR in lavaan and Mplus), which rescales χ² and the fit indexes and corrects the standard errors.
  • Robust Estimation Bootstrap the paths and the χ² test (the Bollen–Stine bootstrap; Bollen & Stine, 1992) as well as the indirect effects.
6. Linear Relationship The relationship between your variables follows a straight line, not a curve.
What It Means
As one variable goes up, the other tends to change by about the same amount across its whole range. A curved relationship, one that levels off or a U shape, breaks this.
Applies To
Relationship
How to Check
Look at a scatterplot of each pair of variables the analysis relates: a roughly oval cloud tilted one way is fine; a clear bend, a ceiling or a U is not. In a regression with several predictors, plot the residuals against the predicted values instead: a flat, even band is fine; a curve means the model is missing a bend. A component-plus-residual plot for each predictor (R: car::crPlots) shows whether one of them bends once the others are held constant.
How Much It Matters
A lot, for what the paths mean. Each arrow is a straight-line slope; if self-criticism's link with symptoms levels off at the top of the scale, the path averages over that, and so does every indirect effect built from it.

If It's Violated

  • Transformation Transform a variable whose relationships bend, and interpret the paths on that scale.
  • Proceed with Caveat Plot each endogenous variable against its predictors before fitting, and say how you handled any curve.
7. Independent Observations The people (or other units) in your study don't influence each other.
What It Means
Each person's data comes from a separate, unconnected source, so knowing one person's scores tells you nothing about anyone else's. In designs that measure people more than once, their own scores are meant to be related; it's different people who must be independent. Methods built for clustered data, such as multilevel models and GEE, also allow members of the same group to be related, as long as the analysis names the grouping; then it's the groups that must be independent.
Applies To
Observations
How to Check
By design, not by a test. Did each person contribute their own data, with no clusters such as roommates, couples, therapy groups or classrooms whose members influence each other? If there are clusters, does the analysis model every one of them?
How Much It Matters
A lot. Students from the same classes or dorms share experiences, so the standard errors come out too small, χ² too large, and the paths blend within-class and between-class relationships.

If It's Violated

  • Alternative Test Multilevel SEM. Fit the paths separately within and between clusters.
  • Correction Keep the single-level model but correct the standard errors and χ² for clustering.

Limitations

This Is Not Your Test If…

What It Doesn't Tell You

  • Which way the arrows run. The model with self-criticism feeding perfectionism, which then feeds procrastination, fits these data exactly as well as ours (Table 3), and so would others. Fit can't choose between equivalent models; only design and theory can (MacCallum et al., 1993).
  • Whether these are the real routes. A hidden common cause, such as neuroticism, could raise self-criticism, procrastination and symptoms together and create indirect effects on its own. A route the model leaves out, say through rumination, would show up as a direct link, and may be what the small direct path is.
  • That the arrows left out are zero. A non-significant χ² with 2 degrees of freedom says the test couldn't find the misfit, not that there's none. The planned test of the direct path did find a small direct link, so full mediation isn't supported, though a residual link between a mediator and symptoms would fit as well.
  • How well each scale measures. Path analysis treats every score as measured without error. Unreliable mediators shrink the b paths and the indirect effects and can leave a spurious direct path behind, which may be part of the small direct link here. Report each scale's reliability; with several items per variable, a full SEM with each trait as a factor (as in a CFA) separates the error out.
  • Whether it matters. A route of 0.160 PHQ-9 points per point of perfectionism is about 1 point on the 0–27 PHQ-9 for a student one standard deviation higher. Significance doesn't make that clinically meaningful.
  • Who else. The results describe students like these 300, one survey each, and only as well as self-reports capture perfectionism, self-criticism, procrastination and mood.

Common Mistakes

  • Don'tRead well-fitting paths as proof of the causal order.

    InsteadSay the data are consistent with the model, and name the equivalent models that fit exactly as well.

  • Don'tAccept a model because its overall χ² isn't significant.

    InsteadAlso test the specific paths you left out. A small-df χ² can miss a real omission.

  • Don'tRely on RMSEA for a model with only one or two degrees of freedom.

    InsteadReport it with its interval, and lean on CFI, SRMR and tests of the omitted paths.

  • Don'tReport only the fit indexes.

    InsteadGive every path with its SE and β, each indirect effect with its bootstrap interval, and R² for each endogenous variable.

  • Don'tAdd the path with the largest modification index and report the new model as planned.

    InsteadReport the planned model, then the change as post hoc, and test it in a new sample.

  • Don'tReport RMSEA without its confidence interval.

    InsteadGive the 90% interval too. With a few hundred people it's often wide enough to span “close” and “mediocre”.

  • Don'tRead a bigger χ² as a stronger effect.

    InsteadReport an effect size suited to the design, such as Cramér's V, an odds ratio or a model's coefficients. χ² grows with sample size even when the effect doesn't.

  • Don'tRead a p-value as the chance that the null hypothesis is true.

    InsteadRead it as: if the null were true, how often data at least this extreme would turn up.

Result Decoder

Significance and Fit Index Guidelines

Benchmarks Significance (p Value)
  • p < .001

    Very strong evidence against the null hypothesis.

  • .001 ≤ p < .01

    Strong evidence against the null hypothesis.

  • .01 ≤ p < .05

    Statistically significant at α = .05. Moderate evidence against the null hypothesis.

  • .05 ≤ p < .10

    Not significant. Weak evidence; sometimes called a “trend.” Treat it as inconclusive.

  • p ≥ .10

    Not significant. Little evidence against the null, which is not the same as evidence of no effect.

These evidence labels are one common convention for describing p in graded language rather than as significant or not; the boundaries are rough guides, not rules, and other authors draw them differently. Muff et al. (2022) argue for this kind of language of evidence over a single cutoff. α is chosen before the analysis, and p never says how big or important an effect is.

More about statistical significance ↓

Benchmarks Fit Index (CFI)
  • CFI < .90 Poor

    Below even the older, looser convention. The model misses much of what the baseline model misses.

  • .90 ≤ CFI < .95 Acceptable by Older Conventions

    Adequate by the older .90 convention but short of Hu and Bentler's (1999) .95. Look at the residuals for where it misfits.

  • CFI ≥ .95 Good

    Close to or above Hu and Bentler's (1999) cutoff for relatively good fit, when SRMR is also low.

CFI measures fit, so bigger is better. Hu and Bentler's (1999) .95 and the older .90 are rules of thumb from simulations of other models, not tests (Marsh et al., 2004). With only 2 degrees of freedom, read CFI with SRMR and with the test of each omitted path; RMSEA is unstable in models this small (Kenny et al., 2015).

More about effect size ↓

How It's Reported

Equation Form

Example

a1b1 = 0.160, 95% bootstrap CI [0.117, 0.208]; a2b2 = 0.073, 95% bootstrap CI [0.042, 0.112]; CFI = .988, RMSEA = .071, 90% CI [.000, .152], SRMR = .029; χ²(2) = 5.05, p = .080

Table 1. Paths in the Tested Model

Example
bSEzp\beta
a₁: Perfectionism → Self-criticism 0.4730.0519.30< .001.47
a₂: Perfectionism → Procrastination 0.2840.0476.09< .001.33
b₁: Self-criticism → PHQ-9 0.3380.03310.24< .001.48
b₂: Procrastination → PHQ-9 0.2550.0396.62< .001.31

Note. N = 300. Maximum likelihood estimates. b = unstandardized path, in the outcome's scale points per point of the predictor; β = standardized path (model-implied standard deviations). The b column is the unstandardized estimate for every arrow; the row labels a₁, a₂, b₁, b₂ name the arrow, following the mediation convention (a into a mediator, b out of it). R² = .22 for self-criticism, .11 for procrastination and .37 for depressive symptoms. The direct path from perfectionism to symptoms is fixed at zero.

Table 2. Indirect and Total Effects of Perfectionism on Depressive Symptoms, as the Model Defines Them

Example
EstimateSE95% CI\beta
Through self-criticism (a₁b₁) 0.1600.023[0.117, 0.208].23
Through procrastination (a₂b₂) 0.0730.018[0.042, 0.112].10
Total (a₁b₁ + a₂b₂) 0.2330.028[0.181, 0.291].33

Note. PHQ-9 points per point of perfectionism. An effect here is a product or sum of paths in the model; with one survey, it describes how students who differ in perfectionism differ in symptoms, not what changing perfectionism would do. SE is the bootstrap standard error and the interval a 95% percentile bootstrap interval, both from 5,000 resamples of the 300 students. Another random-number generator or seed, such as R's in the software section, moves the limits by up to about 0.003. β is the completely standardized effect. With no direct path, the total effect is the total indirect effect. The difference between the two routes, a₁b₁ − a₂b₂ = 0.088, has a 95% bootstrap interval of [0.027, 0.149].

Table 3. Fit of the Tested, an Equivalent and a Post Hoc Model

Example
\chi^2dfpCFIRMSEARMSEA 90% CISRMR
Tested: two routes, no direct path 5.052.080.988.071[.000, .152].029
Equivalent: self-criticism → perfectionism → procrastination 5.052.080.988.071[.000, .152].029
Tested plus the direct path (planned alternative) 0.581.4461.000.000[.000, .139].013

Note. N = 300. Maximum likelihood. The equivalent model reverses one arrow (self-criticism → perfectionism → procrastination) and fits identically, as it must for any data. The last row adds the direct path, the planned test of the research question's claim of no direct link (one of three equivalent changes that share the largest modification index); compared with the tested model, Δχ²(1) = 4.47, p = .034.

Full Text (APA Style)

Example

We tested a path model, specified before data collection, in which perfectionistic concerns predicted self-criticism and procrastination, and both predicted depressive symptoms, with no direct path from perfectionism to symptoms (maximum likelihood, lavaan). All four paths were positive (Table 1): perfectionism with self-criticism, β = .47, and procrastination, β = .33; self-criticism with symptoms, β = .48, and procrastination with symptoms, β = .31; together the two mediators predicted 37% of the variance in PHQ-9 scores. Each point of perfectionism went with 0.160 more PHQ-9 points on the route via self-criticism, 95% percentile bootstrap CI [0.117, 0.208], and 0.073 more on the route via procrastination, 95% CI [0.042, 0.112] (5,000 resamples; Table 2); the route via self-criticism was the larger, difference = 0.088, 95% CI [0.027, 0.149]. The model fit well by conventional standards, CFI = .988, SRMR = .029, and the test of exact fit was not significant, χ²(2) = 5.05, p = .080; RMSEA = .071, 90% CI [.000, .152], was too imprecise to be informative with 2 degrees of freedom. But the planned test of no direct link, comparing the model with and without the direct path, rejected it, Δχ²(1) = 4.47, p = .034 (Table 3): a small direct association remained, β = .11, so the data don't support full mediation. Freeing either mediator's residual covariance with symptoms instead would fit equally well (all three share the largest modification index, 4.49). Because all measures came from one survey, and equivalent models with other causal orders fit identically, these results are consistent with the proposed routes but cannot establish them.

  • Show the model as a diagram, with every path you estimated and every path you left out, and say it was specified in advance.
  • Give each path (b, SE, β), R² for each endogenous variable, and each indirect effect with its bootstrap interval, the number of resamples and the seed.
  • Report χ² with df and p, CFI, SRMR, and RMSEA with its 90% interval, and say how you read RMSEA when df is small.
  • Name at least one equivalent model and any path added after seeing the data.
  • Give each scale's reliability (α or ω) in your sample: path analysis treats every score as measured without error.
  • Say how missing data were handled, name the software and its version, and give the correlation matrix with means and SDs so readers can refit the model.

Reading Each Piece

The equation form above, piece by piece, in this order: how big, how certain, then how surprising.

b1 = 0.338 Comparing students with the same procrastination score, each extra point of self-criticism went with about a third of a PHQ-9 point more. Every arrow is positive and between 0.25 and 0.47 points per point (Table 1).
a1b1 = 0.160 Each point of perfectionism went with 0.160 more PHQ-9 points by way of self-criticism: about 1.1 points for a student 7 points (one SD) higher. It's the bigger route: its difference from the route via procrastination, 0.088, has a 95% bootstrap interval of [0.027, 0.149]. Comparing the two raw routes makes sense because both run from perfectionism to PHQ-9.
95% bootstrap CI [0.117, 0.208] The route through self-criticism is plausibly anywhere from 0.117 to 0.208 PHQ-9 points per point of perfectionism. The whole interval is above zero, so it's statistically significant.
a2b2 = 0.073, 95% bootstrap CI [0.042, 0.112] By way of procrastination, each point of perfectionism went with 0.073 more PHQ-9 points, less than half the route via self-criticism, and plausibly anywhere from 0.042 to 0.112. Its interval is narrower than self-criticism's but wide for its size, and still clear of zero.
Total = 0.233, 95% bootstrap CI [0.181, 0.291] Both routes together: 0.233 PHQ-9 points per point of perfectionism, about 1.6 points for a student one standard deviation (7 points) higher. Because the model has no direct arrow, this is all the link it allows. The slope from regressing PHQ-9 on perfectionism alone is 0.291; the shortfall is the part of the link the missing arrow can't carry.
β = .48 A student one standard deviation higher in self-criticism is predicted to be about half a standard deviation higher in symptoms, with procrastination held constant. Procrastination's arrow into symptoms is smaller, β = .31.
CFI = .988 The model removes about 99% of the misfit of a model in which the four measures are unrelated, well past Hu and Bentler's .95. Benchmarks ↑
SRMR = .029 The predicted correlations are typically off by about .03, well within the .08 convention. The one clear miss is perfectionism with symptoms, off by .08.
RMSEA = .071 Some misfit per degree of freedom, in the “reasonable” band. With only 2 degrees of freedom, though, RMSEA says little on its own; see its interval.
90% CI [.000, .152] The population RMSEA could be anything from perfect fit to poor. A model with 2 degrees of freedom can't pin it down with 300 students, which is why Kenny and colleagues advise testing the omitted paths instead.
χ²(2) = 5.05 If the model were exactly right, χ² would average about its 2 degrees of freedom. At 5.05 it's higher, mostly because perfectionism and symptoms go together a little more (.41) than the two routes reproduce (.33).
Δχ²(1) = 4.47, p = .034 The overall test didn't reject the model, but the planned one-arrow test rejects the claim of no direct link: a small direct association remains (β = .11), so the data don't support full mediation. A residual correlation between a mediator and PHQ-9 would fit just as well, so the data can't say whether the leftover link is a direct path or something both share.
MI = 4.49 The index predicted the drop well. The same 4.49 appears for two residual correlations with PHQ-9, which would reproduce the data just as well, so the index can't say which change is right.
p = .080 If the model were exactly right, a χ² at least this big would turn up about 8% of the time. That's above .05, so the test can't reject the model, but a 2-df test has little power, and it doesn't show the zeros are true. Benchmarks ↑

Calculations

The Running Example

Example

The perfectionism study: 300 students, four measures from one survey, and a model drawn in advance: perfectionism → self-criticism → symptoms and perfectionism → procrastination → symptoms, with no direct arrow from perfectionism to symptoms.

Null HypothesisAlternative
Model fit\Sigma = \Sigma(\theta)\Sigma \neq \Sigma(\theta)
Through self-criticisma_1 b_1 = 0a_1 b_1 \neq 0
Through procrastinationa_2 b_2 = 0a_2 b_2 \neq 0
No direct linkc' = 0c' \neq 0

\Sigma is the four variables' covariance matrix among all students like these, and \Sigma(\theta) the matrix the path model predicts from its 8 parameters \theta. The fit null says the model, including its two zeros (no direct path, no link between self-criticism and procrastination beyond perfectionism), is exactly right. a_1 b_1 and a_2 b_2 are the population indirect effects through each mediator; each is tested by whether its 95% bootstrap interval excludes 0. c' is the direct path from perfectionism to symptoms, which the research question says is zero; the planned test of it compares the model with and without that arrow (step 9).

What Your Data Should Look Like

One row per person and one numeric column per variable in the diagram, all measured on the same people, ideally in the order the arrows run. The model itself, which arrows are drawn and which are left out, lives in the analysis syntax, not the data file. Aim for a few hundred people: the fit statistics and the bootstrap need them.

Example
studentperfectionismself_criticismprocrastinationphq9
1293378
2261282
336202515
43117282
52773613
62173612
… 294 more rows
MSD123
1. PHQ-99.005.00
2. Perfectionism27.007.00.41
3. Self-Criticism14.007.00.53.47
4. Procrastination27.006.00.40.33.19

N = 300.

Correlations are Pearson r.

Simulated data.

Download all 300 rows (data.csv)

Napkin Math

The whole test, one idea at a time. Under each heading, a line says why the step matters, and the green note reads the equation in plain English with the perfectionism study's numbers. Collapse all to read just the headings: they tell the whole story on their own.

  1. 1. Count What the Model Has to Explain

    A path model is judged on how well it reproduces the variables' variances and covariances. Count those, then count what the model spends: one number per arrow, plus a variance for each variable. Whatever is left is the number of claims the model makes that the data could contradict. If nothing is left (df = 0), the model is saturated: it reproduces the data exactly, so there's no fit to test, only paths. If the count is negative, the model can't be estimated. This counting works for recursive models like this one, whose arrows all run one way with no loops; two-way arrows or feedback loops need extra conditions before they can be estimated.

    df = \dfrac{p(p + 1)}{2} - q =\dfrac{4 \times 5}{2} - 8 = 10 - 8

    = 2

    p(p + 1)/2 = 10

    q = 8

    p is our 4 variables, with 4 variances and 6 covariances, 10 in all. q is the model's 8 parameters: 4 arrows, perfectionism's variance and 3 residual variances. 10 − 8 = 2: the missing direct arrow and the missing link between self-criticism and procrastination. That second zero claims the two mediators are related only through perfectionism. Most parallel-mediator models let their residuals correlate (Preacher & Hayes, 2008), and yours should unless theory says otherwise; we fix it here to show a test with two zeros. Freeing it would change no path: it carries 0.58 of the χ² of 5.05 in step 6, and the missing direct arrow the other 4.47.

  2. 2. Estimate How Much Each Arrow Carries

    Maximum likelihood estimates every arrow at once: it picks the values that bring the model's predicted variances and covariances as close as possible to the observed ones. In a model like this one, where every arrow points forward and no residuals are linked, each arrow comes out as the slope from an ordinary regression of the variable it points to on everything pointing into it.

    \begin{aligned} M_1 &= a_1 X + e_1 \\ M_2 &= a_2 X + e_2 \\ Y &= b_1 M_1 + b_2 M_2 + e_3 \end{aligned} =\hat{Y} = 0.338\,M_1 + 0.255\,M_2

    = 0.338 PHQ-9 points per self-criticism point

    a_1 = 0.473

    a_2 = 0.284

    b_2 = 0.255

    R^2_{\text{PHQ-9}} = .37

    b_1, the slope on self-criticism M_1, is 0.338: among students equally prone to procrastinate, each extra self-criticism point goes with 0.338 more PHQ-9 points. The other arrows are a_1 = 0.473, a_2 = 0.284 and b_2 = 0.255; together the two mediators predict 37% of the variance in symptoms (R^2 = .37).

  3. 3. Multiply along Each Route, Then Add the Routes

    In the model, a link that runs along a chain of arrows is the product of the arrows on it. Perfectionism's link with symptoms by way of self-criticism is a₁ self-criticism points per perfectionism point times b₁ PHQ-9 points per self-criticism point: a₁ × b₁. Each route is an indirect effect, and adding every route gives the total.

    ab = a \times b =0.473 \times 0.338

    = 0.160 PHQ-9 points per perfectionism point

    a_2 b_2 = 0.073

    a_1 b_1 + a_2 b_2 = 0.233

    a_1 is 0.473 self-criticism points per perfectionism point and b_1 is 0.338 PHQ-9 points per self-criticism point: 0.473 × 0.338 = 0.160. Through procrastination, 0.284 × 0.255 = 0.073. With no direct arrow, the total is 0.160 + 0.073 = 0.233 PHQ-9 points per point of perfectionism.

  4. 4. Resample the Students to See How Much Each Route Could Vary

    A product of two estimates has a lopsided sampling distribution, so a symmetric ± interval fits it poorly. Instead, draw thousands of new samples of 300 from our own students, with replacement, refit the paths in each, and keep the middle 95% of each route's indirect effect.

    \left[\, ab^{*}_{(2.5\%)},\; ab^{*}_{(97.5\%)} \,\right] =\text{middle 95\% of 5{,}000 resampled } a_1^{*} b_1^{*}

    = [0.117, 0.208] PHQ-9 points per perfectionism point

    95\%\ \text{CI}_{a_2 b_2} = [0.042, 0.112]

    95\%\ \text{CI}_{\text{total}} = [0.181, 0.291]

    Each a_1^{*} b_1^{*} is the route through self-criticism in one resample of our 300 students. Cutting 2.5% from each end of the 5,000 leaves 0.117 to 0.208; for procrastination, 0.042 to 0.112. Other seeds move the limits by up to about 0.003.

  5. 5. Put the Arrows on a Common Scale

    The four scales run over different ranges, so their slopes aren't directly comparable. Standardizing each arrow says how many standard deviations apart two students are on the target, per standard deviation apart on the source. Standardized routes multiply and add just like the raw ones.

    \beta = b \times \dfrac{\hat{\sigma}_{\text{from}}}{\hat{\sigma}_{\text{to}}} =0.338 \times \dfrac{6.99}{4.97}

    = .48

    \hat{\sigma}_{\text{PHQ-9}} = 4.97

    \beta_{b_2} = .31

    \text{total}_{\beta} = .33

    b is our 0.338, \hat{\sigma}_{\text{from}} is self-criticism's standard deviation computed with N, 6.99 (7.00 with N − 1 in the data box), and \hat{\sigma}_{\text{to}} is the 4.97 the model implies for PHQ-9 (the sample's is 4.99, also computed with N). 0.338 × 6.99 ÷ 4.97 = .48. Multiplied and added along both routes, the standardized total is .47 × .48 + .33 × .31 = .33.

  6. 6. Measure How Far the Model's Predictions Miss

    Multiplying along the routes also tells the model what the correlations should be. The two zeros it claims mean it can't reproduce every correlation exactly. The maximum likelihood discrepancy measures the overall gap, and times the sample size it becomes a χ² statistic.

    \chi^2 = N \times F_{\text{ML}} =300 \times 0.01685

    = 5.05

    F_{\text{ML}} = 0.01685

    \hat{r}_{XY} = .33

    r_{XY} = .41

    r_{XY} - \hat{r}_{XY} = .08

    F_{\text{ML}} is the leftover gap between the observed and predicted covariances, 0.01685, and N is our 300 students: 300 × 0.01685 = 5.05. (lavaan's fmin prints half of this, because it defines χ² as 2N × fmin.) Most of it is one pair: the model predicts perfectionism and PHQ-9 correlate .33 (both routes' standardized products added up), and they actually correlate .41.

  7. 7. Ask How Surprising That Gap Would Be If the Model Were Exactly Right

    The χ² test asks whether the model's two zeros could both be exactly true in the population. It's a test of perfect fit: a small p counts against the model.

    p = P(\chi^2_{df} \ge \chi^2) =P(\chi^2_{2} \ge 5.05)

    = .080

    P(\chi^2_{2} \ge 5.05) is the chance that a χ² with 2 df lands at 5.05 or higher: .080, about 1 in 13.

  8. 8. Describe How Big the Misfit Is

    χ² grows with sample size, so fit indexes describe the size of the misfit instead. CFI compares it with a model in which nothing is related; RMSEA spreads it over the degrees of freedom and the sample; SRMR gives the typical leftover correlation.

    \text{CFI} = 1 - \dfrac{\max(\chi^2 - df,\, 0)}{\max(\chi^2_{b} - df_{b},\, \chi^2 - df,\, 0)} =1 - \dfrac{5.05 - 2}{256.58 - 6}

    = .988

    \chi^2_b = 256.58

    df_b = 6

    \text{SRMR} = .029

    \text{RMSEA} = .071

    90\%\ \text{CI}_{\text{RMSEA}} = [.000, .152]

    \chi^2 - df is our misfit beyond chance, 5.05 − 2 = 3.05. A model with no relationships at all has \chi^2_b - df_b = 256.58 − 6 = 250.58. 3.05 ÷ 250.58 = .012, and 1 − .012 = .988. RMSEA is √(3.05 ÷ (2 × 300)) = .071, and SRMR is .029.

  9. 9. Test the Arrow the Model Left Out

    Overall fit says how much the model misses, not where. The research question says there's no direct link, so the planned test frees that one arrow, refits, and asks how far χ² drops: a χ² difference test on 1 df. A modification index estimates the same kind of drop for any fixed-at-zero path without refitting.

    \Delta\chi^2 = \chi^2_{\text{tested}} - \chi^2_{\text{with direct}} =5.05 - 0.58

    = 4.47

    \chi^2_{\text{with direct}} = 0.58

    p_{\Delta\chi^2} = .034

    \text{MI} = 4.49

    The largest \text{MI} is 4.49, shared by a direct arrow from perfectionism to PHQ-9 and by each mediator's residual correlation with PHQ-9. Freeing the direct arrow drops \chi^2 from 5.05 to 0.58: 5.05 − 0.58 = 4.47 on 1 df (the index predicted 4.49), p = .034. The direct path would be 0.081 PHQ-9 points per point, β = .11.

Run It in Software

The code below reads the running example's data from data.csv; save it in the same folder you run the code from.

SPSS Amos (version 30, as documented by IBM)

SPSS Statistics itself has no path analysis. IBM's add-on, SPSS Amos, fits it by drawing the model:

  1. Open the data file in Amos (File → Data Files).
  2. Draw a rectangle for each of the four variables and name each after its column.
  3. Draw single-headed arrows for the four paths: perfectionism → self_criticism, perfectionism → procrastination, self_criticism → phq9 and procrastination → phq9. Leave out perfectionism → phq9.
  4. Add an error term (Plugins → Name Unobserved Variables names them) to each variable an arrow points to. Most parallel-mediator models connect the two mediators' error terms with a two-headed arrow; this example leaves them unconnected, which claims the mediators are related only through perfectionism (see Napkin Math step 1).
  5. In Analysis Properties → Output, tick Standardized estimates, Squared multiple correlations, Indirect, direct & total effects and Modification indices; under Bootstrap, ask for 5,000 samples with percentile intervals. Then Calculate Estimates.

Many SPSS users run the model in R (below) or in JASP or jamovi, whose SEM modules run lavaan and give the same numbers.

Reading the Output

Read the standardized paths and the squared multiple correlations first, then the indirect effects with their bootstrap intervals, then CFI, RMSEA with its interval and χ² with its df and p. The estimates should match the R output below. Amos reports one total indirect effect per pair of variables rather than one per route, so for the two routes separately, use user-defined estimands or the R code. Fit statistics can differ in the third decimal between programs that multiply F_ML by N (as lavaan does) and those that use N − 1.

Output laid out from this page's computed results, not captured from a live run; labels and layout may differ slightly in your version.

R
library(lavaan)
perf <- read.csv("data.csv")

model <- '
  self_criticism  ~ a1 * perfectionism
  procrastination ~ a2 * perfectionism
  phq9            ~ b1 * self_criticism + b2 * procrastination

  via_self_criticism  := a1 * b1
  via_procrastination := a2 * b2
  total_indirect      := a1 * b1 + a2 * b2
  difference          := a1 * b1 - a2 * b2
'
# The mediators' residuals are left unlinked, as in the example; most models
# would add  self_criticism ~~ procrastination
fit <- sem(model, data = perf)
summary(fit, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
modindices(fit, sort. = TRUE, maximum.number = 4)

# Percentile bootstrap intervals for the indirect effects
set.seed(20260929)
fit_boot <- sem(model, data = perf, se = "bootstrap", bootstrap = 5000)
est <- parameterEstimates(fit_boot, boot.ci.type = "perc")
est[est$op == ":=", c("label", "est", "se", "ci.lower", "ci.upper")]
lavaan 0.7-2 ended normally after 1 iteration

  Estimator                                         ML
  Number of model parameters                         7
  Number of observations                           300

Model Test User Model:
  Test statistic                                 5.055
  Degrees of freedom                                 2
  P-value (Chi-square)                           0.080

Model Test Baseline Model:
  Test statistic                               256.584
  Degrees of freedom                                 6

User Model versus Baseline Model:
  Comparative Fit Index (CFI)                    0.988
  Tucker-Lewis Index (TLI)                       0.963

Root Mean Square Error of Approximation:
  RMSEA                                          0.071
  90 Percent confidence interval - lower         0.000
  90 Percent confidence interval - upper         0.152
  P-value H_0: RMSEA <= 0.050                    0.240
  P-value H_0: RMSEA >= 0.080                    0.516

Standardized Root Mean Square Residual:
  SRMR                                           0.029

Regressions:
                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  self_criticism ~
    perfctnsm (a1)     0.473    0.051    9.303    0.000    0.473    0.473
  procrastination ~
    perfctnsm (a2)     0.284    0.047    6.089    0.000    0.284    0.332
  phq9 ~
    slf_crtcs (b1)     0.338    0.033   10.238    0.000    0.338    0.476
    prcrstntn (b2)     0.255    0.039    6.618    0.000    0.255    0.308

R-Square:
                   Estimate
    self_criticism    0.224
    procrastinatin    0.110
    phq9              0.367

Defined Parameters:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    via_slf_crtcsm    0.160    0.023    6.885    0.000    0.160    0.225
    via_procrstntn    0.073    0.016    4.481    0.000    0.073    0.102
    total_indirect    0.233    0.027    8.501    0.000    0.233    0.327
    difference        0.088    0.029    2.992    0.003    0.088    0.123

               lhs op           rhs    mi    epc sepc.lv sepc.all sepc.nox
15 procrastination ~~          phq9 4.490 -9.231  -9.231   -0.414   -0.414
20            phq9  ~ perfectionism 4.490  0.082   0.082    0.116    0.017
14  self_criticism ~~          phq9 4.490 -6.583  -6.583   -0.271   -0.271
23   perfectionism  ~          phq9 4.342  0.249   0.249    0.177    1.234

                 label   est    se ci.lower ci.upper
9   via_self_criticism 0.160 0.023    0.116    0.209
10 via_procrastination 0.073 0.018    0.039    0.111
11      total_indirect 0.233 0.029    0.178    0.291
12          difference 0.088 0.030    0.027    0.148

Output trimmed: the information criteria, the GFI, the variances and a lavaan note are left out. Std.all is the standardized path β (Table 1). lavaan says 7 parameters because it takes perfectionism's variance as given (fixed.x = TRUE) and leaves it out of the count of variances and covariances too, 9 − 7 = 2: the same df as counting it in both, 10 − 8. The Defined Parameters use normal-theory (delta method) standard errors; the last table's bootstrap intervals are the ones to report. They come from R's own random numbers, so they differ from this page's (0.117 to 0.208 and 0.042 to 0.112) in the third decimal. difference is the route via self-criticism minus the route via procrastination; its bootstrap interval, 0.027 to 0.148 (0.149 on this page), excludes zero, so the first route is the larger. In the modification indices, freeing the direct path (phq9 ~ perfectionism) and freeing either mediator's residual correlation with PHQ-9 give the same 4.49: those changes are equivalent, and the data can't choose among them.

Output from a real run: R 4.6.1 (lavaan 0.7-2), run 2026-10-10 on data.csv; output trimmed.

Python
import pandas as pd
import semopy

perf = pd.read_csv("data.csv")

desc = """
self_criticism  ~ perfectionism
procrastination ~ perfectionism
phq9            ~ self_criticism + procrastination
"""
model = semopy.Model(desc)
model.fit(perf.drop(columns="student"))

semopy.calc_stats(model).T.loc[["DoF", "chi2", "chi2 p-value", "CFI", "RMSEA"]]
model.inspect(std_est=True)   # paths, SEs, z, p and standardized paths

from scipy.stats import chi2
chi2.sf(5.055047, 2)          # p for semopy's chi2 with the right df, 2
                 Value
DoF           3.000000
chi2          5.055047
chi2 p-value  0.167810
CFI           0.991769
RMSEA         0.047865

              lval  op             rval   Estimate  Est. Std  Std. Err    z-value       p-value
0   self_criticism   ~    perfectionism   0.473368  0.473053  0.050900   9.299884  0.000000e+00
1  procrastination   ~    perfectionism   0.284278  0.331619  0.046692   6.088333  1.140925e-09
2             phq9   ~   self_criticism   0.338400  0.476133  0.033047  10.239875  0.000000e+00
3             phq9   ~  procrastination   0.255278  0.307698  0.038576   6.617467  3.654055e-11

0.07985654032787798

semopy 2.3.11's paths and χ² match lavaan's to three or four decimals. Its degrees of freedom don't: it estimates the same 7 parameters as lavaan (perfectionism's variance taken as given) but counts all 10 variances and covariances, so it reports 3 df, and its p (.168), CFI (.992) and RMSEA (.048) are computed from that. Use df = 2: p = .080 (the last line), CFI = .988, RMSEA = .071. It has no built-in indirect effects or modification indices; multiply the paths yourself and bootstrap by refitting on resampled rows.

Output from a real run: Python 3.9.6 (semopy 2.3.11, scipy 1.13.1, pandas 2.3.3), run 2026-10-03 on data.csv; residual-variance rows trimmed.

Impact

Effect Size

A path model has two kinds of size: how strong its arrows and routes are, and how much it misfits. The arrows are regression slopes, so standardized paths (β) put them on a common scale, and the indirect effects are products of paths. The misfit is described by fit indexes that, unlike χ², don't grow with sample size.

\text{CFI} = 1 - \dfrac{\chi^2 - df}{\chi^2_b - df_b} = 1 - \dfrac{5.05 - 2}{256.58 - 6} = .988

The model removes about 99% of the misfit of a model in which the four measures are unrelated, and its predicted correlations are typically off by .03 (SRMR). RMSEA is .071, but its 90% interval runs from .000 to .152: with 2 degrees of freedom and 300 students, it can't tell close fit from poor.

The arrows carry the substance. Perfectionism's standardized links with self-criticism (.47) and procrastination (.33), and those two's links with symptoms (.48 and .31), multiply into a standardized total of .33: students one standard deviation higher in perfectionism score about a third of a standard deviation higher in symptoms, about two thirds of it on the route via self-criticism, in this model. There are no agreed benchmarks for standardized indirect effects; compare them with other studies of the same routes.

Fit benchmarks are conventions from simulations of particular models (Hu & Bentler, 1999), and they travel poorly to models of other sizes (Marsh et al., 2004). RMSEA in particular misleads when df is small; Kenny et al. (2015) advise testing the parameters left out instead, which is what the last Napkin Math step does. In practical terms, a student 7 points higher in perfectionism is predicted to score about 1.6 points higher on the PHQ-9, a modest difference on the 0–27 PHQ-9.

Benchmarks CFI at a Glance
Poor
CFI < .90
Acceptable by Older Conventions
.90 ≤ CFI < .95
Good
CFI ≥ .95

Full benchmarks and caveats ↑

Statistical Significance

Path analysis answers three kinds of significance question. Each path has a z test: if that arrow were zero in the population, how often would an estimate at least this far from zero, in either direction, turn up? Each indirect effect is tested by its bootstrap interval: if the 95% interval excludes zero, that route is significant at α = .05. And the model as a whole has a χ² test whose null hypothesis is the model itself, so a significant result counts against the model.

All four paths are far from zero (z from 6.09 to 10.24, every p < .001), and both routes' intervals exclude zero. The model's χ²(2) = 5.05 gives p = .080, so the test can't reject it. But the planned test of the omitted direct path, on its own, gives Δχ²(1) = 4.47, p = .034: spread over 2 degrees of freedom, the same misfit wasn't enough to be significant.

The χ² test is sensitive to sample size: the same misfit per person would give p = .43 with 100 students and p = .006 with 600. With few degrees of freedom it's also blunt, averaging a real omission together with claims that hold. Test the specific arrows you left out, planned in advance where you can, rather than relying on the overall test.

p is not the probability that the model is right, and a non-significant χ² doesn't show the omitted arrows are zero, or that the arrows point the right way.

Benchmarks p at a Glance
Very Strong
p < .001
Strong
.001 ≤ p < .01
Significant
.01 ≤ p < .05
Weak
.05 ≤ p < .10
Little
p ≥ .10

Strength of evidence against the null hypothesis.

Full benchmarks and caveats ↑

Power and Sample Size

Power is the chance that a study detects an effect that's really there. A path model has several things to detect: each path, each indirect effect, and each arrow the model leaves out. The smaller the effect and the fewer the degrees of freedom involved, the more people it takes, and the test of overall fit is often the weakest link.

Suppose the small direct path we found (β = .11) were real. Treating our misfit as the population's, a planned one-arrow test of it would have about 56% power with 300 students; about 530 would give 80% (Satorra & Saris, 1985). That treats our estimate as the true effect, and it's imprecise, so for planning, pick the smallest direct path that would matter in theory instead. The test of close fit is far weaker at 2 degrees of freedom: telling RMSEA = .05 from .08 with 80% power would take about 3,500 students (MacCallum et al., 1996).

Plan for the smallest effect that matters, whether that's a path, a route or an omitted arrow, and test omitted arrows directly rather than counting on overall fit. Small models with few degrees of freedom need far more people to test fit than to estimate their paths. There's no calculator for path models on this page; semTools' findRMSEAsamplesize() in R does the fit calculation, and Monte Carlo simulation (for example with lavaan's simulateData()) handles paths and indirect effects.

Other Info

Follow-Up and Post Hoc Tests

Planned Contrasts

  • Planned Contrasts: Use for comparisons named in advance. Test an arrow the model leaves out by fitting the model with and without it and comparing χ²: here the direct path gives Δχ²(1) = 4.47, p = .034. Compare two routes by bootstrapping their difference: a₁b₁ − a₂b₂ = 0.088, 95% CI [0.027, 0.149], so the route via self-criticism is the larger. Raw routes compare fairly only when they share a start and an end, as these do.

References

  • Wright, S. (1934). The method of path coefficients. The Annals of Mathematical Statistics, 5(3), 161–215. https://doi.org/10.1214/aoms/1177732676
    “as a flexible means of relating the correlation coefficients between variables in a multiple system to the functional relations among them” (Abstract)
  • MacCallum, R. C., Wegener, D. T., Uchino, B. N., & Fabrigar, L. R. (1993). The problem of equivalent models in applications of covariance structure analysis. Psychological Bulletin, 114(1), 185–199. https://doi.org/10.1037/0033-2909.114.1.185
    “The existence of such equivalent models is almost universally ignored in empirical studies.” (Abstract)
    “For any given covariance structure model, there will often be alternative models that are indistinguishable from the original model in terms of goodness of fit to data.” (Abstract)
  • Lee, S., & Hershberger, S. (1990). A simple rule for generating equivalent models in covariance structure modeling. Multivariate Behavioral Research, 25(3), 313–334. https://doi.org/10.1207/s15327906mbr2503_4
    “generates equivalent models through the replacement of direct paths with residual correlations, through the replacement of residual correlations with direct paths, or through the inversion of path directions” (Abstract)
  • Kenny, D. A., Kaniskan, B., & McCoach, D. B. (2015). The performance of RMSEA in models with small degrees of freedom. Sociological Methods & Research, 44(3), 486–507. https://doi.org/10.1177/0049124114543236
    “We recommend not computing the RMSEA for small df models, especially those with small sample sizes, but rather estimating parameters that were not originally specified in the model.” (Abstract)
    “when the cutoff values are used to assess the fit of the properly specified models with small df and small sample size, the RMSEA too often falsely indicates a poor fitting model” (Abstract)
  • Preacher, K. J., & Hayes, A. F. (2008). Asymptotic and resampling strategies for assessing and comparing indirect effects in multiple mediator models. Behavior Research Methods, 40(3), 879–891. https://doi.org/10.3758/BRM.40.3.879
    “The total effect of X on Y can be expressed as the sum of the direct and indirect effects” (p. 880)
    “percentile bootstrap CIs can be asymmetrical because they are based on an empirical estimation of the sampling distribution of the indirect effect, rather than on an assumption that the sampling distribution is normal” (p. 883)
    “We recommend at least 5,000 resamples for final reporting, although 1,000 is probably sufficient for preliminary analyses.” (p. 889, note 5)
  • Bollen, K. A., & Stine, R. A. (1992). Bootstrapping goodness-of-fit measures in structural equation models. Sociological Methods & Research, 21(2), 205–229. https://doi.org/10.1177/0049124192021002004
  • Imai, K., Keele, L., & Yamamoto, T. (2010). Identification, inference and sensitivity analysis for causal mediation effects. Statistical Science, 25(1), 51–71. https://doi.org/10.1214/10-STS321
  • Satorra, A., & Saris, W. E. (1985). Power of the likelihood ratio test in covariance structure analysis. Psychometrika, 50(1), 83–90. https://doi.org/10.1007/BF02294150
    “Using the noncentral Chi-square distribution, the power of the test is approximated by the asymptotic one for a sequence of local alternatives.” (Abstract)
  • Rosseel, Y. (2012). lavaan: An R package for structural equation modeling. Journal of Statistical Software, 48(2), 1–36. https://doi.org/10.18637/jss.v048.i02
  • Bentler, P. M. (1990). Comparative fit indexes in structural models. Psychological Bulletin, 107(2), 238–246. https://doi.org/10.1037/0033-2909.107.2.238
    “A new coefficient is proposed to summarize the relative reduction in the noncentrality parameters of two nested models.” (Abstract)
  • Hu, L., & Bentler, P. M. (1999). Cutoff criteria for fit indexes in covariance structure analysis: Conventional criteria versus new alternatives. Structural Equation Modeling, 6(1), 1–55. https://doi.org/10.1080/10705519909540118
    “a cutoff value close to .95 for TLI, BL89, CFI, RNI, and Gamma Hat” (Abstract)
  • Browne, M. W., & Cudeck, R. (1992). Alternative ways of assessing model fit. Sociological Methods & Research, 21(2), 230–258. https://doi.org/10.1177/0049124192021002005
    “Practical difficulties associated with the usual tests of exact fit or [sic] a model are discussed and a test of “close fit” of a model is suggested.” (Abstract)
  • MacCallum, R. C., Browne, M. W., & Sugawara, H. M. (1996). Power analysis and determination of sample size for covariance structure modeling. Psychological Methods, 1(2), 130–149. https://doi.org/10.1037/1082-989X.1.2.130
    “We emphasize the value of confidence intervals for fit indices, and we stress the relationship of confidence intervals to a framework for hypothesis testing.” (Abstract)
  • Efron, B. (1979). Bootstrap methods: Another look at the jackknife. The Annals of Statistics, 7(1), 1–26. https://doi.org/10.1214/aos/1176344552
  • Muff, S., Nilsen, E. B., O'Hara, R. B., & Nater, C. R. (2022). Rewriting results sections in the language of evidence. Trends in Ecology & Evolution, 37(3), 203–210. https://doi.org/10.1016/j.tree.2021.10.009
    “we suggest language of evidence that allows for a more nuanced approach to communicate scientific findings as a simple and intuitive alternative to statistical significance testing” (Abstract)
  • Maxwell, S. E., & Cole, D. A. (2007). Bias in cross-sectional analyses of longitudinal mediation. Psychological Methods, 12(1), 23–44. https://doi.org/10.1037/1082-989X.12.1.23
    “Most empirical tests of mediation utilize cross-sectional data despite the fact that mediation consists of causal processes that unfold over time.” (Abstract)
  • MacCallum, R. C., Roznowski, M., & Necowitz, L. B. (1992). Model modifications in covariance structure analysis: The problem of capitalization on chance. Psychological Bulletin, 111(3), 490–504. https://doi.org/10.1037/0033-2909.111.3.490
    “The use of alternative a priori models is recommended as a preferred strategy.” (Abstract)

Spot an error? Something still confusing? Tell us at support@statsforpsychology.com.