module Data.TDigest.Postprocess (
I.HasHistogram (..),
I.HistBin (..),
median,
quantile,
mean,
variance,
stddev,
cdf,
icdf,
I.Affine (..)
) where
import qualified Data.List.NonEmpty as NE
import Prelude ()
import Prelude.Compat
import qualified Data.TDigest.Postprocess.Internal as I
median :: I.HasHistogram a f => a -> f Double
median :: forall a (f :: * -> *). HasHistogram a f => a -> f Double
median = forall a (f :: * -> *). HasHistogram a f => Double -> a -> f Double
quantile Double
0.5
quantile :: I.HasHistogram a f => Double -> a -> f Double
quantile :: forall a (f :: * -> *). HasHistogram a f => Double -> a -> f Double
quantile Double
q a
x = Double -> Double -> NonEmpty HistBin -> Double
I.quantile Double
q (forall a (f :: * -> *). HasHistogram a f => a -> Double
I.totalWeight a
x) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a (f :: * -> *).
HasHistogram a f =>
a -> f (NonEmpty HistBin)
I.histogram a
x
mean :: I.HasHistogram a f => a -> f Double
mean :: forall a (f :: * -> *). HasHistogram a f => a -> f Double
mean a
x = NonEmpty HistBin -> Double
I.mean forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a (f :: * -> *).
HasHistogram a f =>
a -> f (NonEmpty HistBin)
I.histogram a
x
variance :: I.HasHistogram a f => a -> f Double
variance :: forall a (f :: * -> *). HasHistogram a f => a -> f Double
variance a
x = NonEmpty HistBin -> Double
I.variance forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a (f :: * -> *).
HasHistogram a f =>
a -> f (NonEmpty HistBin)
I.histogram a
x
stddev :: I.HasHistogram a f => a -> f Double
stddev :: forall a (f :: * -> *). HasHistogram a f => a -> f Double
stddev = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. Floating a => a -> a
sqrt forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a (f :: * -> *). HasHistogram a f => a -> f Double
variance
cdf :: I.HasHistogram a f => Double -> a -> Double
cdf :: forall a (f :: * -> *). HasHistogram a f => Double -> a -> Double
cdf Double
q a
x = forall (t :: * -> *) b a. Affine t => b -> (a -> b) -> t a -> b
I.affine Double
1 (Double -> Double -> [HistBin] -> Double
I.cdf Double
q (forall a (f :: * -> *). HasHistogram a f => a -> Double
I.totalWeight a
x) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. NonEmpty a -> [a]
NE.toList) forall a b. (a -> b) -> a -> b
$ forall a (f :: * -> *).
HasHistogram a f =>
a -> f (NonEmpty HistBin)
I.histogram a
x
icdf :: I.HasHistogram a f => Double -> a -> f Double
icdf :: forall a (f :: * -> *). HasHistogram a f => Double -> a -> f Double
icdf = forall a (f :: * -> *). HasHistogram a f => Double -> a -> f Double
quantile