Self-thresholding hierarchical outlier-detection for animal movement tracks

Read the full article See related articles

Discuss this preprint

Start a discussion What are Sciety discussions?

Listed in

This article is not in any list yet, why not save it to one of your lists.
Log in to save this article

Abstract

1. Erroneous locations are ubiquitous in animal tracking data and notoriously difficult to remove without supervision. Whether caused by poor satellite geometry, atmospheric interference, tag malfunction, or deliberate GNSS jamming and spoofing, they propagate into estimates of movement rates, home ranges, habitat selection and behavioural states. Existing procedures rely on fixed speed or distance thresholds, require regular sampling, depend on model-based smoothing that is hard to fit to heterogeneous data, or stop at diagnostic plots leaving the decision to the analyst. Most also share a structural blind spot: they catch fixes whose transitions to neighbours are extreme, but miss spatially coherent blocks whose interiors look metrically normal. 2. I introduce mt_clean_track(), a function in the R package move2utils that returns a track with outlier flags and a categorical read-out of what kind of evidence triggered each flag. It combines four ideas: data-driven thresholds the user need not specify; four complementary detectors, each catching an error class the others structurally cannot (a Brownian-bridge geometric residual, a movement-metric probability test, a scale-invariant path-versus-displacement detour ratio, and a step-level physiological speed cap); a graph-based block-expansion step recovering coherent error trains beyond the reach of per-fix scoring; and an agreement-based rule building a consensus flag from the number of single-method flags and their certainty. 3. I evaluate the cascade on synthetic trajectories spanning isolated spikes, drift segments, spoofing blocks, stationary-halo jitter and multi-state migration anomalies, against four established alternatives (naive speed cap, atlastools, trip::sda, SDLfilter). It recovers the injected outliers on every track, achieves the highest cross-cohort mean $F_1$ ($0.86$ at zero user parameters; nearest competitor $0.80$ hand-tuned), and alone recovers the coherent spoofing block with usable precision (30/30 versus 1-3/30). On a clean reference track only trip::sda produces substantial false positives. A directional decomposition of the bridge residual further reframes detection as error classification: a fix's position in a two-dimensional residual plane reveals whether the error is perpendicular drift, along-track jump, or extreme on both axes. 4. Per-location scores, data-driven thresholds, an error-morphology read-out and a parameter-free default entry point are intended to make outlier screening a routine, reproducible step in the movement-ecology pipeline. The outlier removal cascade is part of the move2utils package and available at https://github.com/move2universe/move2utils.

Article activity feed