module Numeric.Statistics.Moment (mean, var,
stddev, avgdev,
skew, kurtosis) where
mean :: (Fractional a) => [a] -> a
mean :: forall a. Fractional a => [a] -> a
mean [a]
x = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
Prelude.sum [a]
x forall a. Fractional a => a -> a -> a
/ (forall a b. (Integral a, Num b) => a -> b
fromIntegralforall b c a. (b -> c) -> (a -> b) -> a -> c
.forall (t :: * -> *) a. Foldable t => t a -> Int
length) [a]
x
var :: (Fractional a) => [a] -> a
var :: forall a. Fractional a => [a] -> a
var [a]
xs = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
Prelude.sum (forall a b. (a -> b) -> [a] -> [b]
map (\a
x -> (a
x forall a. Num a => a -> a -> a
- a
mu)forall a b. (Num a, Integral b) => a -> b -> a
^(Int
2::Int)) [a]
xs) forall a. Fractional a => a -> a -> a
/ (a
n forall a. Num a => a -> a -> a
- a
1)
where mu :: a
mu = forall a. Fractional a => [a] -> a
mean [a]
xs
n :: a
n = forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. Foldable t => t a -> Int
length forall a b. (a -> b) -> a -> b
$ [a]
xs
stddev :: (RealFloat a) => [a] -> a
stddev :: forall a. RealFloat a => [a] -> a
stddev [a]
x = forall a. Floating a => a -> a
sqrt forall a b. (a -> b) -> a -> b
$ forall a. Fractional a => [a] -> a
var [a]
x
avgdev :: (RealFloat a) => [a] -> a
avgdev :: forall a. RealFloat a => [a] -> a
avgdev [a]
xs = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
Prelude.sum (forall a b. (a -> b) -> [a] -> [b]
map (\a
x -> forall a. Num a => a -> a
abs (a
x forall a. Num a => a -> a -> a
- a
mu)) [a]
xs) forall a. Fractional a => a -> a -> a
/ a
n
where mu :: a
mu = forall a. Fractional a => [a] -> a
mean [a]
xs
n :: a
n = forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. Foldable t => t a -> Int
length forall a b. (a -> b) -> a -> b
$ [a]
xs
skew :: (RealFloat a) => [a] -> a
skew :: forall a. RealFloat a => [a] -> a
skew [a]
xs = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
Prelude.sum (forall a b. (a -> b) -> [a] -> [b]
map (\a
x -> ((a
x forall a. Num a => a -> a -> a
- a
mu) forall a. Fractional a => a -> a -> a
/ a
sigma)forall a b. (Num a, Integral b) => a -> b -> a
^(Int
3::Int)) [a]
xs) forall a. Fractional a => a -> a -> a
/ a
n
where mu :: a
mu = forall a. Fractional a => [a] -> a
mean [a]
xs
sigma :: a
sigma = forall a. RealFloat a => [a] -> a
stddev [a]
xs
n :: a
n = forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. Foldable t => t a -> Int
length forall a b. (a -> b) -> a -> b
$ [a]
xs
kurtosis :: (RealFloat a) => [a] -> a
kurtosis :: forall a. RealFloat a => [a] -> a
kurtosis [a]
xs = forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
Prelude.sum (forall a b. (a -> b) -> [a] -> [b]
map (\a
x -> ((a
x forall a. Num a => a -> a -> a
- a
mu) forall a. Fractional a => a -> a -> a
/ a
sigma)forall a b. (Num a, Integral b) => a -> b -> a
^(Int
4::Int)) [a]
xs) forall a. Fractional a => a -> a -> a
/ a
n forall a. Num a => a -> a -> a
- a
3
where mu :: a
mu = forall a. Fractional a => [a] -> a
mean [a]
xs
sigma :: a
sigma = forall a. RealFloat a => [a] -> a
stddev [a]
xs
n :: a
n = forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. Foldable t => t a -> Int
length forall a b. (a -> b) -> a -> b
$ [a]
xs