14 unstable releases (3 breaking)

0.7.0 Nov 25, 2024
0.6.3 Nov 20, 2024
0.5.4 Oct 28, 2024
0.4.3 Oct 18, 2024

#2 in #time-series-analysis

Download history 442/week @ 2024-10-13 307/week @ 2024-10-20 152/week @ 2024-10-27 164/week @ 2024-11-03 171/week @ 2024-11-10 160/week @ 2024-11-17 167/week @ 2024-11-24 9/week @ 2024-12-01

588 downloads per month

MIT/Apache

630KB
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
  • prophet: the Prophet time series forecasting model
  • prophet-cmdstan: the cmdstan optimizer for the Prophet time series forecasting model
  • prophet-compile-cmdstan: as above, but with the prophet cmdstan binary compiled and embedded at build-time
  • prophet-wasmstan: a WASM-compiled version of the Stan model used to optimize Prophet, with WASM embedded in the crate
  • prophet-wasmstan-min: as above, but without the embedded WASM
  • 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–16MB
~234K SLoC