Commits

Aleksey Khudyakov committed c36a5fe

More efficient S.D.Normal.normalFromSample

Traverse sample only twice. Estimation os standard deviation
recalculated mean.

Almost 2x performance gain

Comments (0)

Files changed (1)

Statistics/Distribution/Normal.hs

 --   sample. Variance is estimated using maximum likelihood method
 --   (biased estimation).
 normalFromSample :: S.Sample -> NormalDistribution
-normalFromSample a = normalDistr (S.mean a) (S.stdDev a)
+normalFromSample xs
+  = normalDistr m (sqrt v)
+  where
+    (m,v) = S.meanVariance xs
 
 density :: NormalDistribution -> Double -> Double
 density d x = exp (-xm * xm / (2 * sd * sd)) / ndPdfDenom d