http://www.perlmonks.org?node_id=171926


in reply to Statistical data analysis

Your method of calculating variance can result in loss of significant digits. For example, the following data produces a variance of 0 for X on my machine (causing div-by-zero errors later). The variance should be the same for both X and Y (as the data differs only by a constant).

999999997	9999997
999999998	9999998
999999999	9999999

Better results may be achieved by "centering" your variance calculation about the mean.

my $VX = 0; $VX += ($_ - $MX)**2 for @x; $VX /= $Xn;

You are also making far more passes over the data than necessary.