Safe Haskell | None |
---|---|
Language | Haskell2010 |
- 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
- 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 | |
|
Unbox a0 => Vector Vector (CountG a0) Source # | |
Unbox a0 => MVector MVector (CountG a0) Source # | |
Eq a => Eq (CountG a) Source # | |
Ord a => Ord (CountG a) Source # | |
Show a => Show (CountG a) Source # | |
Integral a => Monoid (CountG a) Source # | |
Unbox a0 => Unbox (CountG a0) Source # | |
CalcCount (CountG Int) Source # | |
Integral a => StatMonoid (CountG a) b Source # | |
data MVector s (CountG a0) Source # | |
data Vector (CountG a0) Source # | |
Mean
Incremental calculation of mean. Sum of elements is calculated using Kahan-Babuška-Neumaier summation.
Eq MeanKBN Source # | |
Data MeanKBN Source # | |
Show MeanKBN Source # | |
Generic MeanKBN Source # | |
Monoid MeanKBN Source # | |
Unbox MeanKBN Source # | |
CalcMean MeanKBN Source # | |
CalcCount MeanKBN Source # | |
Vector Vector MeanKBN Source # | |
MVector MVector MeanKBN Source # | |
Real a => StatMonoid MeanKBN a Source # | |
type Rep MeanKBN Source # | |
data Vector MeanKBN Source # | |
data MVector s MeanKBN Source # | |
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]
Eq WelfordMean Source # | |
Data WelfordMean Source # | |
Show WelfordMean Source # | |
Generic WelfordMean Source # | |
Monoid WelfordMean Source # | |
Unbox WelfordMean Source # | |
CalcMean WelfordMean Source # | |
CalcCount WelfordMean Source # | |
Vector Vector WelfordMean Source # | |
MVector MVector WelfordMean Source # | |
Real a => StatMonoid WelfordMean a Source # | \[ s_n = s_{n-1} + \frac{x_n - s_{n-1}}{n} \] |
type Rep WelfordMean Source # | |
data Vector WelfordMean Source # | |
data MVector s WelfordMean Source # | |
asWelfordMean :: WelfordMean -> WelfordMean Source #
Type restricted id
Incremental calculation of mean. Sum of elements is calculated using compensated Kahan summation.
asMeanKahan :: MeanKahan -> MeanKahan Source #
Variance
Incremental algorithms for calculation the standard deviation.
Eq Variance Source # | |
Show Variance Source # | |
Monoid Variance Source # | Iterative algorithm for calculation of variance [Chan1979] |
Unbox Variance Source # | |
CalcVariance Variance Source # | |
CalcMean Variance Source # | |
CalcCount Variance Source # | |
Vector Vector Variance Source # | |
MVector MVector Variance Source # | |
Real a => StatMonoid Variance a Source # | |
data Vector Variance Source # | |
data MVector s Variance Source # | |
asVariance :: Variance -> Variance Source #
Type restricted 'id '
Maximum and minimum
Calculate maximum of sample
Calculate minimum of sample
Calculate maximum of sample. For empty sample returns NaN. Any NaN encountered will be ignored.
Calculate minimum of sample of Doubles. For empty sample returns NaN. Any NaN encountered will be ignored.
Binomial trials
Accumulator for binomial trials.
BinomAcc | |
|
Accessors
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 \]
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.