OcpTsSdEwma function

Optimized Classic Processing Two-Stage Shift-Detection based on EWMA

Optimized Classic Processing Two-Stage Shift-Detection based on EWMA

OcpTsSdEwma calculates the anomalies of a dataset using an optimized verision of classical processing based on the SD-EWMA algorithm. It is an optimized implementation of the CpTsSdEwma

algorithm using environment variables. It has been shown that in long datasets it can reduce runtime by up to 50%. This algorithm is a novel method for covariate shift-detection tests based on a two-stage structure for univariate time-series. This algorithm works in two phases. In the first phase, it detects anomalies using the SD-EWMA CpSdEwma algorithm. In the second phase, it checks the veracity of the anomalies using the Kolmogorov-Simirnov test to reduce false alarms.

OcpTsSdEwma(data, n.train, threshold, l = 3, m = 5)

Arguments

  • data: Numerical vector with training and test dataset.
  • n.train: Number of points of the dataset that correspond to the training set.
  • threshold: Error smoothing constant.
  • l: Control limit multiplier.
  • m: Length of the subsequences for applying the Kolmogorov-Smirnov test.

Returns

dataset conformed by the following columns:

  • is.anomaly: 1 if the value is anomalous 0, otherwise.

  • ucl: Upper control limit.

  • lcl: Lower control limit.

Details

data must be a numerical vector without NA values. threshold must be a numeric value between 0 and 1. It is recommended to use low values such as 0.01 or 0.05. By default, 0.01 is used. Finally, l is the parameter that determines the control limits. By default, 3 is used. m is the length of the subsequences for applying the Kolmogorov-Smirnov test. By default, 5 is used. It should be noted that the last m values will not been verified because another m values are needed to be able to perform the verification.

Examples

## Generate data set.seed(100) n <- 180 x <- sample(1:100, n, replace = TRUE) x[70:90] <- sample(110:115, 21, replace = TRUE) x[25] <- 200 x[150] <- 170 df <- data.frame(timestamp = 1:n, value = x) ## Calculate anomalies result <- OcpTsSdEwma( data = df$value, n.train = 5, threshold = 0.01, l = 3, m = 20 ) res <- cbind(df, result) ## Plot results PlotDetections(res, title = "TSSD-EWMA ANOMALY DETECTOR")

References

Raza, H., Prasad, G., & Li, Y. (03 de 2015). EWMA model based shift-detection methods for detecting covariate shifts in non-stationary environments. Pattern Recognition, 48(3), 659-669.

  • Maintainer: Alaiñe Iturria
  • License: AGPL (>= 3)
  • Last published: 2019-09-06