Crate augurs

Crate augurs 

Source
Expand description

§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.

Modules§

changepoint
Changepoint detection models
clustering
Time series clustering algorithms
dtw
Dynamic Time Warping (DTW)
ets
Exponential smoothing models.
forecaster
High level forecasting API for augurs
mstl
Multiple Seasonal-Trend decomposition with LOESS (MSTL)
outlier
Outlier detection
prelude
Common traits and types for time series forecasting models.
prophet
Prophet: forecasting at scale
seasons
Seasonality detection for time series

Structs§

DistanceMatrix
A matrix representing the distances between pairs of items.
Forecast
A forecast containing point forecasts and, optionally, prediction intervals.
ForecastIntervals
Forecast intervals.

Traits§

Fit
A new, unfitted time series forecasting model.
ModelError
An error produced by a time series forecasting model.
Predict
A fitted time series forecasting model.