Written and maintained by CASRAI Editorial Board
Last updated
ANCOVA (analysis of covariance) extends ANOVA by statistically removing the effect of a continuous covariate before comparing group means on the outcome. In SPSS this runs through the same General Linear Model > Univariate procedure used for factorial ANOVA — there is no separate “ANCOVA” menu item — the only difference is that a continuous variable goes into the Covariate(s) box instead of Fixed Factor(s). This guide covers the dialog setup, the two assumptions ANCOVA adds on top of ANOVA’s usual set, and how to pull the covariate-adjusted group means (SPSS calls these estimated marginal means) out of the output with a proper multiple-comparisons correction.
Setting up ANCOVA in GLM Univariate
Go to Analyze > General Linear Model > Univariate. Move the continuous outcome into Dependent Variable, the categorical grouping variable into Fixed Factor(s), and the continuous variable you want to control for into Covariate(s). A covariate must be continuous (or treated as such) — a second categorical grouping variable belongs in Fixed Factor(s) instead, which turns the design into a factorial ANOVA, not an ANCOVA.
The Model tab matters more here than in a plain factorial ANOVA. The default Full Factorial model includes the factor’s main effect and the covariate’s main effect, but it does not include a factor×covariate interaction term — SPSS does not add that automatically just because a covariate is present. That default model is the correct one for the standard ANCOVA test itself, but you need a Custom model that explicitly adds the factor×covariate interaction term to test whether ANCOVA’s slopes assumption holds in the first place (see below) — run that check before trusting the default-model result.
The two assumptions ANCOVA adds beyond ANOVA
ANCOVA carries ANOVA’s usual assumptions (independence, normally distributed residuals, homogeneity of variance — check with Options > Homogeneity tests, which prints the same Levene’s test row SPSS uses for one-way and factorial ANOVA) plus two more, both about the covariate:
- Linearity between the covariate and the outcome, within each group. A scatterplot of the outcome against the covariate, split by group (Graphs > Legacy Dialogs > Scatter/Dot, Simple Scatter with the factor as the “Set Markers by” variable), should show a roughly straight-line relationship in each group — a covariate that only relates to the outcome in a curved or threshold pattern isn’t adjusted for correctly by a linear term.
- Homogeneity of regression slopes — the covariate-outcome slope has to be the same across groups, or the single adjustment ANCOVA applies isn’t a valid summary. Test this with the custom-model factor×covariate interaction term described above: a significant interaction means the slopes aren’t parallel. CASRAI’s dedicated guide to this assumption walks through a full worked example of the interaction test, the Johnson-Neyman fallback when it fails, and moderated regression as an alternative — this guide assumes you’ve cleared that check and focuses on running the ANCOVA itself and reading its output.
Reading the Tests of Between-Subjects Effects table
Once the model runs, SPSS prints a Tests of Between-Subjects Effects table with one row per model term (Corrected Model, Intercept, your covariate, your factor, Error, Total, Corrected Total), each with Type III Sum of Squares, df, Mean Square, F, Sig., and — if Options > Estimates of effect size is checked — partial eta-squared.
- The covariate’s row tests whether it’s significantly related to the outcome after accounting for the factor. A significant covariate justifies including it — it’s absorbing variance that would otherwise inflate the error term and weaken the group comparison’s power.
- The factor’s row is the actual ANCOVA test: whether the groups differ on the outcome after statistically removing the covariate’s effect. This is the row to report as your main result.
A significant factor effect here is not automatically the same conclusion a plain ANOVA on the same data would reach — ANCOVA can reveal a group difference a plain ANOVA missed (the covariate was absorbing noise) or make a difference disappear that a plain ANOVA found (the covariate explained what looked like a group effect). Both outcomes are the covariate doing its job, not a contradiction to explain away.
Getting covariate-adjusted means with EMMEANS
The group means SPSS shows under Analyze > Descriptive Statistics are raw, unadjusted means — they ignore the covariate entirely and are not the right numbers to report alongside an ANCOVA result. The adjusted means — each group’s mean outcome with the covariate held at its grand mean across the whole sample — come from a different place: move the factor into the Estimated Marginal Means > Display Means for box on the Options tab. SPSS’s own note under that box confirms the covariate is evaluated at its mean when computing these — that’s what makes them “adjusted.”
To also get pairwise comparisons between those adjusted means, check Compare main effects in the same section and choose a confidence-interval adjustment: LSD (none) applies no correction and inflates Type I error across multiple pairs, Bonferroni divides alpha by the number of comparisons (simple, conservative, the most commonly reported choice), and Sidak is a slightly less conservative version of the same correction. The Paste-generated syntax for this whole setup looks like:
UNIANOVA outcome BY factor WITH covariate
/EMMEANS=TABLES(factor) WITH(covariate=MEAN) COMPARE ADJ(BONFERRONI).
Running Paste first and adjusting the syntax directly is often faster than re-clicking through the dialog once you know the variable names, and it’s the only reliable way to confirm exactly which correction and covariate value SPSS actually used, since the dialog itself doesn’t echo that back to you afterward.
Reporting an ANCOVA result
A complete APA-style report states the covariate result, the ANCOVA result with degrees of freedom and effect size, and the adjusted (not raw) means with standard errors: “After controlling for pretest score, F(1, 46) = 5.12, p = .028, there was a significant effect of condition on posttest score, F(2, 46) = 4.37, p = .018, partial η² = .16. Adjusted means (SE) were 22.4 (0.9) for the control group, 25.1 (0.9) for treatment A, and 26.8 (0.9) for treatment B; Bonferroni-adjusted pairwise comparisons showed treatment B differed significantly from control (p = .014), with no other pairwise difference reaching significance.” Report the adjusted means specifically — publishing the raw descriptive-statistics means alongside an ANCOVA F-test is a common, avoidable inconsistency, since the significance test and the raw means aren’t answering exactly the same question.
Frequently asked questions
Can I use more than one covariate?
Yes — add each one to the Covariate(s) box. Each additional covariate adds its own row to the Tests of Between-Subjects Effects table and its own coefficient, and the same homogeneity-of-regression-slopes check needs to hold for every covariate×factor combination, not just the first one you check.
Why are my adjusted means so different from the raw means in Descriptive Statistics?
Because they’re answering different questions. Raw means are the actual sample averages, ignoring the covariate. Adjusted means show what each group’s mean would be if every group had the same average covariate value — the further a group’s real covariate average is from the grand mean, the more its adjusted mean shifts away from its raw mean.
Do I need to mean-center the covariate first?
No, not for the ANCOVA test or the adjusted means themselves — SPSS evaluates the covariate at its own grand mean by default regardless of how it’s coded. Centering only matters if you’re building a custom model with a factor×covariate interaction term and want the factor’s main-effect coefficient to be interpretable at the covariate’s mean rather than at zero.
What if the homogeneity-of-regression-slopes test is significant?
Standard ANCOVA is no longer valid as a single summary, because the covariate adjustment isn’t the same size across groups. See CASRAI’s guide to that assumption for the moderated-regression and Johnson-Neyman alternatives.
Related CASRAI resources
For the assumption this guide assumes you’ve already checked, see ANCOVA Assumptions: Homogeneity of Regression Slopes. For the underlying omnibus-F logic without a covariate, see CASRAI’s ANOVA guide and the ANOVA dictionary term. For running the equal-cell-size, no-covariate versions of this design in SPSS, see one-way ANOVA in SPSS and two-way ANOVA in SPSS; for multiple outcome variables at once, see MANOVA in SPSS. To check the equal-variances assumption in more depth, see Levene’s test in SPSS. For the covariate concept itself, see the confounding variable dictionary term, and for the effect-size figure this procedure reports, see the effect size term and CASRAI’s effect size in research guide. For a broader regression-based framing of covariate adjustment outside the ANOVA family, see CASRAI’s regression analysis guide. For CASRAI’s full toolkit coverage, see the research tools pillar.








