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
669 downloads per month
630KB
3.5K
SLoC
augurs - a time series toolkit for Rust
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 detectionclustering
: clustering algorithmsdtw
: dynamic time warpingets
: exponential smoothing modelsforecaster
: forecastingmstl
: multiple seasonal trend decompositionoutlier
: outlier detectionparallel
: enable parallel processing of algorithms, where availableprophet
: the Prophet time series forecasting modelprophet-cmdstan
: thecmdstan
optimizer for the Prophet time series forecasting modelprophet-compile-cmdstan
: as above, but with theprophet
cmdstan
binary compiled and embedded at build-timeprophet-wasmstan
: a WASM-compiled version of the Stan model used to optimize Prophet, with WASM embedded in the crateprophet-wasmstan-min
: as above, but without the embedded WASMseasons
: 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
~238K SLoC