--- title: "Posterior pupil trajectories and declared estimands" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Posterior pupil trajectories and declared estimands} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 4.5 ) library(gp3bayes) ``` ## Lightweight posterior-draw contract The estimand layer operates on posterior prediction draws. For documentation and tests, a deterministic draw matrix can be used without compiling Stan. ```{r estimand-draws} grid <- expand.grid( .event_time = seq(0, 1, length.out = 21), .condition = factor(c("control", "treatment")), KEEP.OUT.ATTRS = FALSE ) set.seed(2026) mu <- ifelse(grid$.condition == "treatment", 0.15, 0) + 0.25 * sin(pi * grid$.event_time) draws <- matrix( rnorm(300 * nrow(grid), rep(mu, each = 300), 0.06), nrow = 300 ) pred <- as_pupil_prediction_draws(draws, grid, "millimetres") ``` ## Trajectory uncertainty ```{r trajectory} trajectory <- estimate_pupil_trajectory(pred, probability = 0.95) head(pupil_trajectory_table(trajectory)) ``` Pointwise intervals describe uncertainty at each grid value. A finite-grid simultaneous band can be requested explicitly; it is qualified as a grid-based posterior band rather than a universal continuous-time guarantee. ## Declared contrasts and windows ```{r declared-estimands} contrast <- pupil_condition_contrast( pred, contrast = c("treatment", "control"), threshold = 0.10 ) window <- estimate_pupil_window(pred, window = c(0.3, 0.8)) auc <- estimate_pupil_auc(pred, window = c(0.3, 0.8)) peak <- estimate_pupil_peak(pred, window = c(0.3, 0.8)) latency <- estimate_pupil_peak_latency(pred, window = c(0.3, 0.8)) head(as.data.frame(contrast)) as.data.frame(window) as.data.frame(auc) as.data.frame(peak) as.data.frame(latency) ``` Windows are supplied by the analyst. The package does not search across time for the most favourable interval and relabel it confirmatory. Peak and peak-latency summaries propagate posterior-draw uncertainty within the declared evaluation grid.