NAME

Math::LiveStats - Pure perl module to make mean, standard deviation, and p-values available for given window sizes in streaming data

SYNOPSIS

  #!/usr/bin/perl -w

  use Math::LiveStats;

  # Create a new Math::LiveStats object with window sizes of 60 and 300 seconds
  my $stats = Math::LiveStats->new(60, 300); # doesn't have to be "time" or "seconds" - could be any series base you want

  # Add time-series data points (timestamp, value)
  $stats->add(1000, 50);
  $stats->add(1060, 55);
  $stats->add(1120, 53);

  # Get mean and standard deviation for a window size
  my $mean_60 = $stats->mean(60);
  my $stddev_60 = $stats->stddev(60);

  # Get the p-value for a window size
  my $pvalue_60 = $stats->pvalue(60);

  # Get the number of entries in a window
  my $n_60 = $stats->n(60);

  # Recalculate statistics to reduce accumulated errors
  $stats->recalc(60);

DESCRIPTION

Math::LiveStats provides live statistical calculations (mean, standard deviation, p-value) over multiple window sizes for streaming data. It uses West's algorithm for efficient updates and supports synthetic boundary entries to maintain consistent results.

METHODS

new(@window_sizes)

Creates a new Math::LiveStats object with the specified window sizes.

add($timestamp, $value)

Adds a new data point to the time-series and updates statistics.

mean($window_size)

Returns the mean for the specified window size.

stddev($window_size)

Returns the standard deviation for the specified window size.

pvalue($window_size)

Calculates the p-value based on the standard deviation for the specified window size.

n($window_size)

Returns the number of entries in the specified window size.

recalc($window_size)

Recalculates the running statistics for the given window to reduce accumulated numerical errors.

EXPORT

None by default.

AUTHORS

This module was written by Chris Drake cdrake@cpan.org.

COPYRIGHT AND LICENSE

Copyright (c) 2024 Chris Drake. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.18.2 or, at your option, any later version of Perl 5 you may have available.