Time series AnomalyDetection for C++
Learn how it works
Add the headers to your project and use
#include "anomaly_detection.hpp"
Detect anomalies in a time series
std::vector<float> series = {
5.0, 9.0, 2.0, 9.0, 0.0, 6.0, 3.0, 8.0, 5.0, 18.0,
7.0, 8.0, 8.0, 0.0, 2.0, 15.0, 0.0, 5.0, 6.0, 7.0,
3.0, 6.0, 1.0, 4.0, 4.0, 4.0, 30.0, 7.0, 5.0, 8.0
};
size_t period = 7; // number of observations in a single period
auto res = anomaly_detection::params().fit(series, period);
Get anomalies
res.anomalies;
Set parameters
anomaly_detection::params()
.alpha(0.05) // level of statistical significance
.max_anoms(0.1) // maximum number of anomalies as percent of data
.direction(Direction::Both) // Positive, Negative, or Both
.verbose(false); // show progress
This library was ported from the AnomalyDetection R package and is available under the same license. It uses stl-cpp for seasonal-trend decomposition and dist.h for the quantile function.
View the changelog
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features
To get started with development:
git clone https://github.com/ankane/AnomalyDetection.cpp.git
cd AnomalyDetection.cpp
g++ -std=c++17 -Wall -Wextra -Werror -o test/main test/main.cpp
test/main