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 +7/−0
- foldl-statistics.cabal +1/−1
- src/Control/Foldl/Statistics.hs +23/−1
- test/Spec.hs +1/−1
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