class_docstr: Exponential Moving Average.
  This method uses a data point's deviation from the exponential moving average of a lagging window
  to determine its anomaly score.
docstr: Compute anomaly scores using a lagging window covering all the data points before.
code: def _compute_anom_data_decay_all(self):
      """
      Compute anomaly scores using a lagging window covering all the data points before.
      """
      anom_scores = {}
      values = self.time_series.values
      ema = utils.compute_ema(self.smoothing_factor, values)
      stdev = numpy.std(values)
      for i, (timestamp, value) in enumerate(self.time_series_items):
          anom_score = (
              abs((value - ema[i]) / stdev) if stdev else value - ema[i]
          )
          anom_scores[timestamp] = anom_score
      self.anom_scores = TimeSeries(self._denoise_scores(anom_scores))
  
file_path: luminol/src/luminol/algorithms/anomaly_detector_algorithms/exp_avg_detector.py
imports: import numpy
  from luminol import utils
  from luminol.algorithms.anomaly_detector_algorithms import AnomalyDetectorAlgorithm
  from luminol.modules.time_series import TimeSeries
  from luminol.constants import DEFAULT_EMA_SMOOTHING_FACTOR, DEFAULT_EMA_WINDOW_SIZE_PCT
label_desc: Use image node_id 4 for calling the ExpAvgDetector obj's underlying member method code with example usage: obj._compute_anom_data_decay_all() without return types