#forecasting #time-series #time-series-analysis #analysis #outlier-detection #python-bindings

augurs

A time-series toolkit for forecasting, outlier detection, clustering and more

9 releases

new 0.5.4 Oct 28, 2024
0.5.3 Oct 25, 2024
0.4.3 Oct 18, 2024

#2 in #time-series-analysis

Download history 250/week @ 2024-10-11 304/week @ 2024-10-18 344/week @ 2024-10-25

898 downloads per month

MIT/Apache

625KB
3.5K SLoC

augurs - a time series toolkit for Rust

Python Rust docs.rs crates.io

augurs is a time series toolkit built in Rust. It contains functionality for outlier detection, clustering, seasonality detection, changepoint detection and more.

If you're looking for the Python package, see augurs on PyPI, which provides Python bindings for augurs' functionality. Similarly, if you're looking for the JavaScript package, see the augurs npm package, which provides Javascript bindings using WASM.

This crate can be used to access the functionality of all other crates in the augurs ecosystem, as it re-exports them under a single namespace. The following feature flags can be enabled to include only the functionality you need:

  • changepoint: changepoint detection
  • clustering: clustering algorithms
  • dtw: dynamic time warping
  • ets: exponential smoothing models
  • forecaster: forecasting
  • mstl: multiple seasonal trend decomposition
  • outlier: outlier detection
  • parallel: enable parallel processing of algorithms, where available
  • seasons: seasonality detection

Alternatively, use the full feature flag to enable all of the above.

Getting started

First, add augurs to your project:

cargo add augurs --features full

Then import the pieces you need. For example, to use MSTL to forecast the next 10 values of a time series using an ETS model for the trend component:

use augurs::{
    ets::AutoETS,
    mstl::MSTLModel,
    prelude::*,
};

// Create some sample data.
let data = &[
    1.0, 1.2, 1.4, 1.5, 1.4, 1.4, 1.2,
    1.5, 1.6, 2.0, 1.9, 1.8, 1.9, 2.0,
];

// Define seasonal periods: we have daily data with weekly seasonality,
// so our periods are 7 days.
let periods = vec![7];

// Create a non-seasonal ETS model for the trend component.
let trend_model = AutoETS::non_seasonal().into_trend_model();

// Initialize the MSTL model.
let mstl = MSTLModel::new(periods, trend_model);

// Fit the model to the data.
let fit = mstl.fit(data).unwrap();

// Generate forecasts for the next 10 values, with a 95% prediction interval.
let forecasts = fit.predict(10, 0.95).unwrap();

See the examples for more usage examples.

License

Dual-licensed to be compatible with the Rust project. Licensed under the Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0> or the MIT license <http://opensource.org/licenses/MIT>, at your option.

Dependencies

~0–11MB
~132K SLoC