Run a one-way, two-way factorial, or repeated-measures analysis of variance with effect sizes, Welch's correction for unequal variances, Bonferroni, Holm, and Sidak post-hoc tests, and Greenhouse-Geisser and Huynh-Feldt sphericity corrections. Type your groups in or import them directly from a comma-separated values file or an Excel spreadsheet. Reproducible R, Python, and APA output.
Each line is one group. Values may be separated by spaces, commas, tabs, or semicolons. Minimum 2 groups with ≥ 2 observations each.
Upload a spreadsheet in wide format (one column per group) or long format (agroup column and a value column). The groups populate the box above.
Drag & drop a file or
CSV, TSV, Excel (.xlsx/.xls) - max 500 rows
Large effect (η² ≥ .14).
| Pair | Diff | t | p (raw) | Bonferroni | Holm | Sidak |
|---|---|---|---|---|---|---|
| G1 − G2 | -8.875 | -5.486 | < 0.0001 | < 0.0001 | < 0.0001 | < 0.0001 |
| G1 − G3 | -16.875 | -10.430 | < 0.0001 | < 0.0001 | < 0.0001 | < 0.0001 |
| G2 − G3 | -8.000 | -4.945 | < 0.0001 | 2.05e-4 | < 0.0001 | 2.05e-4 |
Bonferroni multiplies each raw p by the number of pairs. Holm is a step-down Bonferroni (less conservative). Sidak assumes independent comparisons. Highlighted rows are significant at α = .05 by the Holm correction.
Ronald A. Fisher introduced analysis of variance in a 1918 paper on the correlation between relatives on the supposition of Mendelian inheritance, then developed it into a general statistical method in Statistical Methods for Research Workers (1925) and The Design of Experiments (1935). The central idea is to partition the total variance of the data into a between-groups component and a within-groups component, then compute their ratio, the F-statistic, named after Fisher by George Snedecor (1934). Under the null hypothesis that all group means are equal, F follows an F-distribution with the appropriate degrees of freedom, and a large F leads to rejection. A single omnibus test, run once, controls the family-wise error rate at α, which is why ANOVA is preferred over running multiple t-tests when comparing three or more groups.
The choice of design follows the structure of your data. One-way ANOVA compares three or more independent groups on a single categorical factor: three treatment arms in a randomised trial, four educational interventions, five varieties of wheat in an agronomy trial. Two-way (factorial) ANOVA crosses two factors (for example treatment × dose, sex × condition, or material × temperature) and decomposes the variance into a main effect of A, a main effect of B, and the A × B interaction. A significant interaction means the effect of one factor depends on the level of the other, and is usually the most clinically informative term. The calculator's two-way mode assumes a balanced design (equal cell sizes); for unbalanced data, switch to R's car::Anova() with type-II or type-III contrasts.
Repeated-measures ANOVA is the within-subjects analogue: each subject is measured under every condition or at every time point, and between-subject variability is partitioned out as a separate variance component. This dramatically increases statistical power compared to a between-subjects design (fewer subjects are needed to detect the same effect), but it introduces the sphericity assumption: the variances of the pairwise differences between conditions must be equal. Mauchly's test (1940) checks sphericity; when it fails, the Greenhouse-Geisser (1959) and Huynh-Feldt (1976) corrections shrink the degrees of freedom by an estimated ε ∈ [1/(k − 1), 1] to restore valid inference. The calculator computes both ε values from the contrast-transformed covariance matrix and reports the corrected p-values automatically.
Three assumptions sit behind every ANOVA: independence of observations, normality of residuals within each group, and homogeneity of variances across groups (or sphericity for repeated measures). ANOVA is robust to mild violations, especially with equal cell sizes, but when variances differ substantially Welch's ANOVA (Welch 1951) is the modern default; it does not pool the within-group variance and adjusts the degrees of freedom using the Welch-Satterthwaite formula. When normality fails, Kruskal-Wallis (1952) is the non-parametric counterpart for one-way designs and Friedman's test (1937) for repeated measures. The calculator flags violations in its assumptions panel and suggests the appropriate remedy.
A significant omnibus F tells you that at least one group mean differs from the others, but not which. Post-hoc pairwise comparisons answer that question while controlling the family-wise error rate. Tukey's HSD (Tukey 1949) is the standard for balanced designs because it controls the family-wise error rate exactly under the studentized range distribution. Bonferroni (Dunn 1961) multiplies each raw p-value by the number of comparisons and is the most conservative valid procedure. Holm-Bonferroni (Holm 1979) is a step-down variant that is less conservative without sacrificing rigor. Sidak (1967) assumes independence and is slightly less conservative than Bonferroni. Dunnett's test (1955) is the right choice when every group is compared only to a single control. The calculator returns Bonferroni, Holm, and Sidak adjusted p-values in a sortable table so you can pick by audience.
ANOVA feeds directly into downstream tools. To run the prerequisite Levene or Brown-Forsythe test of variance equality from raw data or summary stats, use the variance calculator with its F-test for equal variances. For a two-group comparison rather than three or more, use the two-sample t-test calculator. To convert the F-statistic into a Cohen's d or correlation r effect size for meta-analysis, use the effect size calculator. To plan sample size for an ANOVA design given a target Cohen's f and power, use the sample size calculator. For full data extraction, assumption checking, and APA-formatted manuscripts from a PhD statistician, our statistical analysis service covers everything end-to-end.
One-way for a single categorical factor with three or more levels; two-way for two crossed factors; repeated for within-subjects designs where each subject is measured under every condition.
One-way: paste each group on its own line. Two-way: paste rows of A_level, B_level, value. Repeated: paste a subject × treatment matrix (rows = subjects, columns = conditions).
Every mode returns a sources-of-variance table with SS, df, MS, F, and exact p. Two-way adds three F-tests (A, B, A × B). Repeated adds Greenhouse-Geisser and Huynh-Feldt sphericity-corrected p-values.
η² (proportion of variance explained), ω² (bias-corrected η²), partial η² (factorial-design default), and Cohen's f (used in power analysis) are all reported.
One-way mode lists every pairwise comparison with Bonferroni, Holm, and Sidak adjusted p-values. Holm-significant pairs are highlighted.
Reproducible code snippets paste straight into RStudio (aov, effectsize, ezANOVA) or Jupyter (statsmodels, pingouin) and APA text uses italicized statistic letters with the conventional p < .001 truncation.
Next step
A PhD statistician handles factorial, mixed, and repeated-measures designs, Tukey HSD and Dunnett post-hocs, sphericity-corrected p-values, planned contrasts, and a publication-ready APA results section.
Our promise: Free re-run and re-write if reviewers question the analysis or reporting.
Timeline
Most projects deliver in under 2 weeks. We confirm an exact date in your quote.
If reviewers push back
If reviewers question the analysis, assumptions, or reporting, we re-run and re-write free.
Confidentiality
NDA available on request before any project discussion. Your data, study design, and manuscript stay private either way.
Want a PhD methodologist to handle the whole project?
Get a complete ANOVA workup with one-way, factorial, mixed, and repeated-measures designs, Tukey HSD and Dunnett post-hocs, sphericity-corrected p-values, contrast analysis, and APA-formatted reporting by a PhD statistician. Free re-run and re-write if reviewers question the analysis or reporting. Pay only after you approve your quote.
F = MS_between / MS_within
MS_between = SS_between / (k − 1), MS_within = SS_within / (N − k). Under the null of equal means, F follows F(k − 1, N − k). Implemented in R as aov(y ~ group) or oneway.test() and in Python as scipy.stats.f_oneway().
SS_total = SS_A + SS_B + SS_AB + SS_within
Three F-tests: main effect of A on df_A = a − 1, main effect of B on df_B = b − 1, interaction A × B on df_AB = (a − 1)(b − 1), all over df_within = ab(n − 1) in a balanced design. R: aov(y ~ A * B). Python: ols(y ~ C(A) * C(B)) + anova_lm(typ=2).
SS_total = SS_subjects + SS_treatment + SS_error
Subject variability is removed as a blocking factor, so the F-test for treatment uses only the treatment-by-subject interaction as error. Greatly increases power vs between-subjects designs. R: ez::ezANOVA(). Python: pingouin.rm_anova().
F* with Welch-Satterthwaite df
Heteroscedasticity-robust one-way ANOVA. Does not pool within-group variance and shrinks df₂ to reflect unequal variances. Modern default when Levene's test rejects homogeneity. R: oneway.test(var.equal = FALSE). Python: pingouin.welch_anova().
η² = SS_factor / SS_total ω² = (SS_factor − df × MS_within) / (SS_total + MS_within)
η² is the raw proportion of variance explained (positively biased). ω² is the bias-corrected version and the modern default. Partial η² = SS_factor / (SS_factor + SS_error) is required for factorial designs because it isolates each factor's contribution.
ε = (tr(HSH))² / [(k − 1) tr((HSH)²)]
Sphericity-correction factor for repeated measures. H = I − (1/k)J is the centering matrix, S is the k × k variance-covariance matrix of the conditions. ε ∈ [1/(k − 1), 1]; multiply both df by ε to correct. Use Greenhouse-Geisser when ε < 0.75, Huynh-Feldt otherwise.
Reporting ANOVA results in APA format requires four elements together: the F statistic with both degrees of freedom, the exact p value, an effect size (eta squared or the less biased omega squared), and the follow-up pairwise comparisons with the correction method named. A significant omnibus F alone only says that some difference exists somewhere; reviewers expect you to say which groups differ. Using three example groups (n = 8 each), a complete write-up looks like this:
A one-way analysis of variance was conducted to compare the outcome across the three groups (N = 24). The omnibus test was statistically significant, F(2, 21) = 54.44, p < .001, η² = .838 (ω² = .817), a large effect. Bonferroni-corrected pairwise comparisons showed that all three groups differed from one another (all p < .001), with means of 14.62, 23.50, and 31.50 respectively.
The ANOVA table in APA format has horizontal rules only and lists Source, SS, df, MS, F, and p, with Between groups, Within groups, and Total rows. The APA Report button above downloads exactly that: a Word document with the Results paragraphs, the APA-ruled ANOVA summary table, group means in the table note, a plain-English interpretation of the F test and effect sizes, and a reporting checklist covering the mistakes committees flag most, such as reporting F without both degrees of freedom or claiming two specific groups differ without a corrected pairwise test.
Analysis of Variance (ANOVA) tests whether the means of three or more groups differ. It partitions the total variance in the data into two parts, the variance between group means and the variance within groups, and computes their ratio, the F-statistic. A large F means the between-group differences are large relative to within-group noise, indicating at least one group mean differs from the others. Ronald A. Fisher developed ANOVA in the 1920s while working at Rothamsted Experimental Station and formalized it in Statistical Methods for Research Workers (1925) and The Design of Experiments (1935).
Whenever you compare three or more group means simultaneously. Running multiple pairwise t-tests inflates the family-wise error rate: with k groups there are k(k − 1)/2 pairs, so at α = .05 the chance of at least one false positive grows quickly. ANOVA provides a single omnibus F-test that controls the family-wise error rate at α. Only after a significant omnibus F do you run post-hoc pairwise comparisons (Tukey HSD, Bonferroni, Holm, or Sidak) to identify which pairs differ.
One-way ANOVA tests a single categorical factor with two or more levels (e.g., three treatment arms). Two-way (factorial) ANOVA tests two factors simultaneously (for example treatment × dose) and provides three F-tests: main effect of A, main effect of B, and the A × B interaction. Repeated-measures (within-subjects) ANOVA compares the same subjects measured under multiple conditions or at multiple time points; it accounts for between-subject variability by treating each subject as their own control, increasing statistical power but introducing the sphericity assumption. The calculator supports all three in a single tabbed UI.
Three assumptions: (1) independence of observations within and between groups; (2) approximately normal residuals within each group (ANOVA is robust to mild non-normality, especially with equal cell sizes); (3) homogeneity of variances across groups, tested with Levene's or Brown-Forsythe's test. Repeated-measures ANOVA additionally requires sphericity, equal variances of the differences between every pair of conditions, tested with Mauchly's test. Violations trigger remedies: Welch's ANOVA for unequal variances, Kruskal-Wallis for non-normal data, Greenhouse-Geisser or Huynh-Feldt corrections for non-sphericity.
F is the ratio of mean square between groups to mean square within groups. Under the null hypothesis of equal population means, F follows an F-distribution with df_between and df_within degrees of freedom. The p-value is the probability of observing an F at least as large as yours if the null is true. A p < .05 rejects the null and suggests at least one group mean differs from the others. F alone does not say which means differ; for that you need post-hoc comparisons. Always report F, both df, the exact p, and an effect size (η², ω², or Cohen's f).
Tukey HSD is the standard for balanced designs and all-pairs comparisons because it controls the family-wise error rate exactly under the studentized range distribution. Bonferroni (multiply each raw p by the number of pairs) is more conservative but always valid. Holm-Bonferroni is a step-down version of Bonferroni that is less conservative without losing rigor. Sidak adjustment (1 − (1 − p)^m) is valid under independence and slightly less conservative than Bonferroni. Use Dunnett's test when comparing every group only to a single control. Scheffé is the most conservative and is reserved for complex contrasts.
Three options. Eta-squared (η² = SS_between / SS_total) is the proportion of total variance explained by the factor and is positively biased upward. Omega-squared (ω²) is the bias-corrected version and is the modern default for psychology and biomedicine. Partial η² (SS_factor / [SS_factor + SS_error]) is what SPSS and JASP report by default and is required in factorial designs because it isolates each factor's contribution. Cohen's f = √(η² / (1 − η²)) is the metric used for power analysis; f = .10 is small, .25 medium, .40 large (Cohen 1988).
Whenever Levene's test (or visual inspection) suggests the group variances are unequal, that is, heteroscedasticity. Welch's ANOVA (Welch 1951) does not pool the within-group variance and adjusts the degrees of freedom downward using the Welch-Satterthwaite approximation. It is the modern default for one-way comparisons when variances are uncertain; the cost is a small loss of power when variances really are equal. The calculator's Welch toggle reports both the standard and Welch's F so you can compare.
Sphericity is the repeated-measures analogue of homogeneity of variances: the variance of the difference between every pair of conditions must be equal. When sphericity fails, the standard F-test inflates Type I error. Mauchly's test detects violations. The Greenhouse-Geisser correction (1959) multiplies the numerator and denominator df by an estimated ε ∈ [1/(k−1), 1] to recover valid inference; the Huynh-Feldt correction (1976) is a slightly less conservative variant. Standard practice: use Greenhouse-Geisser when ε < 0.75 and Huynh-Feldt otherwise. The calculator computes both automatically.
For one-way designs, Kruskal-Wallis (1952) ranks all observations and tests whether the rank-sums differ across groups; it requires only ordinal data and is robust to outliers. For repeated-measures designs, Friedman's test (1937) ranks observations within each subject and tests whether the rank-sums differ across conditions. For factorial designs with two factors, the Aligned Ranks Transformation (ART) ANOVA preserves the ability to test main effects and interactions non-parametrically. All three are implemented in R (kruskal.test, friedman.test, ARTool package) and Python (scipy.stats.kruskal, scipy.stats.friedmanchisquare).
To run the prerequisite Levene or Brown-Forsythe test for equality of variances, see the variance calculator with its built-in F-test. For a two-group comparison instead of three or more, see the two-sample t-test calculator. To convert the F-statistic into a Cohen's d or correlation r effect size for meta-analysis, see the effect size calculator. To plan sample size for an ANOVA design given a target Cohen's f and power, see the sample size calculator. To convert the F to a p-value at custom df, see the p-value calculator. And for confidence intervals on means and contrasts, see the confidence interval calculator.
Reviewed by
Dr. Sarah Mitchell holds a PhD in Biostatistics from Johns Hopkins Bloomberg School of Public Health and has over 15 years of experience in systematic review methodology and meta-analysis. She has authored or co-authored 40+ peer-reviewed publications in journals including the Journal of Clinical Epidemiology, BMC Medical Research Methodology, and Research Synthesis Methods. A former Cochrane Review Group statistician and current editorial board member of Systematic Reviews, Dr. Mitchell has supervised 200+ evidence synthesis projects across clinical medicine, public health, and social sciences. She reviews all Research Gold tools to ensure statistical accuracy and compliance with Cochrane Handbook and PRISMA 2020 standards.
From data cleaning and assumption checks to the full analysis and a publication-ready results section, we handle the numbers so you can focus on the science.
Our promise: Free re-run and re-write if reviewers question the analysis or reporting.
Your project is led by a named PhD methodologist with real credentials and published work.
4.9 / 5 across 1,194+ delivered projects