Welford Variance

Run Settings
LanguageHaskell
Language Version
Run Command
-- Welford's variance -- new_var = old_var * (x - old_mean) * (x - new_mean) stats = scanl (\ (count, sum, mean, var) x -> let k = 1 / (count + 1) mean' = mean + k * (x - mean) ssr' = (count - 1) * var + k * count * (x - mean) * (x - mean) in (count + 1, sum + x, mean', ssr' / (max 1 count)) ) (0, 0, 0, 0) main = mapM_ print . stats . read =<< getLine
Editor Settings
Theme
Key bindings
Full width
Lines