The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Math::StdDev - Pure-perl mean and variance computation supporting running/online calculation (Welford's algorithm)

SYNOPSIS

``````    #!/usr/bin/perl -w

use Math::StdDev;

my \$d = new Math::StdDev();
\$d->Update(2);
\$d->Update(3);
print \$d->mean() . "\t" . \$d->sampleVariance();     # or \$d->variance()``````

or

``    perl -MMath::StdDev -e '\$d=new Math::StdDev; \$d->Update(10**8+4, 10**8 + 7, 10**8 + 13, 10**8 + 16); print \$d->mean() . "\n" . \$d->sampleVariance() . "\n"'``

DESCRIPTION

This module impliments Welford's online algorithm (see https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance ) Maybe one day in future the two-pass algo could be included, along with Kahan compensated summation... so much math, so little time...

None by default.

new

Usage is

``````    my \$d = new Math::StdDev();
or
my \$d = new Math::StdDev(1,2,3,4);  # Add one or more samples, or a population, right from the start``````

Update

Usage is

``````    my \$d->Update(123);
or
my \$d->Update(@list_of_scalars);``````

mean()

Usage is

``    print \$d->mean();``

variance

Usage is

``    print \$d->variance();``

sampleVariance

(same as variance, but uses n-1 divisor.) Usage is:

``    print \$d->sampleVariance();``

AUTHOR

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