Crates.io | augurs-outlier |
lib.rs | augurs-outlier |
version | 0.6.2 |
source | src |
created_at | 2024-06-05 21:09:14.958581 |
updated_at | 2024-11-10 13:51:16.305395 |
description | Outlier detection for time series. |
homepage | |
repository | https://github.com/grafana/augurs |
max_upload_size | |
id | 1263145 |
size | 103,428 |
This crate provides implementations of time series outlier detection, the problem of determining whether one time series behaves differently to others in a group. (This is different to anomaly detection, which aims to determine if one or more samples appears to be different within a time series).
Two implementations are planned:
use augurs::outlier::{OutlierDetector, DbscanDetector};
// Each slice inside `data` is a time series.
// The third one behaves differently at indexes 2 and 3.
let data: &[&[f64]] = &[
&[1.0, 2.0, 1.5, 2.3],
&[1.9, 2.2, 1.2, 2.4],
&[1.5, 2.1, 6.4, 8.5],
];
let detector = DbscanDetector::with_sensitivity(0.5)
.expect("sensitivity is between 0.0 and 1.0");
let processed = detector.preprocess(data)
.expect("input data is valid");
let outliers = detector.detect(&processed)
.expect("detection succeeds");
assert_eq!(outliers.outlying_series.len(), 1);
assert!(outliers.outlying_series.contains(&2));
assert!(outliers.series_results[2].is_outlier);
assert_eq!(outliers.series_results[2].scores, vec![0.0, 0.0, 1.0, 1.0]);