mathnet/mathnet-numerics — pull request #38 by manyue (2012-06-20 12:05:48+00:00)
Title: Issue #15: One Pass Statistics

Response to Issue #15:
Changed the computations of statistics in the DescriptiveStatistics and Correlation classes to the one pass algorithm based on J. Bannett et al. Numerically Stable, Single Pass, Parallel Statistics Algorithms. Proc. IEEE International Conference on Cluster Computing. (2009). (Although DescriptiveStatistics still needs two passes, one for computing mean, variances, etc. and the other one for computing median, whereas the current version needs three passes, first compute mean, then the other statistics except median, then compute median) The ones in the static Statistics class are already one pass.

Changed the choice of pivot in the private OrderSelect method in the Statistics class. The current choice of pivot performs badly with a partially sorted list, which is a problem when using it on a large dataset with even number of entries. (because in the Median method, OrderSelect is called twice when the number of entries are even and in the first call, it partially sorted the buffer set, which leads to poor performance in the second call)

All these changes have passed the existing unit tests.