NAME
Statistics::Standard_Normal - Z scores and percentiles using standard
normal table
SYNOPSIS
use Statistics::Standard_Normal qw/z_to_pct pct_to_z/;;
while (defined my $z = get_z_score($name)) {
say "$name's result was at the ", z_to_pct($z), ' percentile';
}
while (defined my $pct = get_percentile($name)) {
say "$name's result had a Z score of ", pct_to_z($pct);
say "Be careful of flattening at high percentiles!" if $pct > 98;
}
DESCRIPTION
Statistics::Standard_Normal provides convenience functions to convert
between Z scores and percentile scores using values taken from a
standard normal distribution (that is, a normal distribution with a mean
of 0 and a standard deviation of 1). Percentile scores are often used
for informal reporting of results, since they make intuitive sense to
many readers, while Z scores are less familiar, but a better behaved for
values far from the mean.
The intent of this package is to be lightweight -- it has no
prerequisites outside the Perl core, no compiler requirement, and a
small footprint -- while providing values accurate enough for most uses.
FUNCTIONS
Two conversion functions are provided:
z_to_pct(*$z*)
Returns the percentile corresponding to the Z-score *$z*. This is
the percentage of the area under the standard normal curve located
to the left of a vertical line at "mean" + *$z*.
A closed-form solution to this problem does not exist, so "z_to_pct"
uses a rapid estimation that is generally accurate to "0.1%" over
the range of -3.719 < *$z* < 3.719. Values outside this range return
"0.01%" or "99.99%", depending on the sign of *$z*.
pct_to_z(*$pctile*)
Returns the Z-score corresponding to *$pctile*. This uses an
approximation similar to the one used by "z_to_pct"; the result is
generally accurate to 0.005. Values of *$pctile* <0.01 or >99.9
return -3.719 and 3.719, respectively.
EXPORT
Both "pct_to_z" and "z_to_pct" are available for importation, but
neither are exported by default.
BUGS AND CAVEATS
Conversion to Z scores of percentiles very close to 0 or 100 becomes
increasingly inaccurate, as smaller and smaller changes in percentile
are associated with a given change in Z score.
SEE ALSO
For intensive usage, a compiled library may provide better performance
(cf. "ndtr" in Math::Cephes or Math::CDF for Perl bindings to some
options).
If you have a set of observations and want to perform statistical tests,
there are a host of modules in the "Statistics::" namespace; ones that
may help you derive Z scores include Statistics::Zscore and
Statistics::Zed.
VERSION
version 1.00
AUTHOR
Charles Bailey
COPYRIGHT AND LICENSE
Copyright 2012-2014 Charles Bailey.
This software may be used under the terms of the Artistic License or the
GNU General Public License, as the user prefers.
ACKNOWLEDGMENT
The code incorporated into this package was originally written with
United States federal funding as part of research work done by the
author at the Children's Hospital of Philadelphia.