mathfuse 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +21 -0
  3. package/README.md +239 -0
  4. package/dist/cjs/algebra/index.d.ts +99 -0
  5. package/dist/cjs/algebra/index.d.ts.map +1 -0
  6. package/dist/cjs/algebra/index.js +358 -0
  7. package/dist/cjs/algebra/index.js.map +1 -0
  8. package/dist/cjs/index.d.ts +15 -0
  9. package/dist/cjs/index.d.ts.map +1 -0
  10. package/dist/cjs/index.js +82 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/number-theory/index.d.ts +81 -0
  13. package/dist/cjs/number-theory/index.d.ts.map +1 -0
  14. package/dist/cjs/number-theory/index.js +331 -0
  15. package/dist/cjs/number-theory/index.js.map +1 -0
  16. package/dist/cjs/numerical/index.d.ts +95 -0
  17. package/dist/cjs/numerical/index.d.ts.map +1 -0
  18. package/dist/cjs/numerical/index.js +300 -0
  19. package/dist/cjs/numerical/index.js.map +1 -0
  20. package/dist/cjs/stats/index.d.ts +32 -0
  21. package/dist/cjs/stats/index.d.ts.map +1 -0
  22. package/dist/cjs/stats/index.js +232 -0
  23. package/dist/cjs/stats/index.js.map +1 -0
  24. package/dist/esm/algebra/index.d.ts +99 -0
  25. package/dist/esm/algebra/index.d.ts.map +1 -0
  26. package/dist/esm/algebra/index.js +333 -0
  27. package/dist/esm/algebra/index.js.map +1 -0
  28. package/dist/esm/index.d.ts +15 -0
  29. package/dist/esm/index.d.ts.map +1 -0
  30. package/dist/esm/index.js +16 -0
  31. package/dist/esm/index.js.map +1 -0
  32. package/dist/esm/number-theory/index.d.ts +81 -0
  33. package/dist/esm/number-theory/index.d.ts.map +1 -0
  34. package/dist/esm/number-theory/index.js +311 -0
  35. package/dist/esm/number-theory/index.js.map +1 -0
  36. package/dist/esm/numerical/index.d.ts +95 -0
  37. package/dist/esm/numerical/index.d.ts.map +1 -0
  38. package/dist/esm/numerical/index.js +280 -0
  39. package/dist/esm/numerical/index.js.map +1 -0
  40. package/dist/esm/stats/index.d.ts +32 -0
  41. package/dist/esm/stats/index.d.ts.map +1 -0
  42. package/dist/esm/stats/index.js +208 -0
  43. package/dist/esm/stats/index.js.map +1 -0
  44. package/dist/types/algebra/index.d.ts +99 -0
  45. package/dist/types/algebra/index.d.ts.map +1 -0
  46. package/dist/types/index.d.ts +15 -0
  47. package/dist/types/index.d.ts.map +1 -0
  48. package/dist/types/number-theory/index.d.ts +81 -0
  49. package/dist/types/number-theory/index.d.ts.map +1 -0
  50. package/dist/types/numerical/index.d.ts +95 -0
  51. package/dist/types/numerical/index.d.ts.map +1 -0
  52. package/dist/types/stats/index.d.ts +32 -0
  53. package/dist/types/stats/index.d.ts.map +1 -0
  54. package/package.json +85 -0
@@ -0,0 +1,300 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kahanSum = exports.remap = exports.approxEqual = exports.roundTo = exports.clamp = exports.lagrange = exports.tableInterpolate = exports.inverseLerp = exports.lerp = exports.gaussLegendre = exports.integrate = exports.gradient = exports.secondDerivative = exports.derivative = exports.brent = exports.newtonRaphson = exports.bisection = void 0;
4
+ /**
5
+ * Bisection method — guaranteed convergence on a bracketed root.
6
+ * @param f - continuous function
7
+ * @param a - left bracket
8
+ * @param b - right bracket (f(a) and f(b) must have opposite signs)
9
+ */
10
+ function bisection(f, a, b, tol = 1e-10, maxIter = 100) {
11
+ if (f(a) * f(b) > 0) {
12
+ throw new RangeError('f(a) and f(b) must have opposite signs (bracket the root)');
13
+ }
14
+ let lo = a, hi = b, mid = a, iter = 0;
15
+ while (iter < maxIter) {
16
+ mid = (lo + hi) / 2;
17
+ const fmid = f(mid);
18
+ const error = (hi - lo) / 2;
19
+ if (error < tol || fmid === 0) {
20
+ return { root: mid, iterations: iter + 1, converged: true, error };
21
+ }
22
+ if (f(lo) * fmid < 0)
23
+ hi = mid;
24
+ else
25
+ lo = mid;
26
+ iter++;
27
+ }
28
+ return { root: mid, iterations: maxIter, converged: false, error: (hi - lo) / 2 };
29
+ }
30
+ exports.bisection = bisection;
31
+ /**
32
+ * Newton-Raphson method — fast quadratic convergence near smooth roots.
33
+ * @param f - function
34
+ * @param df - derivative (if omitted, estimated numerically)
35
+ */
36
+ function newtonRaphson(f, x0, df, tol = 1e-10, maxIter = 100) {
37
+ const h = 1e-7;
38
+ const deriv = df ?? ((x) => (f(x + h) - f(x - h)) / (2 * h));
39
+ let x = x0;
40
+ for (let iter = 0; iter < maxIter; iter++) {
41
+ const fx = f(x);
42
+ const dfx = deriv(x);
43
+ if (Math.abs(dfx) < 1e-14)
44
+ throw new RangeError('derivative is zero — Newton-Raphson failed');
45
+ const dx = fx / dfx;
46
+ x -= dx;
47
+ if (Math.abs(dx) < tol) {
48
+ return { root: x, iterations: iter + 1, converged: true, error: Math.abs(dx) };
49
+ }
50
+ }
51
+ return { root: x, iterations: maxIter, converged: false, error: Math.abs(f(x)) };
52
+ }
53
+ exports.newtonRaphson = newtonRaphson;
54
+ /**
55
+ * Brent's method — combines bisection, secant, and inverse quadratic interpolation.
56
+ * Robust and fast — the recommended general-purpose root finder.
57
+ */
58
+ function brent(f, a, b, tol = 1e-10, maxIter = 100) {
59
+ let fa = f(a), fb = f(b);
60
+ if (fa * fb > 0) {
61
+ throw new RangeError('f(a) and f(b) must have opposite signs');
62
+ }
63
+ if (Math.abs(fa) < Math.abs(fb)) {
64
+ [a, b] = [b, a];
65
+ [fa, fb] = [fb, fa];
66
+ }
67
+ let c = a, fc = fa, s = 0;
68
+ let mflag = true, d = 0;
69
+ for (let iter = 0; iter < maxIter; iter++) {
70
+ if (Math.abs(b - a) < tol) {
71
+ return { root: b, iterations: iter + 1, converged: true, error: Math.abs(b - a) };
72
+ }
73
+ if (fa !== fc && fb !== fc) {
74
+ s = (a * fb * fc) / ((fa - fb) * (fa - fc)) +
75
+ (b * fa * fc) / ((fb - fa) * (fb - fc)) +
76
+ (c * fa * fb) / ((fc - fa) * (fc - fb));
77
+ }
78
+ else {
79
+ s = b - fb * (b - a) / (fb - fa);
80
+ }
81
+ const cond1 = (s < (3 * a + b) / 4 || s > b);
82
+ const cond2 = mflag && Math.abs(s - b) >= Math.abs(b - c) / 2;
83
+ const cond3 = !mflag && Math.abs(s - b) >= Math.abs(c - d) / 2;
84
+ if (cond1 || cond2 || cond3) {
85
+ s = (a + b) / 2;
86
+ mflag = true;
87
+ }
88
+ else {
89
+ mflag = false;
90
+ }
91
+ const fs = f(s);
92
+ d = c;
93
+ c = b;
94
+ fc = fb;
95
+ if (fa * fs < 0) {
96
+ b = s;
97
+ fb = fs;
98
+ }
99
+ else {
100
+ a = s;
101
+ fa = fs;
102
+ }
103
+ if (Math.abs(fa) < Math.abs(fb)) {
104
+ [a, b] = [b, a];
105
+ [fa, fb] = [fb, fa];
106
+ }
107
+ }
108
+ return { root: b, iterations: maxIter, converged: false, error: Math.abs(f(b)) };
109
+ }
110
+ exports.brent = brent;
111
+ // ─── Numerical Differentiation ────────────────────────────────────────────────
112
+ /**
113
+ * First derivative using central differences (O(h²) accuracy).
114
+ */
115
+ function derivative(f, x, h = 1e-5) {
116
+ return (f(x + h) - f(x - h)) / (2 * h);
117
+ }
118
+ exports.derivative = derivative;
119
+ /**
120
+ * Second derivative using central differences.
121
+ */
122
+ function secondDerivative(f, x, h = 1e-4) {
123
+ return (f(x + h) - 2 * f(x) + f(x - h)) / h ** 2;
124
+ }
125
+ exports.secondDerivative = secondDerivative;
126
+ /**
127
+ * Gradient of a multivariate function at point x.
128
+ * @param f - function accepting a vector and returning a scalar
129
+ * @param x - point at which to compute the gradient
130
+ */
131
+ function gradient(f, x, h = 1e-5) {
132
+ return x.map((_, i) => {
133
+ const xp = [...x];
134
+ xp[i] += h;
135
+ const xm = [...x];
136
+ xm[i] -= h;
137
+ return (f(xp) - f(xm)) / (2 * h);
138
+ });
139
+ }
140
+ exports.gradient = gradient;
141
+ // ─── Numerical Integration ────────────────────────────────────────────────────
142
+ /**
143
+ * Adaptive Simpson's rule — highly accurate for smooth functions.
144
+ */
145
+ function integrate(f, a, b, tol = 1e-8, maxDepth = 50) {
146
+ function simpsonRule(fa, fm, fb, width) {
147
+ return (width / 6) * (fa + 4 * fm + fb);
148
+ }
149
+ function adaptive(x0, x1, fa, fm, fb, whole, depth) {
150
+ const mid = (x0 + x1) / 2;
151
+ const m0 = (x0 + mid) / 2;
152
+ const m1 = (mid + x1) / 2;
153
+ const fm0 = f(m0);
154
+ const fm1 = f(m1);
155
+ const leftV = simpsonRule(fa, fm0, fm, mid - x0);
156
+ const rightV = simpsonRule(fm, fm1, fb, x1 - mid);
157
+ const delta = leftV + rightV - whole;
158
+ if (depth >= maxDepth || Math.abs(delta) <= 15 * tol) {
159
+ return leftV + rightV + delta / 15;
160
+ }
161
+ return (adaptive(x0, mid, fa, fm0, fm, leftV, depth + 1) +
162
+ adaptive(mid, x1, fm, fm1, fb, rightV, depth + 1));
163
+ }
164
+ const mid = (a + b) / 2;
165
+ const fa = f(a), fm = f(mid), fb = f(b);
166
+ const whole = simpsonRule(fa, fm, fb, b - a);
167
+ return adaptive(a, b, fa, fm, fb, whole, 0);
168
+ }
169
+ exports.integrate = integrate;
170
+ /**
171
+ * Gauss-Legendre quadrature (5-point) — excellent for polynomials and smooth functions.
172
+ * @param f - function to integrate
173
+ * @param a - lower bound
174
+ * @param b - upper bound
175
+ */
176
+ function gaussLegendre(f, a, b) {
177
+ // 5-point GL nodes and weights on [-1, 1]
178
+ const nodes = [
179
+ -0.9061798459386640, -0.5384693101056831, 0,
180
+ 0.5384693101056831, 0.9061798459386640,
181
+ ];
182
+ const weights = [
183
+ 0.2369268850561891, 0.4786286704993665, 0.5688888888888889,
184
+ 0.4786286704993665, 0.2369268850561891,
185
+ ];
186
+ const half = (b - a) / 2;
187
+ const mid = (a + b) / 2;
188
+ return half * nodes.reduce((s, t, i) => s + weights[i] * f(mid + half * t), 0);
189
+ }
190
+ exports.gaussLegendre = gaussLegendre;
191
+ // ─── Interpolation ────────────────────────────────────────────────────────────
192
+ /**
193
+ * Linear interpolation between two points.
194
+ */
195
+ function lerp(a, b, t) {
196
+ return a + (b - a) * t;
197
+ }
198
+ exports.lerp = lerp;
199
+ /**
200
+ * Inverse lerp — find t such that lerp(a, b, t) === value.
201
+ */
202
+ function inverseLerp(a, b, value) {
203
+ if (a === b)
204
+ throw new RangeError('a and b must be different for inverse lerp');
205
+ return (value - a) / (b - a);
206
+ }
207
+ exports.inverseLerp = inverseLerp;
208
+ /**
209
+ * Linear interpolation from a data table (sorted x values required).
210
+ * @param xs - sorted x values
211
+ * @param ys - corresponding y values
212
+ * @param x - query x value
213
+ */
214
+ function tableInterpolate(xs, ys, x) {
215
+ if (xs.length !== ys.length || xs.length < 2) {
216
+ throw new RangeError('xs and ys must have equal length >= 2');
217
+ }
218
+ if (x <= xs[0])
219
+ return ys[0];
220
+ if (x >= xs[xs.length - 1])
221
+ return ys[ys.length - 1];
222
+ let lo = 0, hi = xs.length - 1;
223
+ while (hi - lo > 1) {
224
+ const mid = (lo + hi) >> 1;
225
+ if (xs[mid] <= x)
226
+ lo = mid;
227
+ else
228
+ hi = mid;
229
+ }
230
+ return ys[lo] + ((x - xs[lo]) / (xs[hi] - xs[lo])) * (ys[hi] - ys[lo]);
231
+ }
232
+ exports.tableInterpolate = tableInterpolate;
233
+ /**
234
+ * Lagrange polynomial interpolation at a query point.
235
+ */
236
+ function lagrange(xs, ys, x) {
237
+ if (xs.length !== ys.length)
238
+ throw new RangeError('xs and ys must have equal length');
239
+ const n = xs.length;
240
+ let result = 0;
241
+ for (let i = 0; i < n; i++) {
242
+ let term = ys[i];
243
+ for (let j = 0; j < n; j++) {
244
+ if (j !== i) {
245
+ if (xs[i] === xs[j])
246
+ throw new RangeError('xs must have distinct values');
247
+ term *= (x - xs[j]) / (xs[i] - xs[j]);
248
+ }
249
+ }
250
+ result += term;
251
+ }
252
+ return result;
253
+ }
254
+ exports.lagrange = lagrange;
255
+ // ─── Misc Numerical Utilities ─────────────────────────────────────────────────
256
+ /**
257
+ * Clamp a value to [min, max].
258
+ */
259
+ function clamp(value, min, max) {
260
+ return Math.min(max, Math.max(min, value));
261
+ }
262
+ exports.clamp = clamp;
263
+ /**
264
+ * Round to n decimal places.
265
+ */
266
+ function roundTo(value, decimals) {
267
+ const factor = 10 ** decimals;
268
+ return Math.round(value * factor) / factor;
269
+ }
270
+ exports.roundTo = roundTo;
271
+ /**
272
+ * Check if two floats are approximately equal.
273
+ */
274
+ function approxEqual(a, b, relTol = 1e-9, absTol = 0) {
275
+ return Math.abs(a - b) <= Math.max(relTol * Math.max(Math.abs(a), Math.abs(b)), absTol);
276
+ }
277
+ exports.approxEqual = approxEqual;
278
+ /**
279
+ * Map a value from one range to another.
280
+ * @example remap(5, 0, 10, 0, 100) // 50
281
+ */
282
+ function remap(value, inMin, inMax, outMin, outMax) {
283
+ return outMin + ((value - inMin) / (inMax - inMin)) * (outMax - outMin);
284
+ }
285
+ exports.remap = remap;
286
+ /**
287
+ * Sum of an array using compensated Kahan summation (reduces floating-point error).
288
+ */
289
+ function kahanSum(data) {
290
+ let sum = 0, comp = 0;
291
+ for (const v of data) {
292
+ const y = v - comp;
293
+ const t = sum + y;
294
+ comp = t - sum - y;
295
+ sum = t;
296
+ }
297
+ return sum;
298
+ }
299
+ exports.kahanSum = kahanSum;
300
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/numerical/index.ts"],"names":[],"mappings":";;;AAcA;;;;;GAKG;AACH,SAAgB,SAAS,CACvB,CAAK,EACL,CAAS,EACT,CAAS,EACT,GAAG,GAAG,KAAK,EACX,OAAO,GAAG,GAAG;IAEb,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,2DAA2D,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IACtC,OAAO,IAAI,GAAG,OAAO,EAAE,CAAC;QACtB,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;YAAE,EAAE,GAAG,GAAG,CAAC;;YAAM,EAAE,GAAG,GAAG,CAAC;QAC9C,IAAI,EAAE,CAAC;IACT,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AACpF,CAAC;AAtBD,8BAsBC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,CAAK,EACL,EAAU,EACV,EAAO,EACP,GAAG,GAAG,KAAK,EACX,OAAO,GAAG,GAAG;IAEb,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;YAAE,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;QAC9F,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;QACpB,CAAC,IAAI,EAAE,CAAC;QACR,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AArBD,sCAqBC;AAED;;;GAGG;AACH,SAAgB,KAAK,CACnB,CAAK,EACL,CAAS,EACT,CAAS,EACT,GAAG,GAAG,KAAK,EACX,OAAO,GAAG,GAAG;IAEb,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAAC,CAAC;IAC1E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YAC1B,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpF,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3B,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBACvC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YAC5B,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,KAAK,CAAC;QAChB,CAAC;QACD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC,GAAG,CAAC,CAAC;QAAC,EAAE,GAAG,EAAE,CAAC;QACtB,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;YAAC,EAAE,GAAG,EAAE,CAAC;QAAC,CAAC;aAAM,CAAC;YAAC,CAAC,GAAG,CAAC,CAAC;YAAC,EAAE,GAAG,EAAE,CAAC;QAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAAC,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnF,CAAC;AAxCD,sBAwCC;AAED,iFAAiF;AACjF;;GAEG;AACH,SAAgB,UAAU,CAAC,CAAK,EAAE,CAAS,EAAE,CAAC,GAAG,IAAI;IACnD,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,CAAK,EAAE,CAAS,EAAE,CAAC,GAAG,IAAI;IACzD,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAFD,4CAEC;AAED;;;;GAIG;AACH,SAAgB,QAAQ,CACtB,CAA0B,EAC1B,CAAW,EACX,CAAC,GAAG,IAAI;IAER,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,4BAUC;AAED,iFAAiF;AACjF;;GAEG;AACH,SAAgB,SAAS,CACvB,CAAK,EACL,CAAS,EACT,CAAS,EACT,GAAG,GAAG,IAAI,EACV,QAAQ,GAAG,EAAE;IAEb,SAAS,WAAW,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,KAAa;QACpE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,SAAS,QAAQ,CACf,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,KAAa,EACb,KAAa;QAEb,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAClB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;QACrC,IAAI,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC;YACrD,OAAO,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,CACL,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;YAChD,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAClD,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAvCD,8BAuCC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,CAAK,EAAE,CAAS,EAAE,CAAS;IACvD,0CAA0C;IAC1C,MAAM,KAAK,GAAG;QACZ,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAC3C,kBAAkB,EAAE,kBAAkB;KACvC,CAAC;IACF,MAAM,OAAO,GAAG;QACd,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB;QAC1D,kBAAkB,EAAE,kBAAkB;KACvC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,CAAC;AAbD,sCAaC;AAED,iFAAiF;AACjF;;GAEG;AACH,SAAgB,IAAI,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAClD,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAFD,oBAEC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa;IAC7D,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAC;IAChF,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC;AAHD,kCAGC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,EAAY,EAAE,EAAY,EAAE,CAAS;IACpE,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,EAAE,GAAG,GAAG,CAAC;;YAAM,EAAE,GAAG,GAAG,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAZD,4CAYC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,EAAY,EAAE,EAAY,EAAE,CAAS;IAC5D,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAAC;IACtF,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IACpB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBAAE,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;gBAC1E,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAfD,4BAeC;AAED,iFAAiF;AACjF;;GAEG;AACH,SAAgB,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAFD,sBAEC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAa,EAAE,QAAgB;IACrD,MAAM,MAAM,GAAG,EAAE,IAAI,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAHD,0BAGC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,CAAS,EACT,CAAS,EACT,MAAM,GAAG,IAAI,EACb,MAAM,GAAG,CAAC;IAEV,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1F,CAAC;AAPD,kCAOC;AAED;;;GAGG;AACH,SAAgB,KAAK,CACnB,KAAa,EACb,KAAa,EACb,KAAa,EACb,MAAc,EACd,MAAc;IAEd,OAAO,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAC1E,CAAC;AARD,sBAQC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,IAAc;IACrC,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACnB,GAAG,GAAG,CAAC,CAAC;IACV,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AATD,4BASC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @module stats
3
+ * Descriptive statistics, correlation, normalization, and regression.
4
+ */
5
+ export declare function mean(data: number[]): number;
6
+ export declare function geometricMean(data: number[]): number;
7
+ export declare function harmonicMean(data: number[]): number;
8
+ export declare function median(data: number[]): number;
9
+ export declare function mode(data: number[]): number[];
10
+ export declare function weightedMean(data: number[], weights: number[]): number;
11
+ export declare function variance(data: number[], population?: boolean): number;
12
+ export declare function stdDev(data: number[], population?: boolean): number;
13
+ export declare function range(data: number[]): number;
14
+ export declare function iqr(data: number[]): number;
15
+ export declare function mad(data: number[]): number;
16
+ export declare function percentile(data: number[], p: number): number;
17
+ export declare function fiveNumberSummary(data: number[]): [number, number, number, number, number];
18
+ export declare function skewness(data: number[]): number;
19
+ export declare function kurtosis(data: number[]): number;
20
+ export declare function covariance(x: number[], y: number[]): number;
21
+ export declare function pearsonCorrelation(x: number[], y: number[]): number;
22
+ export declare function spearmanCorrelation(x: number[], y: number[]): number;
23
+ export declare function zScore(data: number[]): number[];
24
+ export declare function minMaxNormalize(data: number[]): number[];
25
+ export interface RegressionResult {
26
+ slope: number;
27
+ intercept: number;
28
+ r2: number;
29
+ predict: (x: number) => number;
30
+ }
31
+ export declare function linearRegression(x: number[], y: number[]): RegressionResult;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stats/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAG3C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAOpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnD;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAO7C;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAOtE;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,UAAQ,GAAG,MAAM,CAQnE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,UAAQ,GAAG,MAAM,CAEjE;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAG5C;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAG1C;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAI1C;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAU1F;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAa/C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAW/C;AAID,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAM3D;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAInE;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBpE;AAID,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAI/C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAOxD;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAChC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAkB3E"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ /**
3
+ * @module stats
4
+ * Descriptive statistics, correlation, normalization, and regression.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.linearRegression = exports.minMaxNormalize = exports.zScore = exports.spearmanCorrelation = exports.pearsonCorrelation = exports.covariance = exports.kurtosis = exports.skewness = exports.fiveNumberSummary = exports.percentile = exports.mad = exports.iqr = exports.range = exports.stdDev = exports.variance = exports.weightedMean = exports.mode = exports.median = exports.harmonicMean = exports.geometricMean = exports.mean = void 0;
8
+ // ─── Helpers ────────────────────────────────────────────────────────────────
9
+ function assertNonEmpty(data, label = 'data') {
10
+ if (data.length === 0)
11
+ throw new RangeError(`${label} must be non-empty`);
12
+ }
13
+ // ─── Central Tendency ───────────────────────────────────────────────────────
14
+ function mean(data) {
15
+ assertNonEmpty(data);
16
+ return data.reduce((s, v) => s + v, 0) / data.length;
17
+ }
18
+ exports.mean = mean;
19
+ function geometricMean(data) {
20
+ assertNonEmpty(data);
21
+ if (data.some((v) => v <= 0)) {
22
+ throw new RangeError('geometricMean requires all values to be positive');
23
+ }
24
+ const logSum = data.reduce((s, v) => s + Math.log(v), 0);
25
+ return Math.exp(logSum / data.length);
26
+ }
27
+ exports.geometricMean = geometricMean;
28
+ function harmonicMean(data) {
29
+ assertNonEmpty(data);
30
+ if (data.some((v) => v === 0)) {
31
+ throw new RangeError('harmonicMean requires all values to be non-zero');
32
+ }
33
+ const recipSum = data.reduce((s, v) => s + 1 / v, 0);
34
+ return data.length / recipSum;
35
+ }
36
+ exports.harmonicMean = harmonicMean;
37
+ function median(data) {
38
+ assertNonEmpty(data);
39
+ const sorted = [...data].sort((a, b) => a - b);
40
+ const mid = Math.floor(sorted.length / 2);
41
+ return sorted.length % 2 !== 0
42
+ ? sorted[mid]
43
+ : (sorted[mid - 1] + sorted[mid]) / 2;
44
+ }
45
+ exports.median = median;
46
+ function mode(data) {
47
+ assertNonEmpty(data);
48
+ const freq = new Map();
49
+ for (const v of data)
50
+ freq.set(v, (freq.get(v) ?? 0) + 1);
51
+ const maxFreq = Math.max(...freq.values());
52
+ return [...freq.entries()]
53
+ .filter(([, f]) => f === maxFreq)
54
+ .map(([v]) => v)
55
+ .sort((a, b) => a - b);
56
+ }
57
+ exports.mode = mode;
58
+ function weightedMean(data, weights) {
59
+ assertNonEmpty(data);
60
+ if (data.length !== weights.length) {
61
+ throw new RangeError('data and weights must have equal length');
62
+ }
63
+ const wSum = weights.reduce((s, w) => s + w, 0);
64
+ return data.reduce((s, v, i) => s + v * weights[i], 0) / wSum;
65
+ }
66
+ exports.weightedMean = weightedMean;
67
+ // ─── Spread ─────────────────────────────────────────────────────────────────
68
+ function variance(data, population = false) {
69
+ assertNonEmpty(data);
70
+ if (!population && data.length < 2) {
71
+ throw new RangeError('sample variance requires at least 2 data points');
72
+ }
73
+ const m = mean(data);
74
+ const sum = data.reduce((s, v) => s + (v - m) ** 2, 0);
75
+ return sum / (population ? data.length : data.length - 1);
76
+ }
77
+ exports.variance = variance;
78
+ function stdDev(data, population = false) {
79
+ return Math.sqrt(variance(data, population));
80
+ }
81
+ exports.stdDev = stdDev;
82
+ function range(data) {
83
+ assertNonEmpty(data);
84
+ return Math.max(...data) - Math.min(...data);
85
+ }
86
+ exports.range = range;
87
+ function iqr(data) {
88
+ assertNonEmpty(data);
89
+ return percentile(data, 75) - percentile(data, 25);
90
+ }
91
+ exports.iqr = iqr;
92
+ function mad(data) {
93
+ assertNonEmpty(data);
94
+ const m = median(data);
95
+ return median(data.map((v) => Math.abs(v - m)));
96
+ }
97
+ exports.mad = mad;
98
+ // ─── Percentile ─────────────────────────────────────────────────────────────
99
+ function percentile(data, p) {
100
+ assertNonEmpty(data);
101
+ const sorted = [...data].sort((a, b) => a - b);
102
+ const idx = (p / 100) * (sorted.length - 1);
103
+ const lo = Math.floor(idx);
104
+ const hi = Math.ceil(idx);
105
+ return sorted[lo] + (idx - lo) * (sorted[hi] - sorted[lo]);
106
+ }
107
+ exports.percentile = percentile;
108
+ function fiveNumberSummary(data) {
109
+ assertNonEmpty(data);
110
+ const sorted = [...data].sort((a, b) => a - b);
111
+ return [
112
+ sorted[0],
113
+ percentile(data, 25),
114
+ median(data),
115
+ percentile(data, 75),
116
+ sorted[sorted.length - 1],
117
+ ];
118
+ }
119
+ exports.fiveNumberSummary = fiveNumberSummary;
120
+ // ─── Shape ──────────────────────────────────────────────────────────────────
121
+ function skewness(data) {
122
+ assertNonEmpty(data);
123
+ if (data.length < 3) {
124
+ throw new RangeError('skewness requires at least 3 data points');
125
+ }
126
+ const m = mean(data);
127
+ const s = stdDev(data);
128
+ if (s === 0)
129
+ return 0;
130
+ const n = data.length;
131
+ return ((n / ((n - 1) * (n - 2))) *
132
+ data.reduce((sum, v) => sum + ((v - m) / s) ** 3, 0));
133
+ }
134
+ exports.skewness = skewness;
135
+ function kurtosis(data) {
136
+ assertNonEmpty(data);
137
+ if (data.length < 4) {
138
+ throw new RangeError('kurtosis requires at least 4 data points');
139
+ }
140
+ const m = mean(data);
141
+ const s = stdDev(data, true);
142
+ if (s === 0)
143
+ return 0;
144
+ const n = data.length;
145
+ const k4 = data.reduce((sum, v) => sum + ((v - m) / s) ** 4, 0);
146
+ return k4 / n - 3;
147
+ }
148
+ exports.kurtosis = kurtosis;
149
+ // ─── Correlation & Covariance ───────────────────────────────────────────────
150
+ function covariance(x, y) {
151
+ if (x.length !== y.length)
152
+ throw new RangeError('x and y must have equal length');
153
+ assertNonEmpty(x);
154
+ if (x.length < 2)
155
+ throw new RangeError('covariance requires at least 2 data points');
156
+ const mx = mean(x), my = mean(y);
157
+ return x.reduce((s, v, i) => s + (v - mx) * (y[i] - my), 0) / (x.length - 1);
158
+ }
159
+ exports.covariance = covariance;
160
+ function pearsonCorrelation(x, y) {
161
+ const sx = stdDev(x), sy = stdDev(y);
162
+ if (sx === 0 || sy === 0)
163
+ return 0;
164
+ return covariance(x, y) / (sx * sy);
165
+ }
166
+ exports.pearsonCorrelation = pearsonCorrelation;
167
+ function spearmanCorrelation(x, y) {
168
+ if (x.length !== y.length)
169
+ throw new RangeError('x and y must have equal length');
170
+ const rankArr = (arr) => {
171
+ const sorted = [...arr].sort((a, b) => a - b);
172
+ const ranks = new Array(arr.length);
173
+ // Build rank map with average ranks for ties
174
+ const rankMap = new Map();
175
+ let i = 0;
176
+ while (i < sorted.length) {
177
+ let j = i;
178
+ while (j < sorted.length && sorted[j] === sorted[i])
179
+ j++;
180
+ const avgRank = (i + 1 + j) / 2; // average of 1-indexed positions
181
+ rankMap.set(sorted[i], avgRank);
182
+ i = j;
183
+ }
184
+ for (let k = 0; k < arr.length; k++) {
185
+ ranks[k] = rankMap.get(arr[k]);
186
+ }
187
+ return ranks;
188
+ };
189
+ return pearsonCorrelation(rankArr(x), rankArr(y));
190
+ }
191
+ exports.spearmanCorrelation = spearmanCorrelation;
192
+ // ─── Normalization ──────────────────────────────────────────────────────────
193
+ function zScore(data) {
194
+ const m = mean(data);
195
+ const s = stdDev(data);
196
+ return data.map((v) => (v - m) / s);
197
+ }
198
+ exports.zScore = zScore;
199
+ function minMaxNormalize(data) {
200
+ assertNonEmpty(data);
201
+ const mn = Math.min(...data);
202
+ const mx = Math.max(...data);
203
+ const r = mx - mn;
204
+ if (r === 0)
205
+ return data.map(() => 0);
206
+ return data.map((v) => (v - mn) / r);
207
+ }
208
+ exports.minMaxNormalize = minMaxNormalize;
209
+ function linearRegression(x, y) {
210
+ if (x.length !== y.length)
211
+ throw new RangeError('x and y must have equal length');
212
+ assertNonEmpty(x);
213
+ if (x.length < 2)
214
+ throw new RangeError('linearRegression requires at least 2 data points');
215
+ const n = x.length;
216
+ const sx = x.reduce((s, v) => s + v, 0);
217
+ const sy = y.reduce((s, v) => s + v, 0);
218
+ const sxy = x.reduce((s, v, i) => s + v * y[i], 0);
219
+ const sxx = x.reduce((s, v) => s + v * v, 0);
220
+ const denom = n * sxx - sx * sx;
221
+ if (denom === 0)
222
+ throw new RangeError('linearRegression requires at least 2 distinct x values');
223
+ const slope = (n * sxy - sx * sy) / denom;
224
+ const intercept = (sy - slope * sx) / n;
225
+ const yMean = sy / n;
226
+ const ssTot = y.reduce((s, v) => s + (v - yMean) ** 2, 0);
227
+ const ssRes = y.reduce((s, v, i) => s + (v - (slope * x[i] + intercept)) ** 2, 0);
228
+ const r2 = ssTot === 0 ? 1 : 1 - ssRes / ssTot;
229
+ return { slope, intercept, r2, predict: (xv) => slope * xv + intercept };
230
+ }
231
+ exports.linearRegression = linearRegression;
232
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stats/index.ts"],"names":[],"mappings":"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"}