--- title: "Data Quality plot gallery and reporting clinic" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Data Quality plot gallery and reporting clinic} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>", fig.width = 8, fig.height = 4.8) ``` ```{r} library(eyeprocess) ``` # Purpose This gallery complements the main standardized data-quality guide with visual, manuscript-facing examples. It uses deterministic synthetic validation data, not empirical performance claims. ```{r data} validation <- simulate_gaze_quality_calibration( seed = 20260918, samples_per_target = 18, nominal_sampling_hz = 60 ) quality <- create_gaze_quality_report( validation, by = c("profile", "target_id"), valid = "valid", missing_reason = "missing_reason", nominal_sampling_hz = 60, bcea_probability = 0.68, preprocessing_spec = "synthetic raw validation samples; no interpolation", quality_rules = "descriptive review only" ) center_target <- quality[quality$target_id == 5, ] ``` # Accuracy ```{r accuracy} plot_gaze_accuracy(center_target) ``` Higher target-referenced error means recorded gaze is farther from the known target. Accuracy is not precision: a stable offset can be precise but inaccurate. # RMS sample-to-sample precision ```{r precision} plot_gaze_precision(center_target) ``` RMS-S2S describes successive-sample fluctuation during stable gaze. Do not calculate or interpret it across target changes or intended saccades. The implementation never bridges a missing sample. # BCEA ```{r bcea} plot_bcea(center_target) ``` BCEA summarizes spatial dispersion as an area. The probability level must be reported; the canonical default is 0.68. BCEA is not a target-referenced accuracy statistic. # Sampling intervals ```{r sampling} irregular <- validation[ validation$profile == "irregular_sampling" & validation$target_id == 5, ] plot_sampling_intervals(irregular, time = "timestamp_ms", time_unit = "ms") ``` Long intervals describe realized timebase irregularity. When a nominal rate is supplied, `long_interval_count` records anomalously long intervals and `dropped_interval_count` estimates how many nominal samples those gaps represent. Neither quantity is a direct hardware packet-loss measurement. # Four-panel quality dashboard ```{r dashboard, fig.width=9, fig.height=7} plot_gaze_quality_dashboard(center_target) ``` The dashboard is a descriptive review surface. It is not a composite score and does not make exclusion decisions. # Review-rule sensitivity ```{r sensitivity} reviewed <- create_gaze_quality_report( validation, by = c("profile", "target_id"), valid = "valid", missing_reason = "missing_reason", nominal_sampling_hz = 60, thresholds = list( accuracy_mean = list(max = 1.0), valid_sample_fraction = list(min = 0.80) ) ) table(reviewed$review_required) attr(reviewed, "gaze_quality_provenance")$automatic_exclusion ``` Thresholds are study-specific review rules. They do not silently drop trials, participants, or files. A defensible analysis reports the primary rule and then checks whether conclusions change under plausible alternatives. # Reporting checklist A manuscript should report, where relevant: 1. coordinate unit and any screen/viewing geometry used for conversion; 2. validation/check-target procedure and grouping level; 3. target-referenced accuracy statistic; 4. exact precision definition (RMS-S2S, SD, and/or BCEA); 5. BCEA probability when used; 6. nominal and empirically realized sampling behavior; 7. operational definition and amount of data loss; 8. review/exclusion thresholds and numbers affected; 9. sensitivity analyses when substantive conclusions depend on quality choices. A compact starting point is: ```{r reporting} report_gaze_quality(center_target) ``` # API links - `compute_gaze_accuracy()` - `compute_rms_s2s()` - `compute_gaze_sd_precision()` - `compute_bcea()` - `estimate_sampling_interval()` - `estimate_sampling_jitter()` - `estimate_effective_sampling_rate()` - `compute_gaze_data_loss()` - `create_gaze_quality_report()` - `plot_gaze_accuracy()` - `plot_gaze_precision()` - `plot_bcea()` - `plot_sampling_intervals()` - `plot_gaze_quality_dashboard()` - `report_gaze_quality()` # Limitations These functions characterize the measurement process. They do not establish attention, engagement, cognitive load, motivation, competence, or clinical status. Synthetic examples demonstrate software behavior; they are not tracker benchmarks and do not define universal exclusion thresholds.