# MinutePlot validation -- Two-way ANOVA + Tukey letters, with interaction (ToothGrowth, supp x dose)
# Install once (skip on later runs):
#   install.packages(c("emmeans", "multcomp", "multcompView"))   # exactly what THIS script uses

# Load packages (every session):
library(emmeans); library(multcomp); library(multcompView)

# Versions (compare against those stated on this page):
cat(R.version.string, "\n")
for (p in c("emmeans", "multcomp", "multcompView")) cat(p, as.character(packageVersion(p)), "\n")

# Load data:
d <- ToothGrowth                 # built-in; or: d <- read.csv("toothgrowth_r.csv")  (same folder as script)
d$dose <- factor(d$dose)

# Analysis (one print per table shown on the page, in page order):
fit <- aov(len ~ supp * dose, data = d)
print(summary(fit))
print(multcomp::cld(emmeans(fit, ~ supp * dose), adjust = "tukey", Letters = letters, alpha = 0.05))
