Harbinger is a framework for event detection in time series. It provides an integrated environment for time series anomaly detection, change points, and motif discovery. It provides a broad range of event detection methods and functions for plotting and evaluating event detections.
In the anomaly classes, methods are based on machine learning model deviation (Conv1D, ELM, MLP, LSTM, Random Regression Forest, SVM), machine learning classification model (Decision Tree, KNN, MLP, Naive Bayes, Random Forest, SVM), clustering (kmeans and DTW) and statistical methods (ARIMA, FBIAD, GARCH).
In the change points classes, methods are based on linear regression, ARIMA, ETS, GARCH, AMOC, ChowTest, BinSeg, GFT, PELT.
In the motifs classes, methods are based on Hash and Matrix Profile. There are specific methods for multivariate series. The evaluation of detections includes both traditional and soft computing.
Harbinger architecture is based on Experiment Lines and is built on top of the DAL Toolbox. Such an organization makes it easy to customize and add novel methods to the framework.
The latest version of Harbinger at CRAN is available at: https://CRAN.R-project.org/package=harbinger
You can install the stable version of Harbinger from CRAN with:
install.packages("harbinger")
You can install the development version of Harbinger from GitHub https://github.com/cefet-rj-dal/harbinger with:
# install.packages("devtools")
library(devtools)
devtools::install_github("cefet-rj-dal/harbinger", force=TRUE, upgrade="never")
Examples of Harbinger are organized according to general functions (example datasets and metrics), anomalies, change points, motifs, and multivariate anomaly detection.
General: https://github.com/cefet-rj-dal/harbinger/tree/master/general
Anomalies: https://github.com/cefet-rj-dal/harbinger/tree/master/anomalies
Change points: https://github.com/cefet-rj-dal/harbinger/tree/master/change_point
Motifs: https://github.com/cefet-rj-dal/harbinger/tree/master/motifs
library(harbinger)
#> Registered S3 method overwritten by 'quantmod':
#> method from
#> as.zoo.data.frame zoo
## basic example code