In short
A simple effect is the effect of one factor at one level of the other, and it is reported like any other F test: with its own degrees of freedom, its p value and an effect size, F(1, 88) = 10.75, p = .001, η²p = .11. The degrees of freedom are what tell a reader whether it was done properly, because in a mixed design the simple effect of time inside one group carries its own error term, F(2, 88) = 19.86, and not the pooled F(2, 176) of the omnibus test. Correct the alpha across the family you actually tested: three simple effects put the Bonferroni bar at .017, so p = .010 survives and p = .656 does not. And write what the interaction says rather than what the pair of simple effects looks like — significant in one group and not in the other is not a finding, the difference between the two is (Gelman and Stern, 2006).
Your interaction came out significant, and the analysis has barely started. The omnibus F tells you that the effect of one factor depends on the other; it says nothing about where, in which direction or how large. That is the job of the simple effects, and it is the step most manuscripts either skip or reduce to two p values with no degrees of freedom attached. Methods reviewers go straight for those degrees of freedom, because they say out loud which error term you used and whether you knew you were choosing one. Here is what a simple effect is, how to slice an interaction, which correction the family needs, and what the finished paragraph looks like. If the omnibus part is the bit you still need, start at how to report an ANOVA in APA 7.
What a simple effect is, and what it is not
A main effect is the effect of one factor averaged over the levels of the other. A simple effect is the effect of one factor at a single level of the other, with the average thrown away. Take a trial with 120 patients in a 2 (therapy: CBT, waiting list) × 2 (comorbidity: present, absent) design, 30 per cell. The interaction is significant, F(1, 116) = 6.83, p = .010, η²p = .06, and the two simple effects say where it lives: therapy worked in patients with comorbidity, F(1, 116) = 14.02, p < .001, η²p = .11, and did not reach significance in patients without it, F(1, 116) = 1.21, p = .274, η²p = .01.
That last sentence is also the trap, so read it twice. Those two tests do not demonstrate that therapy works better with comorbidity. They demonstrate that one effect cleared a threshold and the other did not, and the difference between clearing a threshold and not clearing it is not itself a tested difference (Gelman and Stern, 2006). The claim that the effects differ is the interaction, and it is the interaction — the 6.83 — that licenses the sentence. Nieuwenhuis and colleagues (2011) reviewed five neuroscience journals and found that roughly half of the articles in a position to make this substitution made it. The simple effects describe the interaction; they do not test it.
Three names get used interchangeably and shouldn't be. A simple main effect is an omnibus test of one factor at one level of the other, so with three or more levels it can be significant without telling you which levels differ. A simple comparison is a pairwise contrast inside a simple main effect — two specific cells, one degree of freedom. An interaction contrast is the difference between two simple effects, which is the difference of differences, and it is the only one of the three that tests the interaction itself.
Simple effects are follow-ups, not a separate analysis. They belong in the same Results paragraph as the interaction that motivated them, in that order, and every one you report needs its two degrees of freedom, its p value and an effect size. A simple effect reported as "the effect was significant in the intervention group (p < .001)" has thrown away the two numbers a reader needs to check it.
How to decompose an interaction, and which way to slice it
An interaction can be cut in two directions, and both are arithmetically legitimate. In a 2 (condition) × 3 (time) design you can ask for the effect of time inside each condition — two simple effects, one per group — or the effect of condition at each time point — three simple effects, one per occasion. They partition the same interaction and they answer different questions, which is why the decision is yours and not the software's.
Let your hypothesis pick the direction. In an intervention trial the question is almost always "did the groups differ, and when?", so you slice by time and test condition at pre-test, post-test and follow-up. The other cut answers "did each group change over time?", which is a within-group description and is exactly the thing that tempts you into the "improved in the treated group, did not improve in the controls" sentence. Both cuts in the same paper is not thoroughness, it is a doubled family of tests with a doubled error rate, and it usually means the direction was decided after seeing which one looked better.
The decomposition is layered, and each layer earns the next. The interaction says the effect depends on the other factor. The simple main effect says at which level. If the factor inside that simple effect has three or more levels, a significant simple main effect still doesn't say which pair differs, so a third layer of pairwise comparisons goes underneath. In a 2 × 3, the simple effect of the two-level factor is already a single contrast — one degree of freedom, no third layer needed — while the simple effect of the three-level factor has two, and needs one.
Report the layer that answers the question and stop. A 2 × 3 fully decomposed in both directions with pairwise comparisons underneath is eleven tests for an interaction that could be described in three sentences. If your prediction was a specific pattern rather than "something is going on", say so and test it as one contrast: a single interaction contrast with one degree of freedom is more powerful and much more readable than a fan of omnibus tests (Rosnow and Rosenthal, 1989).
The error term is where this breaks
A simple effect is a ratio, and you get to choose the denominator. The pooled route uses the mean square error of the full model, so every simple effect is tested against the same term with the same, large error degrees of freedom. The separate route reruns the analysis inside each level and gives each simple effect its own error term and its own, smaller degrees of freedom. Two people can report a different F for the same cells and both be right, which is precisely why the degrees of freedom have to appear.
In a fully between-subjects factorial, pooling is the default and it is defensible. The 2 × 2 above has 116 error degrees of freedom, both simple effects use them, and the extra power over two separate t tests on 58 df each is free — as long as the variances are homogeneous across all four cells, which is the assumption you bought when you pooled. When Levene's test and the cell standard deviations say otherwise, drop the pooled term, test each simple effect on its own cells and report the smaller df.
In a mixed or repeated-measures design, pooling is the more dangerous default. The pooled within-subjects error term assumes sphericity holds not just overall but in every cell of the design, and Boik (1981) showed that when it doesn't the resulting tests are badly non-robust — a nominal .05 that isn't .05 in either direction. The safer route, and the one most methods texts recommend, is a separate error term: run the repeated-measures analysis inside each group, with its own Mauchly's test and its own Greenhouse-Geisser correction. In the worked trial that is the difference between F(2, 176) and F(2, 88), and 176 error df on a simple effect that lives inside a single group of 45 people is the tell that the pooled term went in unexamined.
Say which you used, in one clause. "Simple effects of condition were tested against the pooled error term from the full model" or "simple effects of time were tested within each condition, each with its own error term and Greenhouse-Geisser correction where sphericity was violated". In SPSS the two routes are different commands, not a checkbox: /EMMEANS = TABLES(condition*time) COMPARE(condition) inside the full GLM pools, while a SPLIT FILE by condition followed by a repeated-measures GLM does not. The menus will hand you either one without ever mentioning that a choice was made. The mechanics of the repeated-measures part are in the repeated-measures ANOVA guide.
Correcting the alpha, and how to report the correction
Simple effects multiply tests, so they need a familywise correction, and the first decision is what counts as the family. The usual convention is that one decomposition of one interaction is one family: three simple effects of condition across three time points is a family of three, and Bonferroni puts the bar at .05/3 = .017. In the worked trial that means the groups differed at post-test, F(1, 88) = 10.75, p = .001, and at follow-up, F(1, 88) = 6.91, p = .010, but not at baseline, F(1, 88) = 0.20, p = .656. Note how close the follow-up runs: at five time points the bar would sit at .010 and that p = .010 would no longer clear it.
Holm's sequential procedure controls the same familywise rate with more power and costs nothing extra to run. Order the p values and test them against .05/3, then .05/2, then .05: .001 clears .017, .010 clears .025, .656 does not clear .05. Either procedure is defensible. What is not defensible is picking the procedure after seeing which results each one rescues, so name it in the analysis plan and leave it there.
Then there is the reporting nuance that produces genuinely wrong tables. You can either adjust the alpha and report raw p values against it, or adjust the p values and compare them against .05 — never both. SPSS's ADJ(BONFERRONI) does the second: it multiplies each p by the number of comparisons and caps the result at 1.000, which is why an adjusted p of exactly 1.000 turns up so often and means nothing sinister. Comparing an already-multiplied p against .017 corrects twice and quietly buries real effects. If your table shows p = 1.000 anywhere, it is adjusted, and the note should say so.
Each layer of the decomposition needs its own correction, and the corrections do not inherit downwards. The three pairwise comparisons inside a significant simple main effect of time are a new family of three, corrected on their own terms, and a corrected simple effect does not license uncorrected comparisons underneath it. The mirror-image error is treating a significant interaction as a license to test simple effects without any correction at all, on the grounds that the omnibus test "protected" them. It didn't; the omnibus test asked a different question.
The effect size of a simple effect
Partial eta squared is computed from the error term you actually used, so the same cells produce a different η²p under pooling than under separate terms. That is not a defect, it is the definition — the denominator is effect plus its own error — but it means a bare η²p next to a simple effect is uninterpretable unless the reader knows which analysis produced it. The degrees of freedom you already reported answer that, which is one more reason they are not optional.
When the simple effect compares two groups, a standardized mean difference says more than η²p. At post-test the intervention group scored M = 15.10, SD = 4.10 and the control group M = 17.90, SD = 4.00, which is d = 0.69, 95% CI [0.27, 1.12]. That interval is what a reader can compare against the literature and against the smallest change that would matter clinically; η²p = .11 is not. Give the cell means and standard deviations either way, because without them nobody can check the direction of the effect, and "significant" without a direction is not a result.
The number that actually answers the interaction question is the interaction contrast: the difference between the two simple effects, with a confidence interval. From baseline to post-test the intervention group dropped 3.50 points and the control group 0.30, a difference of differences of −3.20, 95% CI [−4.93, −1.47], t(88) = 3.68, p < .001. One line, one degree of freedom, and it makes the comparative claim directly instead of leaving the reader to infer it from two p values that were never compared.
Cohen's (1988) benchmarks — .01, .06 and .14 for η²p, 0.20, 0.50 and 0.80 for d — are conventions for orienting a reader with nothing else to go on, not thresholds anything has to clear. A simple effect is conditional by construction, so it is estimated on a fraction of the sample and its interval is correspondingly wide. Reporting that interval, rather than rounding it away into a verdict, is most of what separates a decomposition that informs from one that decorates.
The paragraph, written out
This is the full worked trial with nothing left implicit: "Symptom scores were analyzed with a 2 (condition: intervention, control) × 3 (time: baseline, post-test, three-month follow-up) mixed ANOVA, n = 45 per condition. The Condition × Time interaction was significant, F(2, 176) = 8.94, p < .001, η²p = .09, and was decomposed into the simple effect of condition at each time point, each tested against the pooled error term with a Bonferroni-corrected alpha of .017. The groups did not differ at baseline (intervention M = 18.60, SD = 4.30; control M = 18.20, SD = 4.10), F(1, 88) = 0.20, p = .656, η²p = .002. The intervention group scored lower at post-test (M = 15.10, SD = 4.10 versus M = 17.90, SD = 4.00), F(1, 88) = 10.75, p = .001, η²p = .11, d = 0.69, 95% CI [0.27, 1.12], and at follow-up (M = 15.30, SD = 4.10 versus M = 17.60, SD = 4.20), F(1, 88) = 6.91, p = .010, η²p = .07, d = 0.55, 95% CI [0.13, 0.98]." Four sentences, every number a reader needs, and no table for a design this size.
If the hypothesis had been about change over time, the same interaction would be sliced the other way and the error terms would move with it: "Simple effects of time were tested within each condition, each with its own error term. In the intervention group Mauchly's test indicated a violation of sphericity, W = .84, χ²(2, N = 45) = 7.50, p = .024, so Greenhouse-Geisser corrected degrees of freedom are reported (ε = .86): symptoms changed over time, F(1.72, 75.86) = 19.86, p < .001, η²p = .31. Bonferroni-corrected pairwise comparisons showed a drop from baseline to post-test (Mdiff = 3.50, 95% CI [1.76, 5.24], padj < .001) that was maintained at follow-up (post-test versus follow-up Mdiff = −0.20, 95% CI [−1.29, 0.89], padj = 1.000). Scores in the control group did not change, F(2, 88) = 1.42, p = .247, η²p = .03." Look at the error degrees of freedom: 88 inside a group of 45, not the 176 of the omnibus.
In a bigger design that content becomes a table: one row per simple effect, columns for the cell means and standard deviations, then F, both df, p and the effect size. Two things belong in the table note and are almost always missing — which error term the simple effects were tested against, and what the corrected alpha was. A reader who sees p = .010 needs to know whether it is being judged against .05, against .017, or whether it has already been multiplied. If you are building that table by hand, the universal APA table generator lays out the rows and the note for you.
Five things send this analysis back, in rough order of frequency. Simple effects carrying the omnibus error degrees of freedom in a mixed design, which is the pooled term used without a decision. "Significant in one group but not the other" written as though it were the interaction. No correction at all, justified by the significant omnibus test. Double correction, from comparing SPSS's already-adjusted p values against a divided alpha. And both slicings of the same interaction reported side by side, which reads as fishing rather than as rigor. None of the five takes more than a minute to fix once you know where to look.
Frequently asked questions
What is a simple effect in ANOVA?
The effect of one factor at a single level of another factor, as opposed to a main effect, which averages over those levels. If therapy interacts with comorbidity, the simple effect of therapy in patients with comorbidity is the therapy effect calculated using only those patients: F(1, 116) = 14.02, p < .001, η²p = .11. Simple effects describe where an interaction lives; they do not test whether it exists, which is what the interaction term is for.
How do you report simple effects in APA 7?
As F tests, in the same paragraph as the interaction and after it, each with both degrees of freedom, the p value and an effect size: F(1, 88) = 10.75, p = .001, η²p = .11, d = 0.69, 95% CI [0.27, 1.12]. Add the cell means and standard deviations so the direction is visible, and one clause naming the error term and the corrected alpha. The italics follow the usual rule — F, p, M, SD and d in italics, η²p upright because eta is Greek, and no leading zero on p or η²p.
Do simple effects need to be corrected for multiple comparisons?
Yes. A significant interaction does not protect the follow-up tests, because it asked a different question. Treat one decomposition of one interaction as one family: three simple effects put the Bonferroni bar at .05/3 = .017, and Holm's sequential version controls the same rate with more power. Correct once, not twice — if your software has already multiplied the p values (SPSS caps them at 1.000), compare them against .05 rather than against the divided alpha.
Can I test simple effects if the interaction is not significant?
Not as a rescue operation, which is what it usually is. Without a significant interaction there is no evidence that the effect depends on the other factor, so a simple effect that clears .05 in one group is not evidence that it differs from the other group (Gelman and Stern, 2006). The one clean exception is a simple effect you predicted in advance and registered as a planned contrast, which stands on its own regardless of the omnibus result — provided it was written down before the output arrived.
Which error term should I use for simple effects in a mixed ANOVA?
A separate one, in most cases. The pooled within-subjects error term assumes sphericity in every cell of the design, and tests built on it are badly non-robust when that fails (Boik, 1981). Running the analysis inside each level gives each simple effect its own error term and its own Greenhouse-Geisser correction: F(2, 88) inside a group of 45 rather than the pooled F(2, 176). In a fully between-subjects factorial the pooled term is the standard choice and buys real power, as long as the variances are homogeneous across cells.
How do I run simple effects in SPSS?
Two different routes that the menus will not tell you apart. /EMMEANS = TABLES(a*b) COMPARE(a) ADJ(BONFERRONI) inside the full GLM tests each simple effect against the pooled error term and returns Bonferroni-adjusted p values. SPLIT FILE by the moderating factor followed by a separate GLM in each subgroup gives each simple effect its own error term, its own sphericity test and smaller error degrees of freedom. Neither is wrong; reporting one while describing the other is.
Do the degrees of freedom of your simple effects match the error term you claimed?
It takes ten seconds to check and it is the first thing a methods reviewer looks at when an interaction gets decomposed.
Run your paper through Previum →With the interaction first, the simple effects underneath it carrying both degrees of freedom, a named error term, a corrected alpha and an effect size on each one, your decomposition is reported the way APA 7 asks. When the design gets harder — three-way interactions, unbalanced cells, or a comparative claim that really needs an interaction contrast rather than a pair of simple effects — that is what my statistical consulting is for.