Process pre-flight and anomaly governance

knitr::opts_chunk$set(collapse = TRUE, comment = "#>", eval = FALSE)
library(eyeprocess)

Scope

This workflow places a data-quality gate before biometric/process modelling. It is designed to protect calibration, DIF, scoring, process-IRT, and deployment analyses from poor signal quality. It does not classify motivation, misconduct, diagnosis, or ability.

Pre-flight specification

spec <- process_preflight_spec(
  min_gaze_validity = 0.80,
  min_pupil_validity = 0.70,
  max_gaze_missingness = 0.25,
  max_pupil_missingness = 0.30,
  min_valid_trial_fraction = 0.70
)

audit <- audit_biometric_preflight(
  trial_data,
  by = c("person_id", "recording_id"),
  spec = spec
)

preflight_decisions(audit)
preflight_failures(audit)
preflight_exclusion_manifest(audit)
plot(audit, type = "heatmap")
plot(audit, type = "decision_counts")

No rows are removed automatically. apply_preflight_decision() performs filtering only when explicitly requested and records what decision levels were retained.

Multivariate anomaly review

anomaly <- audit_process_anomalies(
  person_process_data,
  person = "person_id",
  metrics = c("rt_ms", "dwell_ms", "pupil_peak", "valid_gaze_prop")
)

process_anomaly_distance(anomaly)
plot(anomaly)

The Mahalanobis distance is a review statistic. A large distance can reflect calibration problems, glasses, lighting, tracker loss, atypical viewing, or other benign causes.



Try the eyeprocess package in your browser

Any scripts or data that you put into this service are public.

eyeprocess documentation built on Sept. 28, 2026, 5:08 p.m.