packages feed

foldl-statistics 0.1.2.0 → 0.1.3.0

raw patch · 4 files changed

+32/−3 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Control.Foldl.Statistics: fastLMVSKu :: Fold Double LMVSK
+ Control.Foldl.Statistics: getLMVSKu :: LMVSKState -> LMVSK

Files

CHANGELOG.md view
@@ -1,3 +1,10 @@+# 0.1.3.0+- Added unbiased versions of LMVSK functions++# 0.1.2.0+- Exposed monoidal LMVSKState+- Improved testing, including for fastLMVSK+ # 0.1.1.0 - Add fastLMVSK (length, mean, variance, skewness and kurtosis) - Add fastLinearReg (count, slope, (Y) intercept and correlation of `(x,y)`)
foldl-statistics.cabal view
@@ -1,5 +1,5 @@ name:                foldl-statistics-version:             0.1.2.0+version:             0.1.3.0 synopsis:            Statistical functions from the statistics package implemented as                      Folds. description:         The use of this package allows statistics to be computed using at most two
src/Control/Foldl/Statistics.hs view
@@ -45,10 +45,12 @@     , fastVarianceUnbiased     , fastStdDev     , fastLMVSK+    , fastLMVSKu     , LMVSK(..)     , LMVSKState     , foldLMVSKState     , getLMVSK+    , getLMVSKu     , fastLinearReg     , LinRegResult(..) @@ -422,6 +424,13 @@ fastLMVSK :: Fold Double LMVSK fastLMVSK = getLMVSK <$> foldLMVSKState +-- | Efficiently compute the+-- __length, mean, unbiased variance, skewness and kurtosis__ with a single pass.+--+-- /Since: 0.1.3.0/+{-# INLINE fastLMVSKu #-}+fastLMVSKu :: Fold Double LMVSK+fastLMVSKu = getLMVSKu <$> foldLMVSKState  {-# INLINE lmvsk0 #-} lmvsk0 = LMVSK 0 0 0 0 0@@ -468,12 +477,25 @@ getLMVSK (LMVSKState (LMVSK n m1 m2 m3 m4)) = LMVSK n m1 m2' m3' m4' where   nd = fromIntegral n   -- M2/(n-1.0)-  m2' = m2 / (nd-1)+  m2' = m2 / nd   --    sqrt(double(n)) * M3/ pow(M2, 1.5)   m3' = sqrt nd * m3 / (m2 ** 1.5)   -- double(n)*M4 / (M2*M2) - 3.0   m4' = nd*m4     / (m2*m2) - 3.0 +-- | Returns the stats which have been computed in a LMVSKState,+--   with the unbiased variance.+--+-- /Since: 0.1.2.0/+getLMVSKu :: LMVSKState -> LMVSK+getLMVSKu (LMVSKState (LMVSK n m1 m2 m3 m4)) = LMVSK n m1 m2' m3' m4' where+  nd = fromIntegral n+  -- M2/(n-1.0)+  m2' = m2 / (nd-1)+  --    sqrt(double(n)) * M3/ pow(M2, 1.5)+  m3' = sqrt nd * m3 / (m2 ** 1.5)+  -- double(n)*M4 / (M2*M2) - 3.0+  m4' = nd*m4     / (m2*m2) - 3.0   -- | When returned by `fastLinearReg`, contains the count,
test/Spec.hs view
@@ -35,7 +35,7 @@ testLMVSK m = LMVSK   <$> F.length   <*> mean-  <*> varianceUnbiased m+  <*> variance m   <*> skewness m   <*> kurtosis m