Cumulative standard deviation: Difference between revisions
Content added Content deleted
m (→{{header|Haskell}}: Tidying) |
|||
Line 1,904: | Line 1,904: | ||
Or, as a map-accumulation over an indexed list |
Or, perhaps more simply, as a map-accumulation over an indexed list: |
||
<lang Haskell>import Data.List (mapAccumL) |
<lang Haskell>import Data.List (mapAccumL) |
||
-------------- CUMULATIVE STANDARD DEVIATION ------------- |
-------------- CUMULATIVE STANDARD DEVIATION ------------- |
||
cumulativeStdDevns :: [Float] -> [Float] |
cumulativeStdDevns :: [Float] -> [Float] |
||
cumulativeStdDevns xs = snd $ mapAccumL go (0, 0) $ zip [1 ..] xs |
cumulativeStdDevns xs = snd $ mapAccumL go (0, 0) $ zip [1.0 ..] xs |
||
where |
where |
||
go (s, q) (i, x) = |
go (s, q) (i, x) = |
||
let _s = s + x |
let _s = s + x |
||
_q = q + (x ^ 2) |
_q = q + (x ^ 2) |
||
in ((_s, _q), sqrt ((_q / i) - ((_s / i) ^ 2))) |
|||
in ((_s, _q), sqrt ((_q / _i) - ((_s / _i) ^ 2))) |
|||
--------------------------- TEST ------------------------- |
--------------------------- TEST ------------------------- |
||
main :: IO () |
main :: IO () |