I'm pleased to announce a major release of of the Haskell statistics library, version 0.10.0.0.

I'd particularly like to thank Alexey Khudyakov for his wonderful work on this release.

New features:

Student-T, Fisher-Snedecor, F-distribution, and Cauchy-Lorentz distributions are added.

Histogram computation is added, in

`Sample.Histogram`

.Forward and inverse discrete Fourier and cosine transforms are added, in

`Transform`

.Root finding is added, in

`Math.RootFinding`

.

Major changes:

The

`Sample.KernelDensity`

module has been renamed, and completely rewritten to be much more robust. The older module oversmoothed multi-modal data. (The older module is still available under the name`Sample.KernelDensity.Simple`

).The type classes

`Mean`

and`Variance`

are split in two. This is required for distributions which do not have finite variance or mean.

Smaller changes:

The

`complCumulative`

function is added to the`Distribution`

class in order to accurately assess probalities P(X>x) which are used in one-tailed tests.A

`stdDev`

function is added to the`Variance`

class for distributions.The constructor

`Distribution.normalDistr`

now takes standard deviation instead of variance as its parameter.A bug in

`Quantile.weightedAvg`

is fixed. It produced a wrong answer if a sample contained only one element.Bugs in quantile estimations for chi-square and gamma distribution are fixed.

Integer overlow in

`mannWhitneyUCriticalValue`

is fixed. It produced incorrect critical values for moderately large samples. Something around 20 for 32-bit machines and 40 for 64-bit ones.A bug in

`mannWhitneyUSignificant`

is fixed. If either sample was larger than 20, it produced a completely incorrect answer.One- and two-tailed tests in

`Tests.NonParametric`

are selected with sum types instead of`Bool`

.Test results returned as enumeration instead of

`Bool`

.Performance improvements for Mann-Whitney U and Wilcoxon tests.

Module

`Tests.NonParamtric`

is split into`Tests.MannWhitneyU`

and`Tests.WilcoxonT`

`sortBy`

is added to`Function`

.Mean and variance for gamma distribution are fixed.

Much faster cumulative probablity functions for Poisson and hypergeometric distributions.

Better density functions for gamma and Poisson distributions.

The function

`Function.create`

is removed. Use`generateM`

from the`vector`

package instead.A function to perform approximate comparion of doubles is added to

`Function.Comparison`

.Regularized incomplete beta function and its inverse are added to

`Function`

.

I think Don Stewart posted it to Google+ but somehow I came across a story about you using Quickcheck to find a bug in your FFT implementation, I was wondering if you would consider writing a blog post about how you approached that? I’ve used QuickCheck to test some simple things (is an associative operator really associative, etc.), but I’d be curious to know how you used Quickcheck to test something like the FFT.

Incidentally the last time I implemented the FFT in C++ I had a bug in essentially the same place that you did, but it took me several days to find it 😛 So I’m quite interested 😉

Anyway, congrats on the new release. Looking good!

Someone on Reddit reported that Criterion’s upper bound needs to be fixed:

“Seems criterion has bad upper version boundaries for the statistics package… :-/

Registering statistics-0.10.0.0…

Configuring criterion-0.5.1.0…

Building criterion-0.5.1.0…

Preprocessing library criterion-0.5.1.0…

Criterion.hs:43:8:

Could not find module `Statistics.KernelDensity’

Use -v to see a list of the files searched for.

cabal: Error: some packages failed to install:

criterion-0.5.1.0 failed during the building phase. The exception was:

ExitFailure 1″