1. Introduction
Reading is not a smooth left-to-right sweep of the eyes across text: it is a sequence of fixations connected by saccades, a meaningful fraction of which move gaze backward through text already read. These regressive saccades are among the most studied oculomotor correlates of reading difficulty — dyslexic readers reliably show elevated regression rates relative to age-matched typical readers in the eye-movement literature — but a regression count is only as good as the classifier that produces it, and the central practical difficulty is that a large backward-and-downward saccade at the end of a line (a return sweep, beginning the next line) is geometrically a backward movement and must not be miscounted as a regression. This paper specifies the geometric criteria the platform uses to make this distinction during free-reading story passages, and the related classifier used during question-answering pages to detect re-reading of a prior question.
2. The Disambiguation Problem
Consider a saccade with horizontal displacement dx (negative for leftward movement) and vertical displacement dy (positive for downward movement, following screen coordinate convention). A within-line regression — gaze jumping back a few words to re-read something — produces a moderate leftward dx with little or no vertical displacement. A return sweep — gaze jumping from the end of one line to the start of the next — produces a large leftward dx (potentially the full width of the text column) combined with a downward dy of roughly one line height. Both are, in isolation, "backward" movements; they must be distinguished by magnitude and by the presence or absence of concurrent vertical displacement, not by direction alone.
3. Classification Criteria
3.1 Saccade detection
A movement between consecutive accepted gaze samples is first classified as a saccade at all only if its velocity exceeds 5 px/ms and the inter-sample gap is below 200 ms (the same saccade-velocity criterion documented in Real-Time Blink and Fixation Detection, this series, applied identically here since both papers describe classifiers operating over the same underlying gaze stream).
3.2 Regression vs. return sweep
Among saccades with leftward horizontal displacement exceeding a minimum threshold (35 px — small leftward jitter below this is not counted as a regression at all, since it is more likely residual gaze noise than a genuine re-reading saccade), the platform distinguishes:
isReturnSweep = |dx| > (0.40 × screenWidth) AND dy > 20 px
A leftward saccade is classified as a return sweep only if its horizontal magnitude exceeds forty percent of the screen width and it carries a concurrent downward component; a leftward saccade failing either condition — including any leftward saccade with negligible vertical displacement, regardless of how far left it travels — is classified as a within-line regression. The forty-percent-of-screen-width threshold is deliberately generous: a return sweep, by definition, traverses most of the text column's width, so a genuine within-line regression should rarely if ever exceed it, while requiring the concurrent downward component prevents a regression that happens to be unusually large in isolation from being misclassified purely on horizontal magnitude.
3.3 Upward regressions during question-answering
A distinct classifier operates during question-and-answer pages, where the reading geometry differs: rather than continuous prose, the subject is alternating between reading a question and composing or selecting an answer, and the behaviour of clinical interest is not within-line regression but re-reading a previous question while composing the current answer — a large upward saccade (dy < −150 px) rather than the leftward saccades relevant to continuous-prose reading. This is counted separately from the regression metric of §3.2, reflecting that it indexes a different cognitive event: insecure retention of the question just read, prompting a backward look, rather than within-line decoding difficulty.
4. Regression-Rate Normalisation
A raw regression count is not directly comparable across subjects who read at different speeds or for different total durations: a slower reader simply has more time, and typically more fixations, in which a regression could occur. The platform therefore reports regression rate — regressions per minute of reading time — as the metric that enters the oculomotor domain z-score (see A Multi-Domain Composite Z-Score Model, this series), rather than the raw count, so that two subjects with the same underlying tendency to regress are scored comparably even if one read the passage twice as quickly as the other.
5. Relationship to the Composite Oculomotor Domain
Regression rate is combined with average fixation duration to form the oculomotor domain's contribution to the platform's five-domain composite risk score: prolonged fixation duration and elevated regression rate are both individually reported in the dyslexia eye-movement literature as correlates of decoding difficulty, and the platform treats them as two partially independent signals within one domain rather than collapsing them into a single number before domain-level z-scoring, preserving the ability to inspect which of the two is driving an elevated oculomotor domain score in any given session.
6. Discussion
The forty-percent-of-screen-width return-sweep threshold (§3.2) is a heuristic tuned to the platform's specific story-passage layout — a text column occupying most of the available screen width, in single-column format. A markedly narrower text column, or a multi-column layout, would shift the appropriate threshold, since the relevant invariant is not an absolute pixel distance but the saccade's magnitude relative to the actual line length being read; the platform's current passages are laid out specifically to keep this relationship stable rather than parameterising the threshold per passage, trading layout flexibility for classifier simplicity.
7. Conclusion
By requiring both large horizontal magnitude (relative to screen width) and concurrent downward displacement before classifying a leftward saccade as a return sweep rather than a regression, and by separately tracking large upward saccades during question-answering as a distinct re-reading signal, the platform recovers a regression-rate metric, normalised by reading duration, that is reported to be one of the more consistently replicated oculomotor correlates of reading difficulty in the literature this platform's clinical scoring draws on.
References
- Rayner, K. (1998). Eye movements in reading and information processing: 20 years of research. Psychological Bulletin, 124(3), 372–422.
- De Luca, M. et al. (1999). Eye movement patterns in linguistic and non-linguistic tasks in developmental surface dyslexia. Neuropsychologia, 37(12), 1407–1420. [Regression rate as a dyslexia eye-movement correlate]
- Hyönä, J., & Olson, R. K. (1995). Eye fixation patterns among dyslexic and normal readers: effects of word length and word frequency. Journal of Experimental Psychology: Learning, Memory, and Cognition, 21(6), 1430–1440.
- McConkie, G. W., & Rayner, K. (1975). The span of the effective stimulus during a fixation in reading. Perception & Psychophysics, 17(6), 578–586. [Return-sweep characterisation]
Appendix A — Classification Decision Table
| dx (leftward) | dy (downward) | Classification |
|---|---|---|
| < 35 px | any | Not counted (jitter) |
| ≥ 35 px, < 40% screen width | any | Within-line regression |
| ≥ 40% screen width | ≤ 20 px | Within-line regression (large, but no line-wrap) |
| ≥ 40% screen width | > 20 px | Return sweep |
| (separate classifier, Q&A pages) dy < −150 px | — | Upward regression (re-reading a question) |
Appendix B — Worked Example
A passage displayed at 1920 px width: the return-sweep horizontal threshold is 0.40 × 1920 = 768 px. A saccade of dx = −820 px, dy = 34 px exceeds the threshold and carries a downward component — classified as a return sweep. A saccade of dx = −180 px, dy = 4 px falls well short of the threshold — classified as a within-line regression.