pragmastat 3.2.3 → 4.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
@@ -2,9 +2,9 @@
2
2
 
3
3
  This is a TypeScript implementation of 'Pragmastat: Pragmatic Statistical Toolkit', which presents a toolkit of statistical procedures that provide reliable results across diverse real-world distributions, with ready-to-use implementations and detailed explanations.
4
4
 
5
- - PDF manual for this version: [pragmastat-v3.2.3.pdf](https://github.com/AndreyAkinshin/pragmastat/releases/download/v3.2.3/pragmastat-v3.2.3.pdf)
6
- - Markdown manual for this version: [pragmastat-v3.2.3.md](https://github.com/AndreyAkinshin/pragmastat/releases/download/v3.2.3/pragmastat-v3.2.3.md)
7
- - Source code for this version: [pragmastat/ts/v3.2.3](https://github.com/AndreyAkinshin/pragmastat/tree/v3.2.3/ts)
5
+ - PDF manual for this version: [pragmastat-v4.0.0.pdf](https://github.com/AndreyAkinshin/pragmastat/releases/download/v4.0.0/pragmastat-v4.0.0.pdf)
6
+ - Markdown manual for this version: [pragmastat-v4.0.0.md](https://github.com/AndreyAkinshin/pragmastat/releases/download/v4.0.0/pragmastat-v4.0.0.md)
7
+ - Source code for this version: [pragmastat/ts/v4.0.0](https://github.com/AndreyAkinshin/pragmastat/tree/v4.0.0/ts)
8
8
  - Latest online manual: https://pragmastat.dev
9
9
  - Manual DOI: [10.5281/zenodo.17236778](https://doi.org/10.5281/zenodo.17236778)
10
10
 
@@ -13,13 +13,13 @@ This is a TypeScript implementation of 'Pragmastat: Pragmatic Statistical Toolki
13
13
  Install from npm:
14
14
 
15
15
  ```bash
16
- npm i pragmastat@3.2.3
16
+ npm i pragmastat@4.0.0
17
17
  ```
18
18
 
19
19
  ## Demo
20
20
 
21
21
  ```typescript
22
- import { center, spread, relSpread, shift, ratio, avgSpread, disparity } from '../src';
22
+ import { center, spread, relSpread, shift, ratio, avgSpread, disparity, shiftBounds, pairwiseMargin } from '../src';
23
23
 
24
24
  function main() {
25
25
  let x = [0, 2, 4, 6, 8];
@@ -65,6 +65,21 @@ function main() {
65
65
  console.log(disparity(x.map(v => v + 5), y.map(v => v + 5))); // 0.4
66
66
  console.log(disparity(x.map(v => v * 2), y.map(v => v * 2))); // 0.4
67
67
  console.log(disparity(y, x)); // -0.4
68
+
69
+ x = Array.from({ length: 30 }, (_, i) => i + 1);
70
+ y = Array.from({ length: 30 }, (_, i) => i + 21);
71
+
72
+ console.log(pairwiseMargin(30, 30, 1e-6)); // 276
73
+ console.log(pairwiseMargin(30, 30, 1e-5)); // 328
74
+ console.log(pairwiseMargin(30, 30, 1e-4)); // 390
75
+ console.log(pairwiseMargin(30, 30, 1e-3)); // 464
76
+
77
+ console.log(shift(x, y)); // -20
78
+
79
+ console.log(shiftBounds(x, y, 1e-6)); // [-33, -7]
80
+ console.log(shiftBounds(x, y, 1e-5)); // [-32, -8]
81
+ console.log(shiftBounds(x, y, 1e-4)); // [-30, -10]
82
+ console.log(shiftBounds(x, y, 1e-3)); // [-28, -12]
68
83
  }
69
84
 
70
85
  main();
@@ -50,4 +50,23 @@ export declare function avgSpread(x: number[], y: number[]): number;
50
50
  * @returns The disparity estimate
51
51
  */
52
52
  export declare function disparity(x: number[], y: number[]): number;
53
+ /**
54
+ * Represents an interval with lower and upper bounds
55
+ */
56
+ export interface Bounds {
57
+ lower: number;
58
+ upper: number;
59
+ }
60
+ /**
61
+ * Provides bounds on the Shift estimator with specified misclassification rate (ShiftBounds)
62
+ *
63
+ * The misrate represents the probability that the true shift falls outside the computed bounds.
64
+ * This is a pragmatic alternative to traditional confidence intervals for the Hodges-Lehmann estimator.
65
+ *
66
+ * @param x First sample
67
+ * @param y Second sample
68
+ * @param misrate Misclassification rate (probability that true shift falls outside bounds)
69
+ * @returns An object containing the lower and upper bounds
70
+ */
71
+ export declare function shiftBounds(x: number[], y: number[], misrate: number): Bounds;
53
72
  //# sourceMappingURL=estimators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"estimators.d.ts","sourceRoot":"","sources":["../src/estimators.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAa7C;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAStD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBtD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAa1D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAa1D"}
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,CAK1C;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAK1C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAa7C;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAStD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBtD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAa1D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAa1D;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAoC7E"}
@@ -10,10 +10,12 @@ exports.shift = shift;
10
10
  exports.ratio = ratio;
11
11
  exports.avgSpread = avgSpread;
12
12
  exports.disparity = disparity;
13
+ exports.shiftBounds = shiftBounds;
13
14
  const utils_1 = require("./utils");
14
15
  const fastCenter_1 = require("./fastCenter");
15
16
  const fastSpread_1 = require("./fastSpread");
16
17
  const fastShift_1 = require("./fastShift");
18
+ const pairwiseMargin_1 = require("./pairwiseMargin");
17
19
  /**
18
20
  * Calculate the Center - median of all pairwise averages (x[i] + x[j])/2
19
21
  * Uses fast O(n log n) algorithm.
@@ -21,6 +23,9 @@ const fastShift_1 = require("./fastShift");
21
23
  * @returns The center estimate
22
24
  */
23
25
  function center(x) {
26
+ if (x.length === 0) {
27
+ throw new Error('Input array cannot be empty');
28
+ }
24
29
  return (0, fastCenter_1.fastCenter)(x);
25
30
  }
26
31
  /**
@@ -30,6 +35,9 @@ function center(x) {
30
35
  * @returns The spread estimate
31
36
  */
32
37
  function spread(x) {
38
+ if (x.length === 0) {
39
+ throw new Error('Input array cannot be empty');
40
+ }
33
41
  return (0, fastSpread_1.fastSpread)(x);
34
42
  }
35
43
  /**
@@ -121,4 +129,44 @@ function disparity(x, y) {
121
129
  }
122
130
  return shiftVal / combinedSpread;
123
131
  }
132
+ /**
133
+ * Provides bounds on the Shift estimator with specified misclassification rate (ShiftBounds)
134
+ *
135
+ * The misrate represents the probability that the true shift falls outside the computed bounds.
136
+ * This is a pragmatic alternative to traditional confidence intervals for the Hodges-Lehmann estimator.
137
+ *
138
+ * @param x First sample
139
+ * @param y Second sample
140
+ * @param misrate Misclassification rate (probability that true shift falls outside bounds)
141
+ * @returns An object containing the lower and upper bounds
142
+ */
143
+ function shiftBounds(x, y, misrate) {
144
+ if (x.length === 0 || y.length === 0) {
145
+ throw new Error('Input arrays cannot be empty');
146
+ }
147
+ const n = x.length;
148
+ const m = y.length;
149
+ // Sort both arrays
150
+ const xs = [...x].sort((a, b) => a - b);
151
+ const ys = [...y].sort((a, b) => a - b);
152
+ const total = n * m;
153
+ // Special case: when there's only one pairwise difference, bounds collapse to a single value
154
+ if (total === 1) {
155
+ const value = xs[0] - ys[0];
156
+ return { lower: value, upper: value };
157
+ }
158
+ const margin = (0, pairwiseMargin_1.pairwiseMargin)(n, m, misrate);
159
+ const halfMargin = Math.min(Math.floor(margin / 2), Math.floor((total - 1) / 2));
160
+ const kLeft = halfMargin;
161
+ const kRight = total - 1 - halfMargin;
162
+ // Compute quantile positions
163
+ const denominator = total - 1 || 1;
164
+ const pLeft = kLeft / denominator;
165
+ const pRight = kRight / denominator;
166
+ // Use fastShift to compute quantiles of pairwise differences
167
+ const [left, right] = (0, fastShift_1.fastShift)(xs, ys, [pLeft, pRight], true);
168
+ const lower = Math.min(left, right);
169
+ const upper = Math.max(left, right);
170
+ return { lower, upper };
171
+ }
124
172
  //# 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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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * A collection of robust statistical estimators for real-world data analysis.
5
5
  */
6
- export { center, spread, relSpread, shift, ratio, avgSpread, disparity } from './estimators';
7
- export { median } from './utils';
6
+ export { center, spread, relSpread, shift, ratio, avgSpread, disparity, shiftBounds, type Bounds, } from './estimators';
7
+ export { pairwiseMargin } from './pairwiseMargin';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE7F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,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,cAAc,EAAE,MAAM,kBAAkB,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.median = exports.disparity = exports.avgSpread = exports.ratio = exports.shift = exports.relSpread = exports.spread = exports.center = void 0;
8
+ exports.pairwiseMargin = exports.shiftBounds = exports.disparity = exports.avgSpread = exports.ratio = exports.shift = exports.relSpread = exports.spread = exports.center = void 0;
9
9
  var estimators_1 = require("./estimators");
10
10
  Object.defineProperty(exports, "center", { enumerable: true, get: function () { return estimators_1.center; } });
11
11
  Object.defineProperty(exports, "spread", { enumerable: true, get: function () { return estimators_1.spread; } });
@@ -14,6 +14,7 @@ Object.defineProperty(exports, "shift", { enumerable: true, get: function () { r
14
14
  Object.defineProperty(exports, "ratio", { enumerable: true, get: function () { return estimators_1.ratio; } });
15
15
  Object.defineProperty(exports, "avgSpread", { enumerable: true, get: function () { return estimators_1.avgSpread; } });
16
16
  Object.defineProperty(exports, "disparity", { enumerable: true, get: function () { return estimators_1.disparity; } });
17
- var utils_1 = require("./utils");
18
- Object.defineProperty(exports, "median", { enumerable: true, get: function () { return utils_1.median; } });
17
+ Object.defineProperty(exports, "shiftBounds", { enumerable: true, get: function () { return estimators_1.shiftBounds; } });
18
+ var pairwiseMargin_1 = require("./pairwiseMargin");
19
+ Object.defineProperty(exports, "pairwiseMargin", { enumerable: true, get: function () { return pairwiseMargin_1.pairwiseMargin; } });
19
20
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,2CAA6F;AAApF,oGAAA,MAAM,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,uGAAA,SAAS,OAAA;AAAE,mGAAA,KAAK,OAAA;AAAE,mGAAA,KAAK,OAAA;AAAE,uGAAA,SAAS,OAAA;AAAE,uGAAA,SAAS,OAAA;AAEtE,iCAAiC;AAAxB,+FAAA,MAAM,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,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,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * PairwiseMargin function for computing confidence bound margins
3
+ *
4
+ * Determines how many extreme pairwise differences to exclude when constructing bounds
5
+ * based on the distribution of dominance statistics.
6
+ */
7
+ /**
8
+ * PairwiseMargin determines how many extreme pairwise differences to exclude
9
+ * when constructing bounds based on the distribution of dominance statistics.
10
+ * Uses exact calculation for small samples (n+m <= 400) and Edgeworth
11
+ * approximation for larger samples.
12
+ *
13
+ * @param n Sample size of first sample (must be positive)
14
+ * @param m Sample size of second sample (must be positive)
15
+ * @param misrate Misclassification rate (must be in [0, 1])
16
+ * @returns Integer representing the total margin split between lower and upper tails
17
+ * @throws Error if n <= 0, m <= 0, or misrate is outside [0, 1]
18
+ */
19
+ export declare function pairwiseMargin(n: number, m: number, misrate: number): number;
20
+ //# sourceMappingURL=pairwiseMargin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairwiseMargin.d.ts","sourceRoot":"","sources":["../src/pairwiseMargin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgB5E"}
@@ -0,0 +1,324 @@
1
+ "use strict";
2
+ /**
3
+ * PairwiseMargin function for computing confidence bound margins
4
+ *
5
+ * Determines how many extreme pairwise differences to exclude when constructing bounds
6
+ * based on the distribution of dominance statistics.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.pairwiseMargin = pairwiseMargin;
10
+ const MAX_EXACT_SIZE = 400;
11
+ const MAX_ACCEPTABLE_BINOM_N = 65;
12
+ /**
13
+ * PairwiseMargin determines how many extreme pairwise differences to exclude
14
+ * when constructing bounds based on the distribution of dominance statistics.
15
+ * Uses exact calculation for small samples (n+m <= 400) and Edgeworth
16
+ * approximation for larger samples.
17
+ *
18
+ * @param n Sample size of first sample (must be positive)
19
+ * @param m Sample size of second sample (must be positive)
20
+ * @param misrate Misclassification rate (must be in [0, 1])
21
+ * @returns Integer representing the total margin split between lower and upper tails
22
+ * @throws Error if n <= 0, m <= 0, or misrate is outside [0, 1]
23
+ */
24
+ function pairwiseMargin(n, m, misrate) {
25
+ if (n <= 0) {
26
+ throw new Error('n must be positive');
27
+ }
28
+ if (m <= 0) {
29
+ throw new Error('m must be positive');
30
+ }
31
+ if (misrate < 0 || misrate > 1) {
32
+ throw new Error('misrate must be in range [0, 1]');
33
+ }
34
+ if (n + m <= MAX_EXACT_SIZE) {
35
+ return pairwiseMarginExact(n, m, misrate);
36
+ }
37
+ else {
38
+ return pairwiseMarginApprox(n, m, misrate);
39
+ }
40
+ }
41
+ /**
42
+ * Uses the exact distribution based on Loeffler's recurrence
43
+ */
44
+ function pairwiseMarginExact(n, m, misrate) {
45
+ return pairwiseMarginExactRaw(n, m, misrate / 2) * 2;
46
+ }
47
+ /**
48
+ * Uses Edgeworth approximation for large samples
49
+ */
50
+ function pairwiseMarginApprox(n, m, misrate) {
51
+ return pairwiseMarginApproxRaw(n, m, misrate / 2) * 2;
52
+ }
53
+ /**
54
+ * Inversed implementation of Andreas Löffler's (1982)
55
+ * "Über eine Partition der nat. Zahlen und ihre Anwendung beim U-Test"
56
+ */
57
+ function pairwiseMarginExactRaw(n, m, p) {
58
+ const total = n + m < MAX_ACCEPTABLE_BINOM_N
59
+ ? binomialCoefficient(n + m, m)
60
+ : binomialCoefficientFloat(n + m, m);
61
+ const pmf = [1]; // pmf[0] = 1
62
+ const sigma = [0]; // sigma[0] is unused
63
+ let u = 0;
64
+ let cdf = 1.0 / total;
65
+ if (cdf >= p) {
66
+ return 0;
67
+ }
68
+ while (true) {
69
+ u++;
70
+ // Ensure sigma has entry for u
71
+ if (sigma.length <= u) {
72
+ let value = 0;
73
+ for (let d = 1; d <= n; d++) {
74
+ if (u % d === 0 && u >= d) {
75
+ value += d;
76
+ }
77
+ }
78
+ for (let d = m + 1; d <= m + n; d++) {
79
+ if (u % d === 0 && u >= d) {
80
+ value -= d;
81
+ }
82
+ }
83
+ sigma.push(value);
84
+ }
85
+ // Compute pmf[u] using Loeffler recurrence
86
+ let sum = 0.0;
87
+ for (let i = 0; i < u; i++) {
88
+ sum += pmf[i] * sigma[u - i];
89
+ }
90
+ sum /= u;
91
+ pmf.push(sum);
92
+ cdf += sum / total;
93
+ if (cdf >= p) {
94
+ return u;
95
+ }
96
+ if (sum === 0) {
97
+ break;
98
+ }
99
+ }
100
+ return pmf.length - 1;
101
+ }
102
+ /**
103
+ * Inverse Edgeworth Approximation
104
+ */
105
+ function pairwiseMarginApproxRaw(n, m, misrate) {
106
+ let a = 0;
107
+ let b = n * m;
108
+ while (a < b - 1) {
109
+ const c = Math.floor((a + b) / 2);
110
+ const p = edgeworthCdf(n, m, c);
111
+ if (p < misrate) {
112
+ a = c;
113
+ }
114
+ else {
115
+ b = c;
116
+ }
117
+ }
118
+ return edgeworthCdf(n, m, b) < misrate ? b : a;
119
+ }
120
+ /**
121
+ * Computes the CDF using Edgeworth expansion
122
+ */
123
+ function edgeworthCdf(n, m, u) {
124
+ const mu = (n * m) / 2.0;
125
+ const su = Math.sqrt((n * m * (n + m + 1)) / 12.0);
126
+ const z = (u - mu - 0.5) / su;
127
+ // Standard normal PDF and CDF
128
+ const phi = Math.exp((-z * z) / 2) / Math.sqrt(2 * Math.PI);
129
+ const bigPhi = gauss(z);
130
+ // Pre-compute powers of n and m for efficiency
131
+ const n2 = n * n;
132
+ const n3 = n2 * n;
133
+ const n4 = n2 * n2;
134
+ const m2 = m * m;
135
+ const m3 = m2 * m;
136
+ const m4 = m2 * m2;
137
+ // Compute moments
138
+ const mu2 = (n * m * (n + m + 1)) / 12.0;
139
+ const mu4 = (n * m * (n + m + 1) * (5 * m * n * (m + n) - 2 * (m2 + n2) + 3 * m * n - 2 * (n + m))) / 240.0;
140
+ const mu6 = (n *
141
+ m *
142
+ (n + m + 1) *
143
+ (35 * m2 * n2 * (m2 + n2) +
144
+ 70 * m3 * n3 -
145
+ 42 * m * n * (m3 + n3) -
146
+ 14 * m2 * n2 * (n + m) +
147
+ 16 * (n4 + m4) -
148
+ 52 * n * m * (n2 + m2) -
149
+ 43 * n2 * m2 +
150
+ 32 * (m3 + n3) +
151
+ 14 * m * n * (n + m) +
152
+ 8 * (n2 + m2) +
153
+ 16 * n * m -
154
+ 8 * (n + m))) /
155
+ 4032.0;
156
+ // Pre-compute powers of mu2 and related terms
157
+ const mu2_2 = mu2 * mu2;
158
+ const mu2_3 = mu2_2 * mu2;
159
+ const mu4_mu2_2 = mu4 / mu2_2;
160
+ // Factorial constants: 4! = 24, 6! = 720, 8! = 40320
161
+ const e3 = (mu4_mu2_2 - 3) / 24.0;
162
+ const e5 = (mu6 / mu2_3 - 15 * mu4_mu2_2 + 30) / 720.0;
163
+ const e7 = (35 * (mu4_mu2_2 - 3) * (mu4_mu2_2 - 3)) / 40320.0;
164
+ // Pre-compute powers of z for Hermite polynomials
165
+ const z2 = z * z;
166
+ const z3 = z2 * z;
167
+ const z5 = z3 * z2;
168
+ const z7 = z5 * z2;
169
+ // Hermite polynomial derivatives: f_n = -phi * H_n(z)
170
+ const f3 = -phi * (z3 - 3 * z);
171
+ const f5 = -phi * (z5 - 10 * z3 + 15 * z);
172
+ const f7 = -phi * (z7 - 21 * z5 + 105 * z3 - 105 * z);
173
+ // Edgeworth expansion
174
+ const edgeworth = bigPhi + e3 * f3 + e5 * f5 + e7 * f7;
175
+ // Clamp to [0, 1]
176
+ return Math.max(0, Math.min(1, edgeworth));
177
+ }
178
+ /**
179
+ * Computes the standard normal CDF using ACM Algorithm 209
180
+ *
181
+ * Calculates (1/sqrt(2*pi)) * integral from -infinity to x of e^(-u^2/2) du
182
+ * by means of polynomial approximations due to A. M. Murray of Aberdeen University.
183
+ *
184
+ * See: http://dl.acm.org/citation.cfm?id=367664
185
+ *
186
+ * @param x -infinity..+infinity
187
+ * @returns Area under the Standard Normal Curve from -infinity to x
188
+ */
189
+ function gauss(x) {
190
+ let z;
191
+ if (Math.abs(x) < 1e-9) {
192
+ z = 0.0;
193
+ }
194
+ else {
195
+ let y = Math.abs(x) / 2;
196
+ if (y >= 3.0) {
197
+ z = 1.0;
198
+ }
199
+ else if (y < 1.0) {
200
+ const w = y * y;
201
+ z =
202
+ ((((((((0.000124818987 * w - 0.001075204047) * w + 0.005198775019) * w - 0.019198292004) *
203
+ w +
204
+ 0.059054035642) *
205
+ w -
206
+ 0.151968751364) *
207
+ w +
208
+ 0.319152932694) *
209
+ w -
210
+ 0.5319230073) *
211
+ w +
212
+ 0.797884560593) *
213
+ y *
214
+ 2.0;
215
+ }
216
+ else {
217
+ y = y - 2.0;
218
+ z =
219
+ (((((((((((((-0.000045255659 * y + 0.00015252929) * y - 0.000019538132) * y -
220
+ 0.000676904986) *
221
+ y +
222
+ 0.001390604284) *
223
+ y -
224
+ 0.00079462082) *
225
+ y -
226
+ 0.002034254874) *
227
+ y +
228
+ 0.006549791214) *
229
+ y -
230
+ 0.010557625006) *
231
+ y +
232
+ 0.011630447319) *
233
+ y -
234
+ 0.009279453341) *
235
+ y +
236
+ 0.005353579108) *
237
+ y -
238
+ 0.002141268741) *
239
+ y +
240
+ 0.000535310849) *
241
+ y +
242
+ 0.999936657524;
243
+ }
244
+ }
245
+ return x > 0.0 ? (z + 1.0) / 2 : (1.0 - z) / 2;
246
+ }
247
+ /**
248
+ * Computes binomial coefficient C(n, k) using integer arithmetic
249
+ */
250
+ function binomialCoefficient(n, k) {
251
+ if (k > n) {
252
+ return 0;
253
+ }
254
+ if (k === 0 || k === n) {
255
+ return 1;
256
+ }
257
+ k = Math.min(k, n - k); // Take advantage of symmetry
258
+ let result = 1;
259
+ for (let i = 0; i < k; i++) {
260
+ result = (result * (n - i)) / (i + 1);
261
+ }
262
+ return result;
263
+ }
264
+ /**
265
+ * Computes binomial coefficient using floating-point logarithms for large values
266
+ */
267
+ function binomialCoefficientFloat(n, k) {
268
+ if (k > n) {
269
+ return 0;
270
+ }
271
+ if (k === 0 || k === n) {
272
+ return 1;
273
+ }
274
+ k = Math.min(k, n - k); // Take advantage of symmetry
275
+ // Use log-factorial function: C(n, k) = exp(log(n!) - log(k!) - log((n-k)!))
276
+ const logResult = logFactorial(n) - logFactorial(k) - logFactorial(n - k);
277
+ return Math.exp(logResult);
278
+ }
279
+ /**
280
+ * Computes the natural logarithm of n!
281
+ */
282
+ function logFactorial(n) {
283
+ if (n === 0 || n === 1) {
284
+ return 0;
285
+ }
286
+ const x = n + 1; // n! = Gamma(n+1)
287
+ if (x < 1e-5) {
288
+ return 0;
289
+ }
290
+ // DONT TOUCH: Stirling's approximation is inaccurate for small x.
291
+ // Use Gamma recurrence: Gamma(x) = Gamma(x+k) / (x*(x+1)*...*(x+k-1))
292
+ // These branches appear unreachable in current usage (n+m >= 65), but
293
+ // are retained for correctness if the function is used in other contexts.
294
+ if (x < 1) {
295
+ return stirlingApproxLog(x + 3) - Math.log(x * (x + 1) * (x + 2));
296
+ }
297
+ if (x < 2) {
298
+ return stirlingApproxLog(x + 2) - Math.log(x * (x + 1));
299
+ }
300
+ if (x < 3) {
301
+ return stirlingApproxLog(x + 1) - Math.log(x);
302
+ }
303
+ return stirlingApproxLog(x);
304
+ }
305
+ /**
306
+ * Stirling's approximation with Bernoulli correction
307
+ */
308
+ function stirlingApproxLog(x) {
309
+ let result = x * Math.log(x) - x + Math.log((2 * Math.PI) / x) / 2;
310
+ // Bernoulli correction series
311
+ const B2 = 1.0 / 6.0;
312
+ const B4 = -1.0 / 30.0;
313
+ const B6 = 1.0 / 42.0;
314
+ const B8 = -1.0 / 30.0;
315
+ const B10 = 5.0 / 66.0;
316
+ const x2 = x * x;
317
+ const x3 = x2 * x;
318
+ const x5 = x3 * x2;
319
+ const x7 = x5 * x2;
320
+ const x9 = x7 * x2;
321
+ result += B2 / (2 * x) + B4 / (12 * x3) + B6 / (30 * x5) + B8 / (56 * x7) + B10 / (90 * x9);
322
+ return result;
323
+ }
324
+ //# sourceMappingURL=pairwiseMargin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairwiseMargin.js","sourceRoot":"","sources":["../src/pairwiseMargin.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -7,11 +7,4 @@
7
7
  * @returns The median value
8
8
  */
9
9
  export declare function median(values: number[]): number;
10
- /**
11
- * Generate all pairwise combinations of indices
12
- * @param n Number of elements
13
- * @param includeDiagonal Whether to include pairs (i, i)
14
- * @returns Array of index pairs [i, j]
15
- */
16
- export declare function getPairs(n: number, includeDiagonal?: boolean): [number, number][];
17
10
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAa/C;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,GAAE,OAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAWvF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAa/C"}
package/dist/utils.js CHANGED
@@ -4,7 +4,6 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.median = median;
7
- exports.getPairs = getPairs;
8
7
  /**
9
8
  * Calculate the median of an array of numbers
10
9
  * @param values Array of numbers
@@ -23,20 +22,4 @@ function median(values) {
23
22
  return sorted[mid];
24
23
  }
25
24
  }
26
- /**
27
- * Generate all pairwise combinations of indices
28
- * @param n Number of elements
29
- * @param includeDiagonal Whether to include pairs (i, i)
30
- * @returns Array of index pairs [i, j]
31
- */
32
- function getPairs(n, includeDiagonal = true) {
33
- const pairs = [];
34
- for (let i = 0; i < n; i++) {
35
- const startJ = includeDiagonal ? i : i + 1;
36
- for (let j = startJ; j < n; j++) {
37
- pairs.push([i, j]);
38
- }
39
- }
40
- return pairs;
41
- }
42
25
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAOH,wBAaC;AAQD,4BAWC;AArCD;;;;GAIG;AACH,SAAgB,MAAM,CAAC,MAAgB;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,CAAS,EAAE,kBAA2B,IAAI;IACjE,MAAM,KAAK,GAAuB,EAAE,CAAC;IAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAOH,wBAaC;AAlBD;;;;GAIG;AACH,SAAgB,MAAM,CAAC,MAAgB;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pragmastat",
3
- "version": "3.2.3",
3
+ "version": "4.0.0",
4
4
  "description": "Pragmastat: Pragmatic Statistical Toolkit",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",