pragmastat 5.2.0 → 6.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.
package/README.md CHANGED
@@ -3,10 +3,10 @@
3
3
  Install from npm:
4
4
 
5
5
  ```bash
6
- npm i pragmastat@5.2.0
6
+ npm i pragmastat@6.0.0
7
7
  ```
8
8
 
9
- Source code: https://github.com/AndreyAkinshin/pragmastat/tree/v5.2.0/ts
9
+ Source code: https://github.com/AndreyAkinshin/pragmastat/tree/v6.0.0/ts
10
10
 
11
11
  Pragmastat on npm: https://www.npmjs.com/package/pragmastat
12
12
 
@@ -14,7 +14,7 @@ Pragmastat on npm: https://www.npmjs.com/package/pragmastat
14
14
 
15
15
  ```typescript
16
16
  import {
17
- median, center, spread, relSpread, shift, ratio, avgSpread, disparity, shiftBounds, pairwiseMargin,
17
+ median, center, spread, relSpread, shift, ratio, avgSpread, disparity, shiftBounds, ratioBounds, pairwiseMargin,
18
18
  Rng, Uniform, Additive, Exp, Power, Multiplic
19
19
  } from '../src';
20
20
 
@@ -58,14 +58,14 @@ function main() {
58
58
 
59
59
  // --- Single-Sample Statistics ---
60
60
 
61
- let x = [0, 2, 4, 6, 8];
61
+ let x = [1, 3, 5, 7, 9];
62
62
 
63
- console.log(median(x)); // 4
64
- console.log(center(x)); // 4
63
+ console.log(median(x)); // 5
64
+ console.log(center(x)); // 5
65
65
  console.log(spread(x)); // 4
66
66
  console.log(spread(x.map(v => v + 10))); // 4
67
67
  console.log(spread(x.map(v => v * 2))); // 8
68
- console.log(relSpread(x)); // 1
68
+ console.log(relSpread(x)); // 0.8
69
69
 
70
70
  // --- Two-Sample Comparison ---
71
71
 
@@ -81,6 +81,7 @@ function main() {
81
81
  x = [1, 2, 4, 8, 16];
82
82
  y = [2, 4, 8, 16, 32];
83
83
  console.log(ratio(x, y)); // 0.5
84
+ console.log(ratio(y, x)); // 2
84
85
 
85
86
  // --- Confidence Bounds ---
86
87
 
@@ -89,7 +90,11 @@ function main() {
89
90
 
90
91
  console.log(pairwiseMargin(30, 30, 1e-4)); // 390
91
92
  console.log(shift(x, y)); // -20
92
- console.log(shiftBounds(x, y, 1e-4)); // [-30, -10]
93
+ console.log(shiftBounds(x, y, 1e-4)); // { lower: -30, upper: -10 }
94
+
95
+ x = [1, 2, 3, 4, 5];
96
+ y = [2, 3, 4, 5, 6];
97
+ console.log(ratioBounds(x, y, 0.05)); // { lower: 0.333..., upper: 1.5 }
93
98
  }
94
99
 
95
100
  main();
@@ -30,4 +30,8 @@ export declare class AssumptionError extends Error {
30
30
  export declare function checkValidity(values: number[], subject: Subject, functionName: string): void;
31
31
  export declare function checkPositivity(values: number[], subject: Subject, functionName: string): void;
32
32
  export declare function checkSparity(values: number[], subject: Subject, functionName: string): void;
33
+ /**
34
+ * Log-transforms an array. Throws AssumptionError if any value is non-positive.
35
+ */
36
+ export declare function log(values: number[], subject: Subject, functionName: string): number[];
33
37
  //# sourceMappingURL=assumptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assumptions.d.ts","sourceRoot":"","sources":["../src/assumptions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,MAAM,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;AAEhC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,YAAY,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;gBAElB,SAAS,EAAE,SAAS;IAMhC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;IAIzE,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;IAI3E,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;CAGzE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAO5F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAI9F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAQ3F"}
1
+ {"version":3,"file":"assumptions.d.ts","sourceRoot":"","sources":["../src/assumptions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E,MAAM,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;AAEhC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,YAAY,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;gBAElB,SAAS,EAAE,SAAS;IAMhC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;IAIzE,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;IAI3E,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;CAGzE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAO5F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAI9F;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAQ3F;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAStF"}
@@ -4,6 +4,7 @@ exports.AssumptionError = exports.AssumptionId = void 0;
4
4
  exports.checkValidity = checkValidity;
5
5
  exports.checkPositivity = checkPositivity;
6
6
  exports.checkSparity = checkSparity;
7
+ exports.log = log;
7
8
  const fastSpread_1 = require("./fastSpread");
8
9
  /**
9
10
  * Assumption validation framework for Pragmastat estimators.
@@ -60,4 +61,17 @@ function checkSparity(values, subject, functionName) {
60
61
  throw AssumptionError.sparity(functionName, subject);
61
62
  }
62
63
  }
64
+ /**
65
+ * Log-transforms an array. Throws AssumptionError if any value is non-positive.
66
+ */
67
+ function log(values, subject, functionName) {
68
+ const result = new Array(values.length);
69
+ for (let i = 0; i < values.length; i++) {
70
+ if (values[i] <= 0) {
71
+ throw AssumptionError.positivity(functionName, subject);
72
+ }
73
+ result[i] = Math.log(values[i]);
74
+ }
75
+ return result;
76
+ }
63
77
  //# sourceMappingURL=assumptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assumptions.js","sourceRoot":"","sources":["../src/assumptions.ts"],"names":[],"mappings":";;;AAmDA,sCAOC;AAED,0CAIC;AAED,oCAQC;AA1ED,6CAA0C;AAE1C;;;;;;;;;;GAUG;AAEU,QAAA,YAAY,GAAG;IAC1B,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;CACV,CAAC;AAWX,MAAa,eAAgB,SAAQ,KAAK;IAGxC,YAAY,SAAoB;QAC9B,KAAK,CAAC,GAAG,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,aAAqB,EAAE,OAAgB;QACrD,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,oBAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,aAAqB,EAAE,OAAgB;QACvD,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,oBAAY,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,aAAqB,EAAE,OAAgB;QACpD,OAAO,IAAI,eAAe,CAAC,EAAE,EAAE,EAAE,oBAAY,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;CACF;AApBD,0CAoBC;AAED,SAAgB,aAAa,CAAC,MAAgB,EAAE,OAAgB,EAAE,YAAoB;IACpF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAAC,MAAgB,EAAE,OAAgB,EAAE,YAAoB;IACtF,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,eAAe,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,MAAgB,EAAE,OAAgB,EAAE,YAAoB;IACnF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,uBAAU,EAAC,MAAM,CAAC,CAAC;IAClC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,MAAM,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"assumptions.js","sourceRoot":"","sources":["../src/assumptions.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,9 @@ export declare function relSpread(x: number[]): number;
40
40
  */
41
41
  export declare function shift(x: number[], y: number[]): number;
42
42
  /**
43
- * Calculate the Ratio - median of all pairwise ratios (x[i] / y[j])
43
+ * Calculate the Ratio - median of all pairwise ratios (x[i] / y[j]) via log-transformation
44
+ * Equivalent to: exp(Shift(log(x), log(y)))
45
+ * Uses fast O((m + n) * log(precision)) algorithm.
44
46
  *
45
47
  * Assumptions:
46
48
  * positivity(x) - all values in x must be strictly positive
@@ -98,4 +100,21 @@ export interface Bounds {
98
100
  * @throws AssumptionError if either sample is empty or contains NaN/Inf
99
101
  */
100
102
  export declare function shiftBounds(x: number[], y: number[], misrate: number): Bounds;
103
+ /**
104
+ * Provides bounds on the Ratio estimator with specified misclassification rate (RatioBounds)
105
+ *
106
+ * Computes bounds via log-transformation and ShiftBounds delegation:
107
+ * RatioBounds(x, y, misrate) = exp(ShiftBounds(log(x), log(y), misrate))
108
+ *
109
+ * Assumptions:
110
+ * positivity(x) - all values in x must be strictly positive
111
+ * positivity(y) - all values in y must be strictly positive
112
+ *
113
+ * @param x First sample
114
+ * @param y Second sample
115
+ * @param misrate Misclassification rate (probability that true ratio falls outside bounds)
116
+ * @returns An object containing the lower and upper bounds
117
+ * @throws AssumptionError if either sample is empty, contains NaN/Inf, or contains non-positive values
118
+ */
119
+ export declare function ratioBounds(x: number[], y: number[], misrate: number): Bounds;
101
120
  //# sourceMappingURL=estimators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"estimators.d.ts","sourceRoot":"","sources":["../src/estimators.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAI1C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAM1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAW7C;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAMtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAoBtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAkB1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqB1D;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAqC7E"}
1
+ {"version":3,"file":"estimators.d.ts","sourceRoot":"","sources":["../src/estimators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAI1C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAM1C;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAW7C;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAMtD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAWtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAkB1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqB1D;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAqC7E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgB7E"}
@@ -11,7 +11,7 @@ exports.ratio = ratio;
11
11
  exports.avgSpread = avgSpread;
12
12
  exports.disparity = disparity;
13
13
  exports.shiftBounds = shiftBounds;
14
- const utils_1 = require("./utils");
14
+ exports.ratioBounds = ratioBounds;
15
15
  const fastCenter_1 = require("./fastCenter");
16
16
  const fastSpread_1 = require("./fastSpread");
17
17
  const fastShift_1 = require("./fastShift");
@@ -82,7 +82,9 @@ function shift(x, y) {
82
82
  return (0, fastShift_1.fastShift)(x, y, [0.5], false)[0];
83
83
  }
84
84
  /**
85
- * Calculate the Ratio - median of all pairwise ratios (x[i] / y[j])
85
+ * Calculate the Ratio - median of all pairwise ratios (x[i] / y[j]) via log-transformation
86
+ * Equivalent to: exp(Shift(log(x), log(y)))
87
+ * Uses fast O((m + n) * log(precision)) algorithm.
86
88
  *
87
89
  * Assumptions:
88
90
  * positivity(x) - all values in x must be strictly positive
@@ -102,15 +104,7 @@ function ratio(x, y) {
102
104
  (0, assumptions_1.checkPositivity)(x, 'x', 'Ratio');
103
105
  // Check positivity for y (priority 1, subject y)
104
106
  (0, assumptions_1.checkPositivity)(y, 'y', 'Ratio');
105
- const nx = x.length;
106
- const ny = y.length;
107
- const pairwiseRatios = [];
108
- for (let i = 0; i < nx; i++) {
109
- for (let j = 0; j < ny; j++) {
110
- pairwiseRatios.push(x[i] / y[j]);
111
- }
112
- }
113
- return (0, utils_1.median)(pairwiseRatios);
107
+ return (0, fastShift_1.fastRatio)(x, y, [0.5], false)[0];
114
108
  }
115
109
  /**
116
110
  * Calculate the AvgSpread - weighted average of spreads: (n*Spread(x) + m*Spread(y))/(n+m)
@@ -213,4 +207,34 @@ function shiftBounds(x, y, misrate) {
213
207
  const upper = Math.max(left, right);
214
208
  return { lower, upper };
215
209
  }
210
+ /**
211
+ * Provides bounds on the Ratio estimator with specified misclassification rate (RatioBounds)
212
+ *
213
+ * Computes bounds via log-transformation and ShiftBounds delegation:
214
+ * RatioBounds(x, y, misrate) = exp(ShiftBounds(log(x), log(y), misrate))
215
+ *
216
+ * Assumptions:
217
+ * positivity(x) - all values in x must be strictly positive
218
+ * positivity(y) - all values in y must be strictly positive
219
+ *
220
+ * @param x First sample
221
+ * @param y Second sample
222
+ * @param misrate Misclassification rate (probability that true ratio falls outside bounds)
223
+ * @returns An object containing the lower and upper bounds
224
+ * @throws AssumptionError if either sample is empty, contains NaN/Inf, or contains non-positive values
225
+ */
226
+ function ratioBounds(x, y, misrate) {
227
+ (0, assumptions_1.checkValidity)(x, 'x', 'RatioBounds');
228
+ (0, assumptions_1.checkValidity)(y, 'y', 'RatioBounds');
229
+ // Log-transform samples (includes positivity check)
230
+ const logX = (0, assumptions_1.log)(x, 'x', 'RatioBounds');
231
+ const logY = (0, assumptions_1.log)(y, 'y', 'RatioBounds');
232
+ // Delegate to shiftBounds in log-space
233
+ const logBounds = shiftBounds(logX, logY, misrate);
234
+ // Exp-transform back to ratio-space
235
+ return {
236
+ lower: Math.exp(logBounds.lower),
237
+ upper: Math.exp(logBounds.upper),
238
+ };
239
+ }
216
240
  //# sourceMappingURL=estimators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"estimators.js","sourceRoot":"","sources":["../src/estimators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"estimators.js","sourceRoot":"","sources":["../src/estimators.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,16 @@
17
17
  * @internal
18
18
  */
19
19
  export declare function fastShift(x: number[], y: number[], p: number[], assumeSorted?: boolean): number[];
20
+ /**
21
+ * Computes quantiles of all pairwise ratios { x_i / y_j } via log-transformation.
22
+ * Time: O((m + n) * log(precision)) per quantile. Space: O(m + n).
23
+ *
24
+ * @param x First array of positive numeric values
25
+ * @param y Second array of positive numeric values
26
+ * @param p Probabilities in [0, 1]
27
+ * @param assumeSorted If false, arrays will be sorted
28
+ * @returns Array of quantile values corresponding to probabilities in p
29
+ * @internal
30
+ */
31
+ export declare function fastRatio(x: number[], y: number[], p: number[], assumeSorted?: boolean): number[];
20
32
  //# sourceMappingURL=fastShift.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fastShift.d.ts","sourceRoot":"","sources":["../src/fastShift.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,YAAY,GAAE,OAAe,GAC5B,MAAM,EAAE,CAwEV"}
1
+ {"version":3,"file":"fastShift.d.ts","sourceRoot":"","sources":["../src/fastShift.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,YAAY,GAAE,OAAe,GAC5B,MAAM,EAAE,CAwEV;AAmHD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,YAAY,GAAE,OAAe,GAC5B,MAAM,EAAE,CAiBV"}
package/dist/fastShift.js CHANGED
@@ -8,6 +8,8 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.fastShift = fastShift;
11
+ exports.fastRatio = fastRatio;
12
+ const assumptions_1 = require("./assumptions");
11
13
  /**
12
14
  * Computes quantiles of all pairwise differences { x_i - y_j }.
13
15
  * Time: O((m + n) * log(precision)) per quantile. Space: O(1).
@@ -171,4 +173,30 @@ function countAndNeighbors(x, y, threshold) {
171
173
  function midpoint(a, b) {
172
174
  return a + (b - a) * 0.5;
173
175
  }
176
+ /**
177
+ * Computes quantiles of all pairwise ratios { x_i / y_j } via log-transformation.
178
+ * Time: O((m + n) * log(precision)) per quantile. Space: O(m + n).
179
+ *
180
+ * @param x First array of positive numeric values
181
+ * @param y Second array of positive numeric values
182
+ * @param p Probabilities in [0, 1]
183
+ * @param assumeSorted If false, arrays will be sorted
184
+ * @returns Array of quantile values corresponding to probabilities in p
185
+ * @internal
186
+ */
187
+ function fastRatio(x, y, p, assumeSorted = false) {
188
+ if (!x || !y || !p) {
189
+ throw new Error('All inputs must be non-null');
190
+ }
191
+ if (x.length === 0 || y.length === 0) {
192
+ throw new Error('x and y must be non-empty');
193
+ }
194
+ // Log-transform both samples (includes positivity check)
195
+ const logX = (0, assumptions_1.log)(x, 'x', 'Ratio');
196
+ const logY = (0, assumptions_1.log)(y, 'y', 'Ratio');
197
+ // Delegate to fastShift in log-space
198
+ const logResult = fastShift(logX, logY, p, assumeSorted);
199
+ // Exp-transform back to ratio-space
200
+ return logResult.map((v) => Math.exp(v));
201
+ }
174
202
  //# sourceMappingURL=fastShift.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fastShift.js","sourceRoot":"","sources":["../src/fastShift.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fastShift.js","sourceRoot":"","sources":["../src/fastShift.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * A collection of robust statistical estimators for real-world data analysis.
5
5
  */
6
6
  export { AssumptionId, AssumptionError, type Subject, type Violation } from './assumptions';
7
- export { center, spread, relSpread, shift, ratio, avgSpread, disparity, shiftBounds, type Bounds, } from './estimators';
7
+ export { center, spread, relSpread, shift, ratio, avgSpread, disparity, shiftBounds, ratioBounds, type Bounds, } from './estimators';
8
8
  export { median } from './utils';
9
9
  export { pairwiseMargin } from './pairwiseMargin';
10
10
  export { Rng } from './rng';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAG5F,OAAO,EACL,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,KAAK,MAAM,GACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAG5F,OAAO,EACL,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,KAAK,MAAM,GACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * A collection of robust statistical estimators for real-world data analysis.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.Power = exports.Exp = exports.Multiplic = exports.Additive = exports.Uniform = exports.Rng = exports.pairwiseMargin = exports.median = exports.shiftBounds = exports.disparity = exports.avgSpread = exports.ratio = exports.shift = exports.relSpread = exports.spread = exports.center = exports.AssumptionError = exports.AssumptionId = void 0;
8
+ exports.Power = exports.Exp = exports.Multiplic = exports.Additive = exports.Uniform = exports.Rng = exports.pairwiseMargin = exports.median = exports.ratioBounds = exports.shiftBounds = exports.disparity = exports.avgSpread = exports.ratio = exports.shift = exports.relSpread = exports.spread = exports.center = exports.AssumptionError = exports.AssumptionId = void 0;
9
9
  // Assumptions
10
10
  var assumptions_1 = require("./assumptions");
11
11
  Object.defineProperty(exports, "AssumptionId", { enumerable: true, get: function () { return assumptions_1.AssumptionId; } });
@@ -20,6 +20,7 @@ Object.defineProperty(exports, "ratio", { enumerable: true, get: function () { r
20
20
  Object.defineProperty(exports, "avgSpread", { enumerable: true, get: function () { return estimators_1.avgSpread; } });
21
21
  Object.defineProperty(exports, "disparity", { enumerable: true, get: function () { return estimators_1.disparity; } });
22
22
  Object.defineProperty(exports, "shiftBounds", { enumerable: true, get: function () { return estimators_1.shiftBounds; } });
23
+ Object.defineProperty(exports, "ratioBounds", { enumerable: true, get: function () { return estimators_1.ratioBounds; } });
23
24
  var utils_1 = require("./utils");
24
25
  Object.defineProperty(exports, "median", { enumerable: true, get: function () { return utils_1.median; } });
25
26
  var pairwiseMargin_1 = require("./pairwiseMargin");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,cAAc;AACd,6CAA4F;AAAnF,2GAAA,YAAY,OAAA;AAAE,8GAAA,eAAe,OAAA;AAEtC,aAAa;AACb,2CAUsB;AATpB,oGAAA,MAAM,OAAA;AACN,oGAAA,MAAM,OAAA;AACN,uGAAA,SAAS,OAAA;AACT,mGAAA,KAAK,OAAA;AACL,mGAAA,KAAK,OAAA;AACL,uGAAA,SAAS,OAAA;AACT,uGAAA,SAAS,OAAA;AACT,yGAAA,WAAW,OAAA;AAIb,iCAAiC;AAAxB,+FAAA,MAAM,OAAA;AAEf,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AAEZ,+CAAoG;AAAxE,gGAAA,OAAO,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,4FAAA,GAAG,OAAA;AAAE,8FAAA,KAAK,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,cAAc;AACd,6CAA4F;AAAnF,2GAAA,YAAY,OAAA;AAAE,8GAAA,eAAe,OAAA;AAEtC,aAAa;AACb,2CAWsB;AAVpB,oGAAA,MAAM,OAAA;AACN,oGAAA,MAAM,OAAA;AACN,uGAAA,SAAS,OAAA;AACT,mGAAA,KAAK,OAAA;AACL,mGAAA,KAAK,OAAA;AACL,uGAAA,SAAS,OAAA;AACT,uGAAA,SAAS,OAAA;AACT,yGAAA,WAAW,OAAA;AACX,yGAAA,WAAW,OAAA;AAIb,iCAAiC;AAAxB,+FAAA,MAAM,OAAA;AAEf,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AAEZ,+CAAoG;AAAxE,gGAAA,OAAO,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,4FAAA,GAAG,OAAA;AAAE,8FAAA,KAAK,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pragmastat",
3
- "version": "5.2.0",
3
+ "version": "6.0.0",
4
4
  "description": "Pragmastat: Pragmatic Statistical Toolkit",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",