Browse files

More efficient S.D.Normal.normalFromSample

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

Almost 2x performance gain
  • Loading branch information...
1 parent 07c9555 commit 53b2e075bcf852c32bea25001fb0c3c1efa08dde @Shimuuar Shimuuar committed Nov 27, 2012
Showing with 4 additions and 1 deletion.
  1. +4 −1 Statistics/Distribution/Normal.hs
View
5 Statistics/Distribution/Normal.hs
@@ -88,7 +88,10 @@ normalDistr m sd
-- 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

0 comments on commit 53b2e07

Please sign in to comment.