The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

TimeSeries::AdaptiveFilter - Adaptive filter for data stream with possible outliers

STATUS

SYNOPSYS

  use TimeSeries::AdaptiveFilter qw/filter/;

  # creation with defaults
  my $filter = filter();

  # create filter with tuned parameters
  my $filter = filter({
    floor             => 6
    cap               => 0.2,
    lookback_capacity => 20,
    lookback_period   => 4,
    decay_speeds      => [0.03, 0.01, 0.003],
    build_up_count    => 5,
    reject_criterium  => 4,
  });

  # usage
  my $now = time;
  $filter->($now, 100.002);        # returns true, i.e. all data is valid on learning period
  $filter->($now + 1, 100.001);    # returns true
  ...                              # it learns form sample of 60 seconds
  $filter->($now + 60, 100.005);   # returns true
  $filter->($now + 61, 99.9995);   # returns true, as value does not differs much
  $filter->($now + 62, 10_0000);   # returns false, outlier data
  $filter->($now + 63, 10.0001);   # returns false, outlier data
  $filter->($now + 64, 100.011);   # returns true, even if the sample is oulier, because
                                   # the filter rejected too much values, and has to
                                   # re-adapt to time seria again

DESCRIPTION

For the details of underlying mathematical model of the filter, configurable parameters and their usage, please, look at the shipped doc folder.

FUNCTIONS

filter