Reporting · ~10 min read
How to Report One-Way ANOVA Results
The F test only says the groups are not all the same. The sentence a reviewer accepts says which groups differ, by how much, and how precisely.
Published
In short
A complete one-way ANOVA result has two layers: the omnibus test (each group's mean [SD] and n, F with both degrees of freedom, an exact P, and η²) and the post hoc pairs (the test used, every pairwise difference with its 95% CI and adjusted P, including the pair that did not differ). In AMA format: "Age at presentation differed by smoking status (never smokers, 66.5 [10.7] years; former smokers, 65.7 [11.5]; current smokers, 58.5 [11.3]; F2,854 = 49.50; P < .001; η² = 0.10). On Tukey post hoc comparison, current smokers were younger than never smokers (mean difference, −8.1 years; 95% CI, −10.1 to −6.0; P < .001) and than former smokers (−7.3 years; 95% CI, −9.6 to −5.0; P < .001); former and never smokers did not differ (0.8 years; 95% CI, −1.5 to 3.1; P = .72)."
A one-way ANOVA is reported incompletely far more often than it is reported wrongly. The usual shape is a single clause, "age differed significantly between smoking groups (P < .001)", which tells the reader that at least one of the three means is not equal to the others and nothing else: not which groups differ, not by how many years, not how confident the estimate is. The omnibus F test answers a question nobody is asking clinically. The pairwise comparisons answer the real one, and a reviewer who cannot find them will ask for them.
The ANOVA guide covers when the test is the right choice and how the engine checks its assumptions. This post picks up after that decision: you have run a one-way ANOVA, and now need to write it up so that it survives peer review.
What a complete one-way ANOVA result contains
The SAMPL guidelines ask for the descriptive statistics of every group, the test statistic with its degrees of freedom, an exact P value, an effect size with its precision, and the name of any post hoc procedure used to adjust for multiple comparisons.3 Applied to a one-way ANOVA, that is seven elements.
| Element | What to write | In this example |
|---|---|---|
| Group descriptives | Mean (SD) and n for every group, or median (IQR) if the outcome is skewed | 66.5 (10.7), n = 332; 65.7 (11.5), n = 204; 58.5 (11.3), n = 321 |
| Test statistic | F with both degrees of freedom (between, within) | F2,854 = 49.50 |
| P value | Exact, capital italic P, no leading zero; P < .001 is the floor | P < .001 |
| Effect size | η² or ω², named | η² = 0.10 |
| Post hoc test | Named (Tukey HSD, Games-Howell, Bonferroni) | Tukey HSD |
| Every pairwise difference | Mean difference, 95% CI and adjusted P for each pair, including non-significant pairs | Three pairs, one of them P = .72 |
| Assumption checks | One Methods sentence: normality check, Levene's test, and what you did if either failed | Levene P = .57 |
Common mistake
Reporting the omnibus F and then describing the pairs in words only ("smokers were younger than the other two groups") with no differences, intervals, or adjusted P values. The reviewer cannot tell whether that claim came from a post hoc test or from eyeballing the means, and cannot tell whether an 8-year difference was estimated to within 2 years or within 10.
A real result: age at presentation by smoking status
The acs teaching registry describes 857 patients admitted with an acute coronary syndrome to a Korean cardiovascular centre, with demographic and laboratory data.1 Age at presentation is compared across three smoking groups: never smokers (n = 332), former smokers (n = 204), and current smokers (n = 321). Levene's test gives P = .57, so the variances are similar and the classic ANOVA with Tukey HSD is the correct route. Shapiro-Wilk returns P = .02, P < .001 and P = .04 in the three groups; with more than 200 patients per group those small departures from normality are well tolerated, a point the Shapiro-Wilk guide explains, so the engine keeps the parametric route.
| Group | N | Mean | SD |
|---|---|---|---|
| Ex-smoker | 204 | 65.745 | 11.488 |
| Never | 332 | 66.509 | 10.662 |
| Smoker | 321 | 58.458 | 11.253 |
F(2, 854) = 49.50 · P < .001 · η² = 0.104 · Tukey HSD: 2 of 3 pairs significant
A one-way ANOVA showed a significant effect of 'smoking' on 'age', F(2, 854) = 49.497, P < .001, eta-squared = 0.104.
| Group A | Group B | Mean difference | P value | Significant |
|---|---|---|---|---|
| Ex-smoker | Never | −0.7639 | .7187 | No |
| Ex-smoker | Smoker | 7.2872 | < .001 | Yes |
| Never | Smoker | 8.0511 | < .001 | Yes |
Tukey HSD post hoc comparisons across 3 groups: 2 of 3 pairwise comparisons significant, family-wise error rate controlled at α = 0.05. Figures computed with scipy and statsmodels from real data (n = 857).
Example data: the acs dataset from the moonBook R package (Moon KW), 857 patients with acute coronary syndrome. Computed with scipy and statsmodels, not generated.
Two things about the output are worth noticing before writing the sentence. First, the omnibus test is emphatic (F2,854 = 49.50) but the effect size is moderate: η² = 0.104 means smoking status accounts for about 10% of the variance in age at presentation. Cohen's benchmarks for η² put 0.01 at small, 0.06 at medium and 0.14 at large,6 so this sits between medium and large. A very small P value with 857 patients does not, on its own, mean a big difference; the effect size and the pairwise estimates carry that information. Second, the Tukey table shows the whole story is one group: current smokers present about 7 to 8 years younger than either other group, and former and never smokers are indistinguishable.
Writing the AMA sentence
The AMA Manual of Style, the format standard for JAMA Network journals and most clinical and surgical journals, sets the conventions: a capital italic P with no leading zero, the leading zero kept on effect sizes (0.10, not .10), statistic symbols in italics, degrees of freedom as a subscript or in parentheses, and confidence intervals written as "95% CI, lower to upper" without brackets.2 The Results sentence then has two parts, the omnibus test and the post hoc pairs:
"Age at presentation differed by smoking status (never smokers, 66.5 [10.7] years; former smokers, 65.7 [11.5]; current smokers, 58.5 [11.3]; F2,854 = 49.50; P < .001; η² = 0.10). On Tukey post hoc comparison, current smokers were younger than never smokers (mean difference, −8.1 years; 95% CI, −10.1 to −6.0; P < .001) and than former smokers (−7.3 years; 95% CI, −9.6 to −5.0; P < .001); former and never smokers did not differ (0.8 years; 95% CI, −1.5 to 3.1; P = .72)."
Three details in that sentence are the ones reviewers check. The post hoc test is named, so the reader knows the three P values are already adjusted for multiple comparisons and were not run as three separate t-tests.4 Every pair is reported, including the one that was not significant: leaving it out reads as selective reporting, and the interval (−1.5 to 3.1 years) is itself informative, because it shows that former and never smokers are similar to within about 3 years, not merely "not significantly different". And each difference carries its confidence interval, which is what turns "younger" into an estimate a reader can weigh clinically.5
One point of formatting: StatsPlease prints P values to three decimals, so the pair that did not differ appears as P = .719 in the output card. The AMA Manual's convention is two digits for P values of .01 or more, three digits between .001 and .01, and P < .001 below that, keeping three digits only where rounding would push a value across .05.2 So the manuscript sentence says P = .72. Likewise the mean differences are trimmed to one decimal, matching the precision at which age was recorded, and η² to two.
The Methods sentence
The Results sentence is only defensible if the Methods section has already said what was checked. One sentence does it: "Age was compared across smoking groups using one-way analysis of variance. Homogeneity of variance was assessed with Levene's test (P = .57) and normality with the Shapiro-Wilk test; given the group sizes, minor departures from normality were tolerated. Pairwise comparisons used Tukey's honestly significant difference test. Effect size is reported as η². All tests were 2-sided with α = .05." Naming the software and version at the end of the statistical methods paragraph is expected by most journals.3
Which post hoc test, and why it belongs in the sentence
Tukey HSD assumes the same thing the ANOVA does: similar variances across groups. When Levene's test rejects that, the omnibus test should be Welch's ANOVA and the pairwise test Games-Howell, and the Results sentence changes accordingly (Welch's F with its adjusted denominator degrees of freedom, then Games-Howell pairs). The post hoc guide walks through that second decision. Whichever you use, the name goes in the sentence: "on Tukey post hoc comparison" or "on Games-Howell comparison". A pairwise P value without its adjustment method is uninterpretable, because the reader cannot tell whether it was protected against the inflation of three comparisons or not.
If the outcome had been skewed rather than roughly normal, the whole structure would shift to the Kruskal-Wallis test with Dunn's post hoc comparisons, reported with medians and IQRs instead of means and SDs; that guide covers the non-parametric version.
Where APA differs
The same result in APA style, which StatsPlease can also produce through the Reporting Style picker in the Analyze flow, uses a lowercase italic p, puts the confidence interval in square brackets, and writes the descriptives as M and SD: "F(2, 854) = 49.50, p < .001, η² = .10", with the effect size also losing its leading zero because it cannot exceed 1. The numbers are identical; only the typography moves. Do not mix the two styles in one manuscript, and do not present APA formatting to a journal that follows the AMA Manual.
This is also where ChatGPT and other LLMs are least trustworthy. Ask one to "write up my ANOVA in AMA style" and it will produce a perfectly formatted sentence, with an F value, degrees of freedom and Tukey pairs, none of which it computed from your data. The result above was computed with scipy and statsmodels, not generated; run the same three groups through SPSS or R and every figure matches.
Try it yourself
Reproduce this result
The comparison above comes from a public dataset. Compute the same F, η² and Tukey pairs in either tool and the outputs agree, because both are doing the same computation, not generating it.
In StatsPlease
- Upload the dataset as a CSV.
- Open the Analysis tab.
- Set Outcome = age and Group = smoking.
- Press the Group Comparison preset button. There is no separate run step; pressing the preset runs the analysis. The engine runs Levene's test and Shapiro-Wilk on each group, selects one-way ANOVA with Tukey HSD itself, and computes F, the exact P value, η² and every pairwise comparison.
- Read the AMA-formatted result on the Results tab: F(2, 854) = 49.497, P < .001, eta-squared = 0.104, with the Tukey table beneath it.
In SPSS
- Open the same CSV in SPSS.
- Analyze → Compare Means → One-Way ANOVA. Dependent List = age, Factor = smoking.
- Post Hoc: tick Tukey. Options: tick Descriptive, Homogeneity of variance test and, in SPSS 27 or later, Estimate effect size.
- Read F, both df and Sig. from the ANOVA table, eta-squared from the ANOVA Effect Sizes table, and each mean difference with its Sig. and 95% CI from the Multiple Comparisons table.
Frequently asked questions
Do I still report the F test if I report the Tukey comparisons?
Yes. The omnibus F with both degrees of freedom, its exact P value and an effect size are the evidence that the groups are not all equal; the post hoc pairs then say which groups differ and by how much. Reporting only the pairs invites the reviewer to ask what protected them from multiple testing, and reporting only the F leaves the clinical question unanswered.
Should I report eta-squared or omega-squared?
Either is accepted, but name which one you used. Eta-squared is the share of the total variance explained by the grouping and is what most software prints; it is slightly optimistic in small samples, and omega-squared corrects for that. With 857 patients the two are practically identical here, so report the one your software gives and label it correctly.
What if Levene's test is significant?
The classic ANOVA and Tukey HSD both assume similar variances across groups. When Levene's test rejects that, report Welch's ANOVA for the omnibus test and Games-Howell for the pairwise comparisons, and say so in the Methods. The sentence structure is the same: F with its adjusted degrees of freedom, P, an effect size, then each pair with its difference, confidence interval and adjusted P.
You might also read
References
- Moon KW. moonBook: Functions and Datasets for the Book by Keon-Woong Moon. R package; the acs dataset of 857 patients with acute coronary syndrome. https://CRAN.R-project.org/package=moonBook
- Christiansen SL, Iverson C, Flanagin A, et al. AMA Manual of Style: A Guide for Authors and Editors. 11th ed. New York, NY: Oxford University Press; 2020. https://doi.org/10.1093/jama/9780190246556.001.0001
- Lang TA, Altman DG. Basic statistical reporting for articles published in biomedical journals: the "Statistical Analyses and Methods in the Published Literature" or the SAMPL Guidelines. Int J Nurs Stud. 2015;52(1):5-9. https://doi.org/10.1016/j.ijnurstu.2014.09.006
- Tukey JW. Comparing individual means in the analysis of variance. Biometrics. 1949;5(2):99-114. https://doi.org/10.2307/3001913
- Lakens D. Calculating and reporting effect sizes to facilitate cumulative science: a practical primer for t-tests and ANOVAs. Front Psychol. 2013;4:863. https://doi.org/10.3389/fpsyg.2013.00863
- Cohen J. Statistical Power Analysis for the Behavioral Sciences. 2nd ed. Hillsdale, NJ: Lawrence Erlbaum Associates; 1988.
Two ways forward from here.
Work through it yourself using the guidance above; the exercise section shows the exact steps in SPSS. Or upload your dataset to StatsPlease, set your Outcome and Group variables, and press the Group Comparison preset; pressing it runs the analysis, checks the assumptions, and returns the omnibus result and every Tukey pair in AMA format, computed, not generated.
Try StatsPlease free