This function implements an anomaly detection model based on the Fast Fourier Transform (FFT), combined with an adaptive moving average filter. The method estimates the dominant frequency in the input time series using spectral analysis and then applies a moving average filter with a window size derived from that frequency. This highlights high-frequency deviations, which are likely to be anomalies.
The residuals (original signal minus smoothed version) are then processed to compute the distance from the expected behavior, and points significantly distant are flagged as anomalies. The detection also includes a grouping strategy to reduce false positives by selecting the most representative point in a cluster of consecutive anomalies.
This function extends the HARBINGER framework and returns an object of class hanr_fft_sma
.
Examples
library(daltoolbox)
#loading the example database
data(examples_anomalies)
#Using simple example
dataset <- examples_anomalies$simple
head(dataset)
#> serie event
#> 1 1.0000000 FALSE
#> 2 0.9689124 FALSE
#> 3 0.8775826 FALSE
#> 4 0.7316889 FALSE
#> 5 0.5403023 FALSE
#> 6 0.3153224 FALSE
# setting up time series fft detector
model <- hanr_fft_sma()
# fitting the model
model <- fit(model, dataset$serie)
detection <- detect(model, dataset$serie)
#> Warning: longer object length is not a multiple of shorter object length
# filtering detected events
print(detection[(detection$event),])
#> idx event type
#> 50 50 TRUE anomaly