Skip to main content
v2026.11,772 entries · CC-BY 4.0

Simple Effects Analysis After a Significant Interaction

How to decompose a significant ANOVA interaction into simple effects: which factor to slice by, pooled vs. separate error terms, SPSS/R/Stata/SAS syntax, multiple-comparisons correction, effect size, and reporting.

Written and maintained by CASRAI Editorial Board

Last updated

When a two-way (or higher) ANOVA turns up a statistically significant interaction, the main effects in the same table stop being trustworthy on their own — an interaction means the effect of one factor genuinely depends on the level of the other, so a single averaged main effect can understate, overstate, or even reverse the pattern that is actually happening in the data. Simple effects analysis (also called simple main effects) is the standard follow-up: instead of asking “what is the effect of Factor A, averaged across Factor B,” it asks “what is the effect of Factor A at each specific level of Factor B” — one significance test per slice of the design.

Why the interaction changes what you can claim

A significant interaction can take two broad shapes, and the shape matters for how you interpret the follow-up tests:

  • Ordinal interaction — the effect of Factor A points the same direction at every level of Factor B, just with a different magnitude. The simple effects will likely both be significant, differing mainly in size.
  • Disordinal (crossing) interaction — the effect of Factor A reverses direction across levels of Factor B. This is the pattern most likely to produce a significant interaction sitting on top of a non-significant, misleading average main effect, because the two opposite simple effects partially cancel out when averaged together.

Either way, once the interaction is significant, the correct next step is not to report the main effects as if the interaction were not there — it is to decompose the interaction into simple effects and interpret those instead. Some methodologists additionally recommend testing an interaction contrast (a direct test of whether two simple effects differ from each other) rather than relying on visual inspection of a profile plot alone; a plot can look like it shows an interaction from sampling noise, especially with small cells, so treat it as a way to form an expectation, not as the test itself.

Two decisions before you run the tests

1. Which factor do you slice by? Simple effects are not symmetric — “the effect of A within each level of B” and “the effect of B within each level of A” are two different sets of tests, and running both without a plan inflates your comparison count for no theoretical reason. The choice should follow the research question: if B is the factor with a natural conceptual ordering (e.g., a treatment condition) and A is a covariate-like grouping factor (e.g., a demographic split), slicing by B to look at A within each treatment condition is usually the more interpretable framing. Decide before you see the simple-effects output, the same discipline used for planned contrasts generally.

2. Pooled or separate error term? There are two structurally different ways to get simple effects out of standard software, and they are not interchangeable:

  • Pooled error term (the model-based route) — fit the full factorial model once, then request simple effects as contrasts on the model’s estimated marginal means. This reuses the single error variance estimated from the whole dataset, which is the more statistically efficient choice (more degrees of freedom for the error term) and is the generally preferred default when the homogeneity-of-variance assumption reasonably holds across the whole design.
  • Separate error term per subgroup (the split-and-rerun route) — split the dataset by the slicing factor and rerun a simpler ANOVA (or t-test, for two levels) within each subgroup. Each subgroup gets its own error variance estimate, which is more robust if variances genuinely differ across the levels of the slicing factor, but costs degrees of freedom and statistical power relative to the pooled approach, and is a real, separate analysis choice, not just a different way of asking software for the same number.

Running simple effects by software

The pooled-error route is available directly in every major statistics package once the full factorial model is fit; the separate-error route is a manual rerun and works the same way everywhere. Full walkthroughs for each package’s complete ANOVA workflow live on CASRAI’s Two-Way ANOVA in SPSS, Running ANOVA in R, and ANOVA in Stata guides — this section covers only the simple-effects step itself.

SPSS — GLM Univariate has no dedicated simple-effects button (its Options tab “Compare main effects” checkbox only operates on a single selected main-effect term, not the interaction), so the pooled-error route runs through Paste-generated syntax: UNIANOVA y BY a b /EMMEANS=TABLES(a*b) COMPARE(a) ADJ(BONFERRONI) produces pairwise comparisons of A within each level of B, using the model’s pooled error term. The separate-error route uses Data > Split File > Organize output by groups on the slicing factor, then reruns Analyze > Compare Means > One-Way ANOVA (or GLM Univariate) on the other factor within each subgroup.

R — fit the factorial model with aov() or lm(), then pass it to the emmeans package (Russell Lenth): emmeans(model, ~ a | b) requests estimated marginal means of A within each level of B using the model’s pooled error term, and piping that into pairs() or contrast() runs the pairwise simple-effects comparisons with a selectable adjustment method (adjust = "bonferroni", "tukey", "sidak", etc.).

Stata — after anova y a##b, the postestimation command margins a, at(b = (1 2)) (or the shorthand margins a, over(b) depending on design) gives adjusted means of A at each level of B from the pooled model, and pwcompare or contrast a@b runs the corresponding simple-effects comparisons with a chosen multiple-comparisons adjustment.

SAS — PROC GLM or PROC MIXED’s LSMEANS a*b / SLICE=b statement runs the pooled-error simple-effects test directly, slicing the A-by-B least-squares means table by each level of B.

Correcting for multiple comparisons

Running one simple-effects test per level of the slicing factor is itself a family of tests, and it inflates the family-wise Type I error rate the same way any set of related comparisons does — this is on top of, not instead of, any correction already applied to pairwise comparisons within a single simple effect (e.g., comparing three levels of A within one level of B). A Bonferroni correction (family-wise alpha divided by the number of simple-effects tests run) is the conservative, simplest-to-report default; a Sidak correction is a very slightly less conservative variant for independent comparisons. Report which correction was used and the resulting adjusted p-values or adjusted alpha — an unlabeled “p < .05” across several simple-effects tests without stating the correction method is a common and avoidable reporting gap.

Effect size for simple effects

Report an effect size alongside each simple-effects significance test, not just the p-value. Partial eta squared computed within each simple effect (conventionally read as roughly .01 small, .06 medium, .14 large, though these are rough guides rather than fixed rules) is the direct analog of the effect-size statistic already reported for the overall ANOVA terms. For a two-level simple effect, Cohen’s d between the two means at that slice is often more directly interpretable to a reader than a squared-variance measure, and both are legitimate to report.

Simple effects vs. simple slopes

“Simple effects” and “simple slopes” describe the same underlying idea — decomposing a significant interaction into its components at fixed levels of one variable — but the terminology tracks whether the moderating variable is categorical or continuous. Simple effects is the term used in factorial ANOVA, where both factors are categorical and the “levels” being sliced by are actual group categories. Simple slopes is the term used in moderated multiple regression, where a continuous predictor’s slope is evaluated at representative values of a continuous moderator (commonly -1 SD, the mean, and +1 SD). See CASRAI’s Moderation Analysis guide for the simple-slopes version of this same decomposition when your moderator is continuous rather than a grouping factor.

Reporting simple effects

A complete report states: the overall interaction test (F, degrees of freedom, p-value, effect size) that justified running simple effects in the first place; which factor was sliced by and why; the error-term route used (pooled model error vs. separate per-subgroup error); each simple-effects test’s F or t statistic, degrees of freedom, p-value, and effect size; and the multiple-comparisons correction applied across the set of simple-effects tests. Skipping the correction-method statement, or reporting simple effects without first establishing that the interaction itself was significant, are the two most common gaps reviewers flag in a results section built around this procedure.

Frequently asked questions

Do I need a significant interaction before running simple effects?

Yes, as the standard, defensible workflow. Simple effects exist specifically to decompose an interaction that the omnibus test has already shown is real; running them as a first step, before checking the interaction term, both skips the justification for why the main effects alone are insufficient and adds an unplanned family of comparisons that should have been corrected for. A pre-registered, theory-driven simple-effects plan is a legitimate exception, but it should be stated as planned, not framed as a routine follow-up to a non-significant interaction.

What is the difference between a main effect, a simple effect, and an interaction effect?

A main effect is the effect of one factor averaged across every level of the other factor(s). An interaction effect tests whether the effect of one factor genuinely differs across levels of another. A simple effect is the effect of one factor at one specific level of the other — the building block that, examined across all levels, shows you what the interaction is actually made of.

Should I use Bonferroni or Tukey correction for simple effects?

Bonferroni (or Sidak) is the more common default because simple-effects comparisons are frequently a mixed, planned set rather than the full all-pairwise comparison set that Tukey HSD is specifically calibrated for; Tukey is exact only for the complete all-pairwise case. See CASRAI’s Bonferroni vs. Tukey comparison for the underlying tradeoff.

Can simple effects use a different error term than the omnibus ANOVA?

Yes, and this is a real analytic choice rather than a software quirk — the pooled-model-error route reuses the omnibus model’s single error variance, while the split-and-rerun route estimates a fresh error variance within each subgroup. They can produce different significance conclusions, particularly when variances differ meaningfully across the levels of the slicing factor.

Follow CASRAI

Research-administration guidance, standards updates and independent tool reviews.

Ask CASRAI · included with Regulatory Radar

Ask about Simple Effects Analysis After a Significant Interaction

Ask CASRAI answers research-administration questions and cites the passages behind every claim — and says so when the corpus does not cover something, instead of guessing. It comes with a Regulatory Radar subscription at $29 a month, alongside the daily digest of regulatory changes and the dashboard of what changed.

150 questions a day, on this site, over the API, or inside your own tools through the CASRAI MCP server.

Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →

Regulatory Radar

Stop finding out after the fact

$29/month, cancel anytime. Daily digest updates from our analysis, a dashboard holding the same items, and a cited assistant for everything they raise.

  • Federal Register, Federal Register+, Grants.gov, Regulations.gov, NSF News, UKRI, plus CASRAI’s own published content.
  • 72,264 indexed passages, and every answer cites the ones it drew on.