Distinguishing Process Change, Instrument Fault and Data-Path Corruption in Streaming Telemetry: A Reference Implementation and Benchmark
Organizations: Independent Researcher, Poland
Abstract
A reading departs from what a monitoring system expects for one of three reasons: the physical process changed, the instrument is failing, or the value was corrupted between the instrument and the software. The three call for different responses and look alike in a single sample. We state the three-cause problem, prove which pairs of causes one channel cannot separate, and propose a bank of online detectors - a Kalman tracker with CUSUM and EWMA charts on its innovation, a Hampel median with generalized-ESD confirmation, a robust noise statistic with ADWIN, exact-value checks and an optional two-channel complementary filter - combined by a deterministic, inspectable attribution rule. The detectors were merged into a public algorithm library. On 2,942 injected events of thirteen fault types the method detects 96.3% (95% interval 95.7-97.0) at 0.22 false alarms per hour and attributes 91.2% (90.6-91.8) of detected events correctly from one channel and 99.0% (98.6-99.4) with a second, rate channel; from one channel only 2 of 207 detected sensor drifts are attributed to the instrument, as the problem statement predicts. Injected into recorded industrial signals, the same catalogue is detected at 80.8% and attributed correctly at 84.5%, at 3.6 false alarms per hour. On the Skoltech Anomaly Benchmark the method detects 32 of 33 experiments with a median delay of 15 s, at 46 false alarms per hour against 11 for a rolling z-score.
Figures & tables
| Cause | Term | Temporal signature |
|---|---|---|
| Process change | level shift, ramp or regime change at a physically plausible rate; noise and bias unchanged | |
| Instrument fault | , , | bias step or drift; growth of ; output stuck at the last value; saturation |
| Data-path corruption | isolated points or short bursts; segments exactly repeating earlier values; zeros, boundary, out-of-range or missing values |
| # | Evidence in the window | Attribution |
|---|---|---|
| 1 | range guard (missing, out of range, boundary) | data-path |
| 2 | replayed segment | data-path |
| 3 | saturation | instrument |
| 4 | stuck at the last value | instrument |
| 5 | (6) above threshold, still at decision; | instrument |
| 6 | 1–4 GESD-confirmed outliers; | data-path |
| Component | Role | Pull request |
|---|---|---|
| KalmanFilter | tracker (4) | TheAlgorithms/Java#7592 |
| CusumDetector , EwmaChangeDetector | charts (5) | TheAlgorithms/Java#7593, TheAlgorithms/Java#7600 |
| HampelFilter , GeneralizedEsd | running median (3); confirmation | TheAlgorithms/Java#7598, TheAlgorithms/Java#7612 |
| WelfordAlgorithm , P2QuantileEstimator | calibration (2), thresholds | TheAlgorithms/Java#7602, TheAlgorithms/Java#7603 |
| Adwin | sustained noise change | TheAlgorithms/Java#7606 |
| ComplementaryFilter | second channel (7) | TheAlgorithms/Java#7614 |
| Injection | Cause | Parameters |
|---|---|---|
| level shift; ramp; regime change | process | 4–10 ; 0.02–0.08 /sample for 100–300; 3–6 for 300–500 with a 1–2 set-point oscillation of period 100–200 |
| bias step; linear drift | instrument | 4–10 ; 0.02–0.08 /sample for 100–300, both persisting |
| noise growth; stuck; saturation | instrument | 2.5–5 for 200–400; 30–200 samples; for 200–400, ceiling 0.3–0.8 above the noise-free level plus bias |
| spike; substitution burst; replay | data-path | 1 sample 6–15 ; 3 samples 6–15 ; 10–40 samples re-sent from 50–200 earlier |
| zero; dropout | data-path | 1–3 samples; 5–20 missing samples |
| True cause | Events | Detected (one channel) | One channel: P / R / F1 | Undet. | Two channels: P / R / F1 |
|---|---|---|---|---|---|
| process | 664 | 89.2% | 75.4 / 83.0 / 79.0% | 5.2% | 97.3 / 87.5 / 92.1% |
| instrument | 1,129 | 97.5% | 99.0 / 79.2 / 88.0% | 2.5% | 99.1 / 96.7 / 97.9% |
| data-path | 1,149 | 99.3% | 99.8 / 99.1 / 99.5% | 0.0% | 99.8 / 99.1 / 99.5% |
| Channel | Detected | Correct of detected | False alarms per hour |
|---|---|---|---|
| Accelerometer 1 · 2 | 82.7% · 93.7% | 83.9% · 91.6% | 9.95 · 1.93 |
| Current · Voltage | 80.4% · 96.1% | 75.1% · 91.4% | 10.04 · 0.06 |
| Pressure · Volume flow† | 76.1% · 74.1% | 86.6% · 81.0% | 0.85 · 3.19 |
| Temperature · Thermocouple† | 69.8% · 73.7% | 74.7% · 87.8% | 2.27 · 0.51 |
| all eight (2,040 events) | 80.8% | 84.5% | 3.60 |
| Synthetic: detected | Synthetic: delay med/P90 (s) | Synthetic: FA/h | SKAB: detected (of 33) | SKAB: delay med/P90 (s) | SKAB: FA/h (labeled / anomaly-free) | |
|---|---|---|---|---|---|---|
| this method | 96.3% | 3 / 33 | 0.22 | 32 | 15 / 54 | 46.0 / 34.0 |
| rolling z-score | 62.4% | 0 / 82 | 0.40 | 33 | 35 / 66 | 11.0 / 12.0 |
| restarted CUSUM | 82.0% | 13 / 74 | 9.61 | 33 | 5 / 22 | 179.5 / 173.1 |
Fault Diagnosis
Fault diagnosis identifies, localizes, and explains failures in engineered and computational systems using sensor data, logs, models, and domain knowledge.
See all 146 papers