@thi.ng/transducers-stats
Version:
Transducers for statistical / technical analysis
27 lines (26 loc) • 733 B
JavaScript
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
};