## ----leakage-setup------------------------------------------------------------ source(system.file("research", "october_2026_participant_leakage.R", package = "gp3ml"), local = TRUE) audit <- gp3ml_october_leakage_audit(repeats = 24L, seed = 20261022L) stopifnot(nrow(audit) == 48L, all(audit$shared_participants[audit$split == "participant"] == 0L)) aggregate(cbind(heldout_accuracy, shared_participants) ~ split, data = audit, FUN = mean) ## ----participant-identity-leakage-figure, fig.width=9, fig.height=4, fig.cap="Original synthetic demonstration. Observation-wise evaluation permits participant identity overlap, whereas the participant-disjoint evaluation has zero shared participants. Repeats are dependent."---- gp3ml_october_plot_leakage(audit) ## ----participant-identity-paired-figure, fig.width=7, fig.height=4, fig.cap="Accuracy by repeated partition on a fixed synthetic generating dataset; connecting lines summarize dependent algorithmic splits, not uncertainty intervals."---- row_scores <- audit$heldout_accuracy[audit$split == "observation"] participant_scores <- audit$heldout_accuracy[audit$split == "participant"] graphics::plot(seq_along(row_scores), row_scores, type = "b", pch = 16, ylim = c(0, 1), xlab = "Dependent partition repeat", ylab = "Held-out accuracy", col = "#24577B", main = "Row versus participant generalization") graphics::lines(seq_along(participant_scores), participant_scores, type = "b", pch = 1, col = "#C05B43") graphics::abline(h = 0.5, lty = 3, col = "gray50") graphics::legend("bottomleft", legend = c("Rows", "Participants"), col = c("#24577B", "#C05B43"), lty = 1, pch = c(16, 1), bty = "n")