# Linear mixed model on log volume: a growth line per mouse (random intercept and slope), fixed group x day.
# Uses every measurement up to culling; assumes the missing measurements are missing at random given the
# observed data, which holds when culling is triggered by the measured volume (a size limit).
# R 4.3.3, lme4 and lmerTest.
suppressMessages(library(lmerTest))
d <- read.csv("tumours.csv")
d$group <- factor(d$group, levels = c("vehicle", "drug"))
fit <- lmer(log(volume_mm3) ~ day * group + (day | mouse), data = d)
co <- summary(fit)$coefficients["day:groupdrug", ]
ci <- confint(fit, parm = "day:groupdrug", method = "Wald")
cat(sprintf("Difference in growth rate (drug - vehicle): %.4f per day (95%% CI %.4f to %.4f), Satterthwaite df %.1f, p = %s\n",
            co["Estimate"], ci[1], ci[2], co["df"], formatC(signif(co["Pr(>|t|)"], 2), format = "g")))
