Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype CountG a = CountG {
- calcCountN :: a
- type Count = CountG Int
- asCount :: CountG a -> CountG a
- data MeanKBN = MeanKBN !Int !KBNSum
- asMeanKBN :: MeanKBN -> MeanKBN
- data WelfordMean = WelfordMean !Int !Double
- asWelfordMean :: WelfordMean -> WelfordMean
- data MeanKahan = MeanKahan !Int !KahanSum
- asMeanKahan :: MeanKahan -> MeanKahan
- data Variance = Variance !Int !Double !Double
- asVariance :: Variance -> Variance
- newtype Max a = Max {}
- newtype Min a = Min {}
- newtype MaxD = MaxD {}
- newtype MinD = MinD {}
- data BinomAcc = BinomAcc {
- binomAccSuccess :: !Int
- binomAccTotal :: !Int
- asBinomAcc :: BinomAcc -> BinomAcc
- class CalcCount m where
- class CalcMean m where
- class CalcVariance m where
- calcVariance :: m -> Maybe Double
- calcVarianceML :: m -> Maybe Double
- calcStddev :: CalcVariance m => m -> Maybe Double
- calcStddevML :: CalcVariance m => m -> Maybe Double
Mean & Variance
Number of elements
Calculate number of elements in the sample.
CountG | |
|
Instances
Mean
Incremental calculation of mean. Sum of elements is calculated using Kahan-Babuška-Neumaier summation.
Instances
data WelfordMean Source #
Incremental calculation of mean. One of algorithm's advantage is protection against double overflow:
λ> calcMean $ asMeanKBN $ reduceSample (replicate 100 1e308) Just NaN λ> calcMean $ asWelfordMean $ reduceSample (replicate 100 1e308) Just 1.0e308
Algorithm is due to Welford [Welford1962]
Instances
asWelfordMean :: WelfordMean -> WelfordMean Source #
Type restricted id
Incremental calculation of mean. Sum of elements is calculated using compensated Kahan summation.
Instances
asMeanKahan :: MeanKahan -> MeanKahan Source #
Variance
Incremental algorithms for calculation the standard deviation.
Instances
asVariance :: Variance -> Variance Source #
Type restricted 'id '
Maximum and minimum
Calculate maximum of sample
Instances
Eq a => Eq (Max a) Source # | |
Data a => Data (Max a) Source # | |
Defined in Data.Monoid.Statistics.Numeric gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Max a -> c (Max a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Max a) # dataTypeOf :: Max a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Max a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Max a)) # gmapT :: (forall b. Data b => b -> b) -> Max a -> Max a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Max a -> r # gmapQ :: (forall d. Data d => d -> u) -> Max a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Max a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Max a -> m (Max a) # | |
Ord a => Ord (Max a) Source # | |
Show a => Show (Max a) Source # | |
Generic (Max a) Source # | |
Ord a => Semigroup (Max a) Source # | |
Ord a => Monoid (Max a) Source # | |
(Ord a, a ~ a') => StatMonoid (Max a) a' Source # | |
Defined in Data.Monoid.Statistics.Numeric | |
type Rep (Max a) Source # | |
Defined in Data.Monoid.Statistics.Numeric |
Calculate minimum of sample
Instances
Eq a => Eq (Min a) Source # | |
Data a => Data (Min a) Source # | |
Defined in Data.Monoid.Statistics.Numeric gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Min a -> c (Min a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Min a) # dataTypeOf :: Min a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Min a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Min a)) # gmapT :: (forall b. Data b => b -> b) -> Min a -> Min a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Min a -> r # gmapQ :: (forall d. Data d => d -> u) -> Min a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Min a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Min a -> m (Min a) # | |
Ord a => Ord (Min a) Source # | |
Show a => Show (Min a) Source # | |
Generic (Min a) Source # | |
Ord a => Semigroup (Min a) Source # | |
Ord a => Monoid (Min a) Source # | |
(Ord a, a ~ a') => StatMonoid (Min a) a' Source # | |
Defined in Data.Monoid.Statistics.Numeric | |
type Rep (Min a) Source # | |
Defined in Data.Monoid.Statistics.Numeric |
Calculate maximum of sample. For empty sample returns NaN. Any NaN encountered will be ignored.
Instances
Calculate minimum of sample of Doubles. For empty sample returns NaN. Any NaN encountered will be ignored.
Instances
Binomial trials
Accumulator for binomial trials.
BinomAcc | |
|
Instances
Eq BinomAcc Source # | |
Data BinomAcc Source # | |
Defined in Data.Monoid.Statistics.Numeric gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BinomAcc -> c BinomAcc # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BinomAcc # toConstr :: BinomAcc -> Constr # dataTypeOf :: BinomAcc -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BinomAcc) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BinomAcc) # gmapT :: (forall b. Data b => b -> b) -> BinomAcc -> BinomAcc # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BinomAcc -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BinomAcc -> r # gmapQ :: (forall d. Data d => d -> u) -> BinomAcc -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> BinomAcc -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BinomAcc -> m BinomAcc # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BinomAcc -> m BinomAcc # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BinomAcc -> m BinomAcc # | |
Ord BinomAcc Source # | |
Defined in Data.Monoid.Statistics.Numeric | |
Show BinomAcc Source # | |
Generic BinomAcc Source # | |
Semigroup BinomAcc Source # | |
Monoid BinomAcc Source # | |
StatMonoid BinomAcc Bool Source # | |
type Rep BinomAcc Source # | |
Defined in Data.Monoid.Statistics.Numeric type Rep BinomAcc = D1 (MetaData "BinomAcc" "Data.Monoid.Statistics.Numeric" "monoid-statistics-1.0.1.0-1S6uCZlndwKGUT6ITei8nH" False) (C1 (MetaCons "BinomAcc" PrefixI True) (S1 (MetaSel (Just "binomAccSuccess") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Int) :*: S1 (MetaSel (Just "binomAccTotal") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Int))) |
Accessors
class CalcCount m where Source #
Accumulator could be used to evaluate number of elements in sample.
class CalcMean m where Source #
Monoids which could be used to calculate sample mean:
\[ \bar{x} = \frac{1}{N}\sum_{i=1}^N{x_i} \]
class CalcVariance m where Source #
Monoids which could be used to calculate sample variance. Both
methods return Nothing
if there isn't enough data to make
estimate.
calcVariance :: m -> Maybe Double Source #
Calculate unbiased estimate of variance:
\[ \sigma^2 = \frac{1}{N-1}\sum_{i=1}^N(x_i - \bar{x})^2 \]
calcVarianceML :: m -> Maybe Double Source #
Calculate maximum likelihood estimate of variance:
\[ \sigma^2 = \frac{1}{N}\sum_{i=1}^N(x_i - \bar{x})^2 \]
Instances
CalcVariance Variance Source # | |
Defined in Data.Monoid.Statistics.Numeric |
calcStddev :: CalcVariance m => m -> Maybe Double Source #
Calculate sample standard deviation from unbiased estimation of variance:
\[ \sigma = \sqrt{\frac{1}{N-1}\sum_{i=1}^N(x_i - \bar{x})^2 } \]
calcStddevML :: CalcVariance m => m -> Maybe Double Source #
Calculate sample standard deviation from maximum likelihood estimation of variance:
\[ \sigma = \sqrt{\frac{1}{N}\sum_{i=1}^N(x_i - \bar{x})^2 } \]
References
- [Welford1962] Welford, B.P. (1962) Note on a method for calculating corrected sums of squares and products. Technometrics 4(3):419-420. http://www.jstor.org/stable/1266577
- [Chan1979] Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1979), Updating Formulae and a Pairwise Algorithm for Computing Sample Variances., Technical Report STAN-CS-79-773, Department of Computer Science, Stanford University. Page 4.