5 unstable releases

0.3.0 Jul 11, 2024
0.2.1 Dec 16, 2021
0.2.0 Oct 26, 2021
0.1.1 Oct 11, 2021
0.1.0 Sep 12, 2021

#314 in Algorithms


Used in zbusdg

GPL-2.0-or-later

39KB
984 lines

Breakout Rust

🔥 BreakoutDetection for Rust

Learn how it works

🎉 Zero dependencies

Build Status

Installation

Add this line to your application’s Cargo.toml under [dependencies]:

breakout = "0.3"

Getting Started

Detect breakouts in a series

let series = vec![
    3.0, 1.0, 2.0, 3.0, 2.0, 1.0, 1.0, 2.0, 2.0, 3.0,
    6.0, 4.0, 4.0, 5.0, 6.0, 4.0, 4.0, 4.0, 6.0, 5.0,
    9.0, 8.0, 7.0, 9.0, 8.0, 9.0, 9.0, 9.0, 7.0, 9.0
];
let breakouts = breakout::multi().min_size(5).fit(&series).unwrap();

Detect a single breakout (at most one change)

let breakout = breakout::amoc().min_size(5).fit(&series).unwrap();

Options

Multi

breakout::multi()
    .min_size(30)      // minimum observations between breakouts
    .degree(2)         // degree of the penalization polynomial
    .beta(0.008)       // penalization term
    .percent(None)     // minimum percent change in goodness of fit statistic

Single

breakout::amoc()
    .min_size(30)      // minimum observations between breakouts
    .alpha(2.0)        // weight of the distance between observations
    .exact(false)      // exact or approximate median

Credits

This library was ported from the BreakoutDetection R package and is available under the same license.

References

History

View the changelog

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help:

To get started with development:

git clone https://github.com/ankane/breakout-rust.git
cd breakout-rust
cargo test

No runtime deps