UNPKG

@thi.ng/vectors

Version:

Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts

24 lines (23 loc) 641 B
import { mag } from "./mag.js"; import { vmean } from "./mean.js"; import { mul } from "./mul.js"; import { subN } from "./subn.js"; import { sum } from "./sum.js"; import { sd } from "./variance.js"; const linReg = (a, b) => { const ma = vmean(a); const mb = vmean(b); a = subN([], a, ma); b = subN([], b, mb); const sda = sd(a, true); const sdb = sd(b, true); const m = mag(a) * mag(b); if (m === 0) return { ma, mb, sda, sdb, r: 0, slope: 0, y0: mb }; const r = sum(mul(null, a, b)) / m; const slope = r * (sdb / sda); const y0 = mb - slope * ma; return { ma, mb, sda, sdb, r, slope, y0 }; }; export { linReg };