NAME

Stream::Aggregate::Stats - some standard statistics functions

SYNOPSIS

 use Stream::Aggregate::Stats;

 $data = [ 1, 2, 3, 5, 9 ];
 $mydata = {
	keep => {
		fieldname	=> $data,
	},
	numeric => { },
 };

 local($Stream::Aggregate::Stats::ps) = $mydata;
 
 $mean = mean('fieldname');

DESCRIPTION

This module implements some standard statistics functions. It has an odd API: it expect the data to be inside a structure. This is to facilitate uses where the operations are found at runtime from user input or configuration files.

The exact structure is:

 {
	keep => {
		field1 => [ @data ],
		field2 => [ @data ], 
		field3 => [ @data ],
	},
	numeric => {},
 }

where field1, field2, etc are names for the data. You then ask for functions by name: eg: mean('field1').

The functions available are: percentile, standard_deviation, median, mean, largest (numeric max), smallest (numeric min), dominant (the mode), and dominantcount. The percentile function takes two arguments: the field name and the percentile: percentile(field1 => 80) gives you the 80th percentle for the data in field1. The 50th percentile is the same as the median. The dominantcount is the number of values that exactly matched the mode.

LICENSE

This package may be used and redistributed under the terms of either the Artistic 2.0 or LGPL 2.1 license.