UNPKG

@thi.ng/transducers-stats

Version:

Transducers for statistical / technical analysis

27 lines (26 loc) 733 B
import { comp } from "@thi.ng/transducers/comp"; import { drop } from "@thi.ng/transducers/drop"; import { __iter } from "@thi.ng/transducers/iterator"; import { map } from "@thi.ng/transducers/map"; import { multiplex } from "@thi.ng/transducers/multiplex"; import { partition } from "@thi.ng/transducers/partition"; import { mse } from "./mse.js"; import { sma } from "./sma.js"; function sd(...args) { const iter = __iter(sd, args); if (iter) { return iter; } const period = args[0] || 20; const scale = args[1] || 1; return comp( multiplex(partition(period, 1), sma(period)), drop(period - 1), map( ([window, mean]) => Math.sqrt(mse(window, mean) / period) * scale ) ); } export { sd };