Two-way ANOVA + Tukey letters — with interaction (ToothGrowth)

MinutePlot® and R on the same data. MinutePlot version 1.0.0; R 4.5.2.

Dataset

  • ToothGrowth — Odontoblast length in 60 guinea pigs by supplement (orange juice, ascorbic acid) and dose (0.5, 1.0, 2.0 mg/day), 10 per cell (R: datasets::ToothGrowth; Crampton 1947).
  • Data format for MinutePlot: toothgrowth_minuteplot.csv — arranged exactly as the app’s data template for this test expects (paste it into the app).
  • Data format for R: toothgrowth_r.csv — the long-format file the R script reads (keep it in the script’s folder).
  • R built-in: the script loads ToothGrowth with data().

Setup

In MinutePlot:

  • Workbench → Two-way ANOVA → paste toothgrowth_minuteplot.csv (supp down the rows, dose 0.5 / 1.0 / 2.0 as column blocks, ten replicates per cell).
  • Post-hoc test: Tukey HSD (the default) · significance level α = 0.05 (the default) → Confirm and Analyze.
  • Read the ANOVA table and the cell means with letters from the results; the page compares the all-cells letter set.

In R:

  • Install once: install.packages(c("emmeans", "multcomp", "multcompView")); then run toothgrowth_twoway.R top to bottom (source it, or paste it into the console) with the R data file in the same folder.
  • R 4.5.2 and the package versions in the page header; each script prints the versions it runs under.

The analysis:

  • Two-way ANOVA of len by supp (2 levels) and dose (3 levels, as a factor) with interaction, n = 10 per cell, α = 0.05.
  • Pairwise comparisons of the 6 cell means: Tukey HSD; compact letters from the significant pairs -- this dataset has a significant interaction and several letter groups.

Side-by-side results

ANOVA summary

MinutePlot®

TermdfFp
supp1, 5415.57200.0002
dose2, 5492.0000< 0.0001
supp × dose2, 544.10700.0219

R

TermdfFp
supp1, 5415.57200.0002
dose2, 5492.0000< 0.0001
supp × dose2, 544.10700.0219

R values: verified in R 4.5.2 (see the verdict).

Cell means with significance letters

MinutePlot®

suppdoseMeanLetters
VC0.57.980c
VC1.016.770b
VC2.026.140a
OJ0.513.230b
OJ1.022.700a
OJ2.026.060a

R

suppdoseMeanLetters
VC0.57.980a
VC1.016.770b
VC2.026.140c
OJ0.513.230b
OJ1.022.700c
OJ2.026.060c

R values: verified in R 4.5.2 (see the verdict).

In the app each cell carries a compound label such as Aa (Aa1 with three factors): uppercase compares the first factor within each level of the second, lowercase the reverse (the digit the third factor). The plain letters shown here are MinutePlot’s single letter set over all cells, the direct counterpart of R’s cld(). MinutePlot assigns “a” to the highest mean, R to the lowest — a display convention, not a discrepancy; the grouping (which cells share a letter) is what is compared.

Verdict

supp, dose and supp × dose agree with R’s printed values (F 15.572, 92.000, 4.107; p 0.0002, < 0.0001, 0.0219); letter groupings identical -- three groups across the six cells.

R script

toothgrowth_twoway.R — each script loads its data, prints its versions and the R-side tables shown above, in page order; no plotting.

R values verified in R 4.5.2 (emmeans 2.0.4, multcomp 1.4-32, multcompView 0.1-12, ez 4.5.0, Hmisc 5.3.0, pls 2.9.0, drc 3.0-1, car 3.1-5) on 16–17 September 2026.