A two-way (factorial) ANOVA in SPSS prints fewer tables than a one-way ANOVA but demands more careful reading. The interaction is often the whole point, and it changes how you interpret the main effects. This guide reads every table row by row with a worked example (two teaching formats, three course loads, 20 students per cell), flags the misreadings that cost marks, and ends with the APA 7 write-up. For the reporting format on its own, see the two-way ANOVA APA guide.
What SPSS gives you
Analyze > General Linear Model > Univariate, with Dependent Variable set to your outcome, Fixed Factors set to your two categorical independent variables, and Descriptive Statistics, Homogeneity Tests and Estimates of Effect Size ticked under Options, produces:
- Between-Subjects Factors: the levels and counts of each factor.
- Descriptive Statistics: Mean, Std. Deviation and N per cell (every combination of the two factors) and for each factor's totals.
- Levene's Test of Equality of Error Variances: tests homogeneity across cells.
- Tests of Between-Subjects Effects: the main effect of Factor A, Factor B, and their interaction, each with F, both degrees of freedom, p and partial η².
The order can differ slightly between versions; the table titles are what to look for.
The worked example
You studied 120 students taking an exam after a course. Half took the course in person, half online. They also studied under three different course loads (light, medium, heavy). All tables below come from one dataset.
Table 1: Descriptive Statistics
| Teaching Format | Course Load | N | Mean | Std. Deviation |
|---|---|---|---|---|
| In-person | Light | 20 | 7.50 | 1.051 |
| In-person | Medium | 20 | 7.10 | .912 |
| In-person | Heavy | 20 | 5.50 | 1.147 |
| Online | Light | 20 | 6.85 | 1.348 |
| Online | Medium | 20 | 7.00 | 1.026 |
| Online | Heavy | 20 | 7.90 | 1.119 |
| Total | In-person | 60 | 6.70 | 1.344 |
| Total | Online | 60 | 7.25 | 1.244 |
| Total | Total | 120 | 6.98 | 1.319 |
- N, Mean, Std. Deviation: the data per cell (each combination of format and load). Each cell has 20 students. The rows labelled "Total" show marginal means and SDs for each teaching format and the grand mean for all students.
Table 2: Levene's Test of Equality of Error Variances
| Levene Statistic | df1 | df2 | Sig. | |
|---|---|---|---|---|
| Based on Mean | 1.121 | 5 | 114 | .353 |
Levene's test checks whether the cells have similar variances, an assumption of the standard F test. Sig. = .353 is well above .05, so the assumption holds. This Sig. is not your ANOVA result.
Table 3: Tests of Between-Subjects Effects
| Type III Sum of Squares | df | Mean Square | F | Sig. | Partial Eta Squared | |
|---|---|---|---|---|---|---|
| Corrected Model | 66.775 | 5 | 13.355 | 10.863 | .000 | .323 |
| Intercept | 5838.075 | 1 | 5838.075 | 4748.773 | .000 | .977 |
| format | 9.075 | 1 | 9.075 | 7.382 | .008 | .061 |
| load | 4.850 | 2 | 2.425 | 1.973 | .144 | .033 |
| format × load | 52.850 | 2 | 26.425 | 21.494 | .000 | .274 |
| Error | 140.150 | 114 | 1.229 | |||
| Total | 6045.000 | 120 | ||||
| Corrected Total | 206.925 | 119 |
This table is where your results live. Read it as follows.
- Corrected Model row: the combined effect of both factors. Not usually reported separately.
- Intercept row: the grand mean tested against zero. Not reported in your results.
- format row: the main effect of teaching format (in-person vs online), ignoring course load. F(1, 114) = 7.38, p = .008. Partial η² = .061. This main effect is significant.
- load row: the main effect of course load (light, medium, heavy), ignoring teaching format. F(2, 114) = 1.97, p = .144. Partial η² = .033. This main effect is NOT significant (p > .05).
- format × load row: the interaction. F(2, 114) = 21.49, p < .001. Read this row first. The significant interaction qualifies both main effects: course load matters, but its effect depends on the teaching format.
- Error row: within-cell variation (the denominator of each F). Its df (114 = 120 − 6 cells) is the second df you report for all three effects above. Mean Square = 1.229 is the error variance.
- Total and Corrected Total rows: the combined variation. Not reported.
Interpreting the interaction
The interaction F(2, 114) = 21.49, p < .001 tells you that the effect of course load on exam scores differs between in-person and online students. It is significant, so the main effects are qualified by this difference.
To describe what the interaction says, compute or request simple-effects tests. SPSS computes these with Analyze > General Linear Model > Univariate, using the /EMMEANS syntax to request simple effects. SPSS's simple-effects tests use the full two-way model's error term (MS = 1.229, df = 114), not separate one-way ANOVAs, so the degrees of freedom are (2, 114) not (2, 57). The table below shows the effect of course load within each teaching format.
Table 4: Univariate Tests of Simple Effects (Course Load Within Each Teaching Format)
| Teaching Format | Source | Type III Sum of Squares | df | Mean Square | F | Sig. | Partial Eta Squared |
|---|---|---|---|---|---|---|---|
| In-person | Contrast | 44.800 | 2 | 22.400 | 18.220 | .000 | .242 |
| Error | 140.150 | 114 | 1.229 | ||||
| Online | Contrast | 12.900 | 2 | 6.450 | 5.247 | .007 | .084 |
| Error | 140.150 | 114 | 1.229 |
- In-person row: The effect of course load is F(2, 114) = 18.22, p < .001, partial η² = .242. Course load has a strong effect on exam scores for in-person students.
- Online row: The effect of course load is F(2, 114) = 5.25, p = .007, partial η² = .084. Course load has a weaker (but still significant) effect for online students.
The interaction is now interpretable: a heavier course load went with lower scores for in-person students but higher scores for online students, a crossover. Note that the error rows are identical; SPSS uses the pooled error from the full model. If you ran separate one-way ANOVAs on split files, you would get different F values and df (2, 57), because the error term would be recalculated from each subset alone.
Table 5: Pairwise Comparisons (In-person, Bonferroni Corrected)
| (I) Course Load | (J) Course Load | Mean Difference (I-J) | Std. Error | Sig.ᵇ | 95% CI Lower Bound | 95% CI Upper Bound |
|---|---|---|---|---|---|---|
| Light | Medium | .400 | .351 | .769 | −.452 | 1.252 |
| Medium | Light | −.400 | .351 | .769 | −1.252 | .452 |
| Light | Heavy | 2.000* | .351 | .000 | 1.148 | 2.852 |
| Heavy | Light | −2.000* | .351 | .000 | −2.852 | −1.148 |
| Medium | Heavy | 1.600* | .351 | .000 | .748 | 2.452 |
| Heavy | Medium | −1.600* | .351 | .000 | −2.452 | −.748 |
ᵇ Adjustment for multiple comparisons: Bonferroni.
The asterisk marks differences significant after Bonferroni correction for three pairwise comparisons. For in-person students, the main driver of the simple effect is the heavy-load drop (2 points below light, 1.6 points below medium, both p < .001). Light and medium loads do not differ significantly (p = .769).
Misreadings that cost marks
- Reporting Levene's Sig. as the ANOVA result. .353 is about variances; the p values you report are in the Tests of Between-Subjects Effects table.
- Reporting the Intercept as a main effect. It is a statistical control, not a research finding.
- Ignoring or downplaying the interaction. If it is significant, the main effects are incomplete. Report simple effects to clarify what the interaction means.
- Writing p = .000. Write p < .001. That applies to all p values you see.
- Reporting only one degree of freedom. Each F needs both: effect df and error df. F(2, 114).
- Stopping at the main effects when the interaction is significant. The interaction is the whole point of a factorial design. Interpret it with simple effects.
- Confusing partial eta squared with eta squared. Partial η² is the standard in factorial designs (it is what SPSS prints). It excludes the variance explained by other factors.
The APA 7 format template
A two-way ANOVA showed a significant main effect of [Factor A], F(df, df_error) = X.XX, p = .XXX, partial η² = .XX, and of [Factor B], F(df, df_error) = X.XX, p = .XXX, partial η² = .XX. These were qualified by a significant [Factor A] by [Factor B] interaction, F(df, df_error) = X.XX, p = .XXX, partial η² = .XX. Simple-effects tests showed that [describe what the interaction means].
The write-up for this example
A two-way ANOVA showed a significant main effect of teaching format, F(1, 114) = 7.38, p = .008, partial η² = .06, but no main effect of course load, F(2, 114) = 1.97, p = .144, partial η² = .03. These findings were qualified by a significant teaching format by course load interaction, F(2, 114) = 21.49, p < .001, partial η² = .27. Simple-effects tests showed that the effect of course load differed markedly between the two teaching formats: for in-person students, F(2, 114) = 18.22, p < .001, partial η² = .24; for online students, F(2, 114) = 5.25, p = .007, partial η² = .08. In-person students' scores fell sharply with increasing course load (heavy 2 points below light), while online students' scores rose slightly (heavy 1.05 points above light).
You can add a cell-means table (see the two-way ANOVA APA guide for format). SPSS's simple-effects output includes a Pairwise Comparisons table (Bonferroni corrected); the one-way comparisons within In-person show that the heavy load differs significantly from both light and medium loads, but light and medium do not differ.
Let KyroStat do the write-up for you
Formatting a two-way ANOVA with two main effects, an interaction, partial eta squared, and simple effects is where errors creep in. KyroStat runs the two-way ANOVA on your data, computes the interaction and simple-effects tests, checks the assumptions, and hands you the finished APA 7 sentences, the cell-means table, the plot, and the underlying Python or R code.
Also useful for the write-up (affiliate links): Proofreading for your thesis or paper (20% off with code PAP20): Paperpal
Frequently asked questions
What makes a two-way ANOVA different from a one-way ANOVA? A one-way ANOVA has one factor. A two-way ANOVA has two factors and also tests their interaction, whether the effect of one factor depends on the level of the other.
Which degrees of freedom do I report for the interaction? The interaction df are: (number of levels of Factor A minus 1) times (number of levels of Factor B minus 1) for the first df, and (total N minus number of cells) for the second df.
What if the interaction is not significant? Report the main effects as they are, but note that the interaction was not significant so you did not need to compute simple effects to interpret them.
How do I report partial eta squared? With no leading zero, just like p: partial η² = .06. A common mistake is to write partial η² = 0.06 (with a leading zero before the decimal).
When should I compute simple effects? When the interaction is significant at p < .05. Simple effects clarify what the interaction means.
Which related guides might I need? Often these: mixed ANOVA if some factors are within-subjects, post hoc tests for pairwise comparisons of factor levels, eta squared for understanding effect sizes, and how to interpret one-way ANOVA output as a foundation.