Post Hoc Test ANOVA Multiple Comparisons 24 min read July 18, 2026
BY: Statistics Fundamentals Team
Reviewed By: Minsa A (Senior Statistics Editor)

Dunnett's Test: When and How to Use It

A pharmaceutical company tests four drug doses against a placebo. An agronomist compares three fertilizer blends to an untreated control plot. A manufacturer evaluates two new production lines against a baseline process. In every case the research question is identical: do any of the treatments differ from the control? That is the exact problem Dunnett's Test was built to solve.

This guide covers the theory, formula, assumptions, three fully worked examples, software code in R and Python, an interactive calculator, and APA reporting format — everything needed to run and interpret Dunnett's Test correctly.

What You'll Learn
  • ✓ What Dunnett's Test is and why it exists
  • ✓ The formula and how the test statistic is computed
  • ✓ All four assumptions and how to check them
  • ✓ Three fully solved examples across different fields
  • ✓ How to run Dunnett's Test in R, Python, and SPSS
  • ✓ How Dunnett's compares to Tukey HSD and Bonferroni
  • ✓ How to write up results in APA format

What Is Dunnett's Test?

Definition

Dunnett's Test is a post hoc multiple comparison procedure used after a one-way ANOVA to compare each of several treatment groups to a single designated control group. It controls the family-wise error rate (FWER) at α across all comparisons simultaneously, while being more statistically powerful than all-pairwise tests when only control-vs-treatment differences are of interest. It was introduced by Charles Dunnett in his 1955 paper in the Journal of the American Statistical Association.

H₀: μᵢ = μ₀ for each treatment i  |  H₁: μᵢ ≠ μ₀

After running a one-way ANOVA and finding a significant F-statistic, you know at least one group mean differs — but not which one. Post hoc tests answer that follow-up question. The choice of test depends entirely on what comparisons the study was designed to make.

When you need every group compared to every other group, Tukey's HSD or the Bonferroni correction are appropriate. When one group is a natural control and the only question is whether each treatment differs from it, Dunnett's Test is the right tool — and it delivers greater power for each individual comparison.

1955
Published by Charles Dunnett in JASA
k−1
Comparisons made (treatments vs. one control)
α
Family-wise error rate controlled simultaneously
> Tukey
Statistical power per comparison

Why Dunnett's Test Exists: The Multiple Comparisons Problem

Every statistical test at α = 0.05 carries a 5% false-positive risk. Run multiple tests on the same dataset and that risk compounds. With k treatment groups and one control, you face k−1 pairwise comparisons. If each uses α = 0.05 independently, the family-wise error rate reaches 1 − (0.95)^(k−1). With four treatments that figure climbs to roughly 14% — a 14% chance of at least one spurious result in the set.

Dunnett's Test adjusts its critical values so the probability of any false rejection across all k−1 comparisons stays exactly at α. It does this more efficiently than the Bonferroni correction because it uses the exact joint distribution of the test statistics, which are correlated through the shared control group and shared MSE. That correlation means the actual joint error rate under Bonferroni is below α — making Bonferroni needlessly conservative. Dunnett's Test exploits that correlation to set tighter (less conservative) critical values and gain power.

💡
Power Advantage Explained

With 5 treatment groups and 1 control, Dunnett's Test accounts for 5 comparisons; Tukey HSD accounts for 15. Because Tukey must guard against more potential false positives, its critical value is larger — meaning a bigger observed difference is required to reach significance. Dunnett's narrower critical values directly reflect the smaller comparison set, so each individual test is more powerful.

The Dunnett's Test Formula

The test statistic for comparing treatment group i to the control group (group 0) is:

Dunnett's Test Statistic
dᵢ = (ȳᵢ − ȳ₀) / SE
where the standard error is:
SE = √[ MSE · (1/nᵢ + 1/n₀) ]
ȳᵢ = mean of treatment group i ȳ₀ = mean of control group MSE = mean squared error from ANOVA nᵢ = sample size of treatment group i n₀ = sample size of control group

The statistic dᵢ follows a multivariate t-distribution. Its critical value d* is obtained from Dunnett's table at significance level α, with k (the number of treatment groups, not counting the control) and ν = N − k − 1 degrees of freedom where N is the total sample size across all groups.

⚠️
Use Dunnett's Critical Value — Not the Standard t-Table

The critical value d* is not the same as the ordinary t-critical value. Dunnett's critical value is larger because it accounts for the simultaneous probability over all k−1 comparisons. Using the standard t-table underestimates the required threshold and inflates the family-wise error rate. Use the Dunnett's critical value table or statistical software.

Decision Rule

For each treatment group i, compare the absolute value |dᵢ| to the two-tailed critical value d*(α, k, ν):

  • If |dᵢ| ≥ d* → Reject H₀. Statistically significant evidence that treatment i differs from the control.
  • If |dᵢ| < d* → Fail to reject H₀. Insufficient evidence of a difference at the chosen α level.

For a one-tailed test — for example, testing whether a drug reduces blood pressure rather than merely changes it — compare the signed dᵢ to the one-tailed critical value and reject only when the sign matches the predicted direction.

Simultaneous Confidence Intervals

Dunnett's procedure also produces simultaneous 95% confidence intervals for each difference μᵢ − μ₀. All k−1 intervals jointly cover the true differences with probability 1 − α:

Dunnett Simultaneous Confidence Interval
(ȳᵢ − ȳ₀) ± d* · √[ MSE · (1/nᵢ + 1/n₀) ]

An interval that excludes zero indicates a statistically significant difference between that treatment and the control. Report these intervals alongside p-values — they communicate the direction and plausible magnitude of each effect, not just whether it clears a significance threshold.

Assumptions of Dunnett's Test

Dunnett's Test shares the assumptions of one-way ANOVA. Violating them can produce inaccurate p-values and incorrect conclusions.

1

Independence

Observations must be independent within and across all groups. Each subject or experimental unit should belong to exactly one group. Repeated measures or matched designs require a repeated-measures ANOVA framework with an appropriately adapted post hoc procedure.

2

Normality Within Groups

Data within each group should be approximately normally distributed. The test tolerates moderate departures from normality when group sizes reach around 15–20 observations. Verify with Shapiro-Wilk or inspect Q-Q plots. With small samples and clear non-normality, a non-parametric alternative such as Dunn's test with a control correction is more reliable. See the full guide to normality tests.

3

Homogeneity of Variances

All groups should have approximately equal population variances — the homoscedasticity assumption also required by ANOVA. The pooled MSE used in the Dunnett formula is only a valid variance estimate when this holds. Check with Levene's test before proceeding. When variances are unequal, consider a log or square-root transformation, or use a modified Dunnett procedure with group-specific variance estimates available in some software packages. See statistical assumptions for practical remediation steps.

4

Pre-Specified Control Group

One group must be identified as the control before data collection. Selecting the "control" post-hoc — for example by choosing the group with the lowest mean — invalidates the critical values and inflates the Type I error rate. The control should be established by the study design, not determined by the data.

Robustness in Practice

Dunnett's Test is reasonably robust to mild normality violations when group sizes are roughly equal and at least 15. Moderate imbalance (largest-to-smallest ratio under 2:1) is usually acceptable. The equal variance assumption matters more — when it fails, the pooled MSE is not a valid shared variance estimate and the test statistics become unreliable.

When to Use Dunnett's Test

Post Hoc Test Selection: Decision Guide

Is there one designated control group and are comparisons needed only against it — not between treatments?
✓ Use Dunnett's Test
Do you need all pairwise comparisons — every group vs. every other group?
Use Tukey HSD instead
Are there very few comparisons planned before the study and no control group structure?
Consider Bonferroni correction
Do you need arbitrary complex contrasts or have severely heterogeneous variances?
Consider Scheffé's test

Real-World Applications

💊

Clinical Pharmacology

Comparing low, medium, and high drug doses to a placebo control for blood pressure reduction. Each dose is a treatment group; the placebo is the control.

🌱

Agriculture

Testing four fertilizer formulations against an untreated control plot for crop yield. The control-vs-treatment structure matches Dunnett's Test exactly.

🏭

Quality Control

Evaluating two new manufacturing processes against the established baseline process for defect rate. The baseline is the pre-specified control.

🧬

Toxicology

Exposing groups to three concentrations of a compound versus a vehicle control, measuring enzyme activity. Classic dose-response design.

🎓

Education Research

Testing three new teaching interventions against a traditional instruction control group for exam performance outcomes.

📈

Marketing Science

Comparing conversion rates for three new landing page designs against the current live page in a controlled web experiment.

Worked Example 1: Drug Efficacy Study

This is the most common application context. A pharmaceutical company tests three drug doses against a placebo control, measuring systolic blood pressure (mmHg) after four weeks of treatment.

Worked Example 1 — Pharmacology

Four groups (control + 3 doses), n = 10 per group. ANOVA: F(3, 36) = 8.42, p < .001, MSE = 64.0, df_error = 36. Test at α = 0.05, two-tailed.

GroupnMean (ȳ)SD
Control (Placebo)10130.27.9
Drug A (Low Dose)10124.68.1
Drug B (Mid Dose)10118.38.4
Drug C (High Dose)10112.17.6
1

Hypotheses (per drug): H₀: μᵢ = μ₀ (drug i has same BP as placebo) | H₁: μᵢ ≠ μ₀ (two-tailed)

2

ANOVA result: F(3, 36) = 8.42, p < .001 — significant overall effect. The ANOVA error df = 36 and MSE = 64.0 are used in Dunnett's formula.

3

Standard Error (equal group sizes):
SE = √[MSE × (1/nᵢ + 1/n₀)] = √[64.0 × (1/10 + 1/10)] = √[64.0 × 0.2] = √12.8 = 3.578

4

Dunnett's d statistics:
Drug A: d₁ = (124.6 − 130.2) / 3.578 = −5.6 / 3.578 = −1.565
Drug B: d₂ = (118.3 − 130.2) / 3.578 = −11.9 / 3.578 = −3.326
Drug C: d₃ = (112.1 − 130.2) / 3.578 = −18.1 / 3.578 = −5.059

5

Critical value: From Dunnett's table at α = 0.05 (two-tailed), k = 3 treatments, ν = 36 df: d* ≈ 2.47

6

Decisions:
Drug A: |−1.565| = 1.565 < 2.47 → Not significant. Insufficient evidence Drug A differs from placebo.
Drug B: |−3.326| = 3.326 > 2.47 → Significant. Drug B reduces BP vs. placebo.
Drug C: |−5.059| = 5.059 > 2.47 → Significant. Drug C reduces BP vs. placebo.

✅ Conclusion: At α = 0.05, Dunnett's Test shows Drug B and Drug C produce significantly lower systolic blood pressure than the placebo control. Drug A (low dose) does not reach significance at this sample size — the observed 5.6 mmHg reduction could plausibly reflect sampling variation alone.

Critical value from: Dunnett, C.W. (1955). A multiple comparison procedure for comparing several treatments with a control. Journal of the American Statistical Association, 50(272), 1096–1121. Full critical value table at Dunnett's Table.

Worked Example 2: Agricultural Fertilizer Trial

An agronomist tests four fertilizer treatments against an untreated control, recording wheat yield (kg per plot) across a growing season. The control-versus-treatment design is standard in field trials and maps directly onto Dunnett's Test.

Worked Example 2 — Agriculture

Five groups (control + 4 fertilizers), n = 8 per group. ANOVA: F(4, 35) = 7.18, p < .001, MSE = 18.25, df_error = 35. Test at α = 0.05.

GroupnMean Yield (kg)
Control (No Fertilizer)841.2
Fertilizer A (Nitrogen-heavy)848.7
Fertilizer B (Balanced NPK)853.1
Fertilizer C (Potassium-heavy)844.4
Organic Blend849.3
1

Standard Error:
SE = √[18.25 × (1/8 + 1/8)] = √[18.25 × 0.25] = √4.5625 = 2.136

2

Dunnett's d statistics (ȳ₀ = 41.2):
Fert A: d = (48.7 − 41.2) / 2.136 = 7.5 / 2.136 = 3.511
Fert B: d = (53.1 − 41.2) / 2.136 = 11.9 / 2.136 = 5.571
Fert C: d = (44.4 − 41.2) / 2.136 = 3.2 / 2.136 = 1.498
Organic: d = (49.3 − 41.2) / 2.136 = 8.1 / 2.136 = 3.792

3

Critical value: k = 4 treatments, ν = 35, α = 0.05 (two-tailed): d* ≈ 2.59

4

Decisions:
Fert A: 3.511 > 2.59 → Significant
Fert B: 5.571 > 2.59 → Significant
Fert C: 1.498 < 2.59 → Not significant
Organic: 3.792 > 2.59 → Significant

✅ Conclusion: Fertilizers A, B, and the Organic Blend each produce significantly higher wheat yield than the untreated control (α = 0.05). The potassium-heavy Fertilizer C does not show a statistically significant yield advantage in this trial.

Dunnett's Test vs. Tukey HSD vs. Bonferroni vs. Scheffé

Choosing among post hoc tests is one of the most common sources of confusion in applied statistics. The comparison below covers the four main options across every dimension that matters for a real analysis decision.

Feature Dunnett's Test Tukey HSD Bonferroni Scheffé
Comparisons made k−1 (each treatment vs. control only) All k(k−1)/2 pairs Any pre-specified set All possible contrasts
FWER control Exact at α Exact at α Conservative (≤ α) Conservative (≤ α)
Statistical power Highest for control comparisons Moderate Low (conservative) Lowest
Requires control group Yes — mandatory No No No
Best use case Designed treatments-vs-control study Exploratory all-pair comparisons Few pre-planned comparisons Complex unplanned contrasts
Critical value source Dunnett's table / software Studentized range table t-table at α/m F-table

Step-by-Step Procedure

1

Verify the Study Design

Confirm you have one pre-specified control group and two or more treatment groups. If you need all pairwise comparisons, switch to Tukey HSD. If the control was determined by looking at the data, Dunnett's critical values are invalid.

2

Check Assumptions

Run Levene's test for homogeneity of variance. Inspect Shapiro-Wilk results or Q-Q plots for normality within each group. Address violations before proceeding — transformation or a non-parametric approach if needed.

3

Run One-Way ANOVA

Conduct the overall F-test across all groups. Record the MSE and the error degrees of freedom ν = N − k − 1. These values feed directly into the Dunnett formula. See the full ANOVA guide for calculation steps.

4

Calculate the Standard Error

Use SE = √[MSE × (1/nᵢ + 1/n₀)]. For equal sample sizes (the balanced case) this simplifies to SE = √[2·MSE/n]. The MSE comes from the full ANOVA — pooled across all groups, not just the pair being compared.

5

Compute d Statistics for Each Treatment

For each treatment group i, compute dᵢ = (ȳᵢ − ȳ₀) / SE. Track the sign — negative means the treatment mean is below the control, positive means above. For a two-tailed test, use the absolute value |dᵢ| when comparing to d*.

6

Find the Critical Value d*

Look up d*(α, k, ν) in the Dunnett's critical value table, where k is the number of treatment groups (not counting the control) and ν is the ANOVA error degrees of freedom. For values between table entries, interpolate or use software.

7

Make Decisions and Report

For each comparison, report the mean difference, the d statistic, significance at α, and the 95% simultaneous confidence interval. Include Cohen's d effect sizes. See APA Reporting Format below.

Dunnett's Critical Values Reference Table (α = 0.05, Two-Tailed)

This table gives approximate two-tailed critical values d* at α = 0.05. Rows are error degrees of freedom (ν) from the ANOVA; columns are the number of treatment groups k, not counting the control. For the complete table including α = 0.01 and one-tailed values, see Dunnett's Table.

ν (Error df) k = 1 k = 2 k = 3 k = 4 k = 5 k = 6 k = 8 k = 10
52.5713.033.293.483.623.733.904.02
62.4472.863.103.263.393.493.653.76
102.2282.572.762.892.993.073.203.29
152.1312.442.612.732.822.893.013.09
202.0862.382.542.652.732.802.912.99
242.0642.352.512.612.702.762.872.94
302.0422.322.472.582.662.722.822.89
402.0212.292.442.542.622.682.782.85
602.0002.272.412.512.582.642.742.81
1201.9802.242.382.472.552.602.702.77
1.9602.212.352.442.512.562.652.72
Quick Reference: How to Look Up d*
  • Count your treatment groups (k). Do not count the control group in k.
  • Find ν from the ANOVA output: ν = N − (k+1) for a balanced one-way design.
  • Read d* at the intersection of your ν row and k column in the table above.
  • For exact values at any ν and k, use the qDunnett() function in R's DescTools package.
  • For α = 0.01 or one-tailed tests, use a separate table or software — the values above are two-tailed α = 0.05 only.

Running Dunnett's Test in Software

R

The DescTools package provides the most direct implementation. The multcomp package offers additional flexibility for contrast plots and confidence intervals.

R — DescTools (Recommended)
# install.packages("DescTools")
library(DescTools)

# Data: Drug efficacy study
bp <- c(
  131,129,133,128,132,130,127,131,133,126,  # Control
  125,123,126,122,125,124,121,126,127,121,  # Drug A
  118,117,120,116,119,118,115,120,119,117,  # Drug B
  112,111,114,110,113,112,110,113,111,114   # Drug C
)
grp <- factor(rep(c("Control","DrugA","DrugB","DrugC"), each=10))

# Step 1: One-way ANOVA
model <- aov(bp ~ grp)
summary(model)

# Step 2: Dunnett's Test — specify the control group
DunnettTest(x=bp, g=grp, control="Control", conf.level=0.95)
R — multcomp (For CI Plots)
library(multcomp)
model <- aov(bp ~ grp)

# Dunnett contrasts vs. control (alphabetically first)
dc <- glht(model, linfct=mcp(grp="Dunnett"))
summary(dc)      # adjusted p-values
confint(dc)     # simultaneous confidence intervals
plot(confint(dc))  # CI plot

Python

Python — scikit-posthocs
# pip install scikit-posthocs scipy
import numpy as np
import pandas as pd
from scipy import stats
import scikit_posthocs as sp

bp_data = {
    "Control": [131,129,133,128,132,130,127,131,133,126],
    "DrugA":   [125,123,126,122,125,124,121,126,127,121],
    "DrugB":   [118,117,120,116,119,118,115,120,119,117],
    "DrugC":   [112,111,114,110,113,112,110,113,111,114]
}

values = np.concatenate(list(bp_data.values()))
labels = np.repeat(list(bp_data.keys()), [len(v) for v in bp_data.values()])

# ANOVA first
f, p = stats.f_oneway(*bp_data.values())
print(ff"F = {f:.3f}, p = {p:.4f}")

# Dunnett's Test vs. control
df = pd.DataFrame({"val": values, "group": labels})
result = sp.posthoc_dunnett(df, val_col="val",
                             group_col="group",
                             control="Control")
print(result)

SPSS

  1. Go to Analyze → Compare Means → One-Way ANOVA
  2. Move the dependent variable to the Dependent List and the grouping variable to Factor
  3. Click Post Hoc
  4. Under "Tests that assume equal variance," check Dunnett
  5. In the "Control Category" field, specify whether control is the first or last category, or enter the value directly
  6. Set α = 0.05 and click Continue → OK

Worked Example 3: Manufacturing Quality Control

Case Study — Industrial Context

Production Line Defect Rate Comparison

A factory runs its established baseline process (control) alongside three modified processes aimed at reducing defects. Each runs for n = 12 batches. ANOVA: F(3, 44) = 6.31, p = .001, MSE = 2.14, df_error = 44.

ProcessMean Defect Rate (%)d statistic|d| vs. d* = 2.51Decision
Baseline (Control)8.4
Process A6.7−2.682.68 > 2.51Significant ✓
Process B5.9−3.953.95 > 2.51Significant ✓
Process C7.8−0.950.95 < 2.51Not significant

SE = √[2.14 × (2/12)] = √0.357 = 0.597. Critical value d*(0.05, k=3, ν=44) ≈ 2.51. Processes A and B achieve significantly lower defect rates than the baseline; Process C does not reach significance.

Effect Size: Cohen's d for Each Comparison

Statistical significance tells you whether a difference is real given your sample size. Effect size tells you how large that difference is in practical terms. For each Dunnett comparison, report Cohen's d:

Cohen's d for Each Dunnett Comparison
Cohen's d = (ȳᵢ − ȳ₀) / √MSE
√MSE = pooled SD estimate from ANOVA |d| ≈ 0.2 = small effect |d| ≈ 0.5 = medium effect |d| ≈ 0.8 = large effect

For Drug C in Example 1: Cohen's d = (112.1 − 130.2) / √64 = −18.1 / 8 = −2.26. This is a very large effect — the blood pressure reduction is more than twice the pooled standard deviation. A statistically significant result with a tiny effect size may have limited clinical or practical relevance; always report both. See the full effect size guide for more on interpreting Cohen's d.

APA Reporting Format

The APA Publication Manual (7th edition) does not specify a unique template for Dunnett's Test, so follow the general guidance for post hoc comparisons. The key elements are the ANOVA F-statistic, the name of the post hoc test, group means and SDs, mean differences, d statistics, adjusted p-values, and confidence intervals.

APA Reporting Template
  • ANOVA: "A one-way ANOVA revealed a significant effect of [factor], F([k], [ν]) = [F value], p = [p value], η² = [effect size]."
  • Post hoc: "Dunnett's test was used to compare each treatment to the control group (α = .05)."
  • Significant result: "[Treatment i] (M = [mean], SD = [sd]) differed significantly from the control (M = [mean], SD = [sd]), d = [statistic], adjusted p = [p], 95% CI [[lower], [upper]], Cohen's d = [effect size]."
  • Non-significant result: "[Treatment j] (M = [mean], SD = [sd]) did not differ significantly from the control, d = [statistic], adjusted p = [p]."
Full APA Write-Up — Drug Efficacy Example

A one-way ANOVA found a significant effect of drug treatment on systolic blood pressure, F(3, 36) = 8.42, p < .001, η² = .41. Dunnett's test was used to compare each drug dose to the placebo control at a family-wise α = .05. Drug B (M = 118.3, SD = 8.4) differed significantly from the placebo (M = 130.2, SD = 7.9), d = −3.33, adjusted p = .008, 95% CI [−20.7, −3.1], Cohen's d = −1.49. Drug C (M = 112.1, SD = 7.6) also differed significantly from placebo, d = −5.06, adjusted p < .001, 95% CI [−26.9, −9.3], Cohen's d = −2.26. Drug A (M = 124.6, SD = 8.1) did not differ significantly from placebo, d = −1.57, adjusted p = .29.

Interactive Dunnett's Test Calculator

Enter group means, sample size per group (balanced design), and the ANOVA MSE to compute all Dunnett d statistics and compare each to the approximate critical value. For exact critical values at any ν and k, use R or the full Dunnett's table.

Dunnett's Test Calculator (Balanced Design)

Common Mistakes and How to Avoid Them

MistakeWhy It MattersCorrect Approach
Using Tukey HSD when only control comparisons are needed Tukey is more conservative; loses power for each test Use Dunnett's Test when the design has one pre-specified control
Using the ordinary t-critical value instead of d* FWER is not controlled — inflates Type I error Look up d* from Dunnett's table at the correct α, k, and ν
Selecting the "control" after seeing the data Data-snooping invalidates the critical values entirely Designate the control group in the study protocol before data collection
Counting the control group in k Wrong degrees of freedom → wrong critical value k = number of treatment groups only, excluding the control
Not reporting effect sizes Significance alone does not convey practical importance Report Cohen's d and 95% simultaneous confidence intervals
Skipping the ANOVA and assumption checks Missed violations of homoscedasticity or normality Run ANOVA first; check Levene's test and Q-Q plots before Dunnett's

Frequently Asked Questions

Dunnett's Test is a post hoc multiple comparison procedure used after a one-way ANOVA when there is one designated control group and each treatment group is compared only with that control. It is ideal for experiments with a placebo, baseline, or reference group. Because it tests only treatment-versus-control comparisons, it provides greater statistical power than methods designed for all possible pairwise comparisons.
Dunnett's Test performs only k − 1 comparisons, while Tukey HSD evaluates every possible pair of group means, requiring k(k − 1)/2 comparisons. Since Dunnett adjusts for fewer simultaneous tests, its critical values are smaller, making it easier to detect true treatment effects while still controlling the family-wise error rate.
Traditionally, yes. The classic protected approach performs Dunnett's Test only after obtaining a significant ANOVA. However, because Dunnett's procedure independently controls the family-wise error rate, many statisticians apply it directly when treatment-versus-control comparisons were planned before collecting the data. It is still good practice to report the ANOVA results alongside the Dunnett comparisons.
When the equal variance assumption is violated, the pooled mean square error (MSE) used by the standard Dunnett procedure is no longer appropriate. Possible alternatives include variance-stabilizing transformations, Welch-based procedures with Dunnett adjustments when available, or nonparametric methods such as the Kruskal-Wallis test followed by Dunn's test.
Yes. The standard error formula, SE = √[MSE × (1/ni + 1/n0)], naturally accommodates different sample sizes for each treatment group and the control group. The equal variance assumption must still hold, and large imbalances in sample size make checking assumptions even more important.
The Bonferroni correction simply divides the significance level by the number of comparisons. Dunnett's Test instead uses the exact joint distribution of the correlated treatment-versus-control comparisons, producing less conservative critical values and therefore greater statistical power while maintaining the same family-wise error rate.
A two-tailed Dunnett's Test evaluates whether each treatment differs from the control in either direction. A one-tailed version tests only whether treatments are specifically greater than or less than the control. One-tailed tests are more powerful but should only be used when the expected direction was specified before examining the data.

Summary

Dunnett's Test — Key Points
  • Use Dunnett's Test when you have one control group and need to compare each treatment to it — not to each other.
  • The test statistic is dᵢ = (ȳᵢ − ȳ₀) / √[MSE × (1/nᵢ + 1/n₀)]. The MSE comes from the full one-way ANOVA.
  • Compare each |dᵢ| to d*(α, k, ν) from Dunnett's table — not to the ordinary t-critical value.
  • Dunnett's Test is more powerful than Tukey HSD and Bonferroni for control-vs-treatment comparisons because it accounts for fewer simultaneous tests.
  • Four assumptions: independence, normality within groups, equal variances, and a control group designated before data collection.
  • Report ANOVA F-statistic, Dunnett d-statistics, adjusted p-values, simultaneous 95% CIs, and Cohen's d for each comparison.
  • In R, use DunnettTest() from DescTools or glht(model, mcp(group="Dunnett")) from multcomp.
Primary references: Dunnett, C.W. (1955). A multiple comparison procedure for comparing several treatments with a control. Journal of the American Statistical Association, 50(272), 1096–1121. | Dunnett, C.W. (1964). New tables for multiple comparisons with a control. Biometrics, 20(3), 482–491. | Bretz, F., Hothorn, T., & Westfall, P. (2010). Multiple Comparisons Using R. CRC Press. | NIST Engineering Statistics Handbook: Dunnett's Test