@danielsimonjr/mathts-functions 0.14.0 → 0.15.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/dist/descriptive-stats.d.ts +11 -0
- package/dist/descriptive-stats.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +285 -9
- package/dist/typed/dist-objects.d.ts +17 -0
- package/dist/typed/dist-objects.d.ts.map +1 -1
- package/dist/typed/hypothesis.d.ts +78 -0
- package/dist/typed/hypothesis.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -56,5 +56,16 @@ export declare function cov(x: Vec | number[][], y?: Vec, ddof?: number): number
|
|
|
56
56
|
* columns = variables). Diagonal is 1; off-diagonals are Pearson r.
|
|
57
57
|
*/
|
|
58
58
|
export declare function corrcoef(matrix: number[][]): number[][];
|
|
59
|
+
/**
|
|
60
|
+
* Kendall's τ_b rank correlation coefficient — a tie-corrected measure of
|
|
61
|
+
* ordinal association based on the difference between concordant and discordant
|
|
62
|
+
* pairs. Complements {@link spearman} (rank Pearson) and Pearson `corr`.
|
|
63
|
+
* Returns τ_b = (P − Q) / √((n₀ − n₁)(n₀ − n₂)), matching `scipy.stats.kendalltau`
|
|
64
|
+
* (`variant='b'`, its default), where n₀ = n(n−1)/2 and n₁/n₂ are the tie-pair
|
|
65
|
+
* counts in x and y respectively.
|
|
66
|
+
*
|
|
67
|
+
* @example kendallTau([1,2,3,4,5], [2,1,4,3,5]) // 0.6
|
|
68
|
+
*/
|
|
69
|
+
export declare function kendallTau(x: Vec, y: Vec): number;
|
|
59
70
|
export {};
|
|
60
71
|
//# sourceMappingURL=descriptive-stats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptive-stats.d.ts","sourceRoot":"","sources":["../src/descriptive-stats.ts"],"names":[],"mappings":"AAsBA,KAAK,GAAG,GAAG,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC;AAiB5C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,CAazC;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAsB/C;AAED,gFAAgF;AAChF,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAKpC;AAED,6DAA6D;AAC7D,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAKpC;AAED,qFAAqF;AACrF,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,MAAM,CAOhE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAatE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAaxF;AAED,wDAAwD;AACxD,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAGlC;AAED,oDAAoD;AACpD,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAIlC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,CAOvC;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,SAAI,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,CAgC/E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAOvD"}
|
|
1
|
+
{"version":3,"file":"descriptive-stats.d.ts","sourceRoot":"","sources":["../src/descriptive-stats.ts"],"names":[],"mappings":"AAsBA,KAAK,GAAG,GAAG,SAAS,MAAM,EAAE,GAAG,YAAY,CAAC;AAiB5C;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,CAazC;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAsB/C;AAED,gFAAgF;AAChF,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAKpC;AAED,6DAA6D;AAC7D,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAKpC;AAED,qFAAqF;AACrF,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,MAAM,CAOhE;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAatE;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,MAAM,CAaxF;AAED,wDAAwD;AACxD,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAGlC;AAED,oDAAoD;AACpD,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAIlC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,CAOvC;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,SAAI,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,CAgC/E;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAOvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CA0BjD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export { evaluate, compileExpr, parse, parser, reviver, replacer } from './facto
|
|
|
17
17
|
export { help } from './help.js';
|
|
18
18
|
export { derivativeAt, valueAndDerivativeAt, gradientAt } from './grad-forward.js';
|
|
19
19
|
export type { DualFn } from './grad-forward.js';
|
|
20
|
-
export { gmean, hmean, moment, skewness, kurtosis, iqr, sem, zscore, cov, corrcoef, rankdata, spearman, } from './descriptive-stats.js';
|
|
20
|
+
export { gmean, hmean, moment, skewness, kurtosis, iqr, sem, zscore, cov, corrcoef, rankdata, spearman, kendallTau, } from './descriptive-stats.js';
|
|
21
21
|
export { clamp, sigmoid, logsumexp, softmax, cumprod, cummax, cummin, cumtrapz, } from './numeric-extra.js';
|
|
22
22
|
export { normalQuantile, studentTCDF, studentTQuantile, chiSquaredCDF, chiSquaredQuantile, fCDF, fQuantile, gammaCDF, gammaQuantile, betaCDF, betaQuantile, cauchyPDF, cauchyCDF, cauchyQuantile, laplacePDF, laplaceCDF, laplaceQuantile, logisticPDF, logisticCDF, logisticQuantile, } from './distribution-functions.js';
|
|
23
23
|
export { fTest, jarqueBera, kruskalWallis, wilcoxon, fisherExact, studentizedRangeCDF, studentizedRangeQuantile, tukeyHSD, } from './hypothesis-extra.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,kBAAkB,CAAC;AAKjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAOzC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,GAAG,EACH,MAAM,EACN,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,kBAAkB,CAAC;AAKjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAOzC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,GAAG,EACH,MAAM,EACN,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,KAAK,EACL,OAAO,EACP,SAAS,EACT,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,QAAQ,GACT,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,YAAY,EACZ,SAAS,EACT,SAAS,EACT,cAAc,EACd,UAAU,EACV,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,KAAK,EACL,UAAU,EACV,aAAa,EACb,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,wBAAwB,EACxB,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,EACT,SAAS,EACT,MAAM,EACN,eAAe,EACf,cAAc,EACd,EAAE,GACH,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAG1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGxF,OAAO,EACL,SAAS,EACT,eAAe,EACf,KAAK,EACL,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -48,6 +48,7 @@ __export(typed_exports, {
|
|
|
48
48
|
autoCorrelation: () => autoCorrelation,
|
|
49
49
|
bandpassFilter: () => bandpassFilter,
|
|
50
50
|
bartlettPSD: () => bartlettPSD,
|
|
51
|
+
bartlettTest: () => bartlettTest,
|
|
51
52
|
bernoulli: () => bernoulli,
|
|
52
53
|
bernoulliPMF: () => bernoulliPMF,
|
|
53
54
|
besselI: () => besselI,
|
|
@@ -67,6 +68,7 @@ __export(typed_exports, {
|
|
|
67
68
|
bin: () => bin,
|
|
68
69
|
binomialDist: () => binomialDist,
|
|
69
70
|
binomialPMF: () => binomialPMF,
|
|
71
|
+
binomialTest: () => binomialTest,
|
|
70
72
|
bitAnd: () => bitAnd,
|
|
71
73
|
bitNot: () => bitNot,
|
|
72
74
|
bitOr: () => bitOr,
|
|
@@ -205,6 +207,7 @@ __export(typed_exports, {
|
|
|
205
207
|
hex: () => hex,
|
|
206
208
|
highpassFilter: () => highpassFilter,
|
|
207
209
|
hilbertTransform: () => hilbertTransform,
|
|
210
|
+
hypergeometricDist: () => hypergeometricDist,
|
|
208
211
|
hypot: () => hypot,
|
|
209
212
|
idct: () => idct,
|
|
210
213
|
idst: () => idst,
|
|
@@ -223,6 +226,7 @@ __export(typed_exports, {
|
|
|
223
226
|
jsDivergence: () => jsDivergence,
|
|
224
227
|
kdTree: () => kdTree,
|
|
225
228
|
kdTreeNearest: () => kdTreeNearest,
|
|
229
|
+
kolmogorovSmirnov2Test: () => kolmogorovSmirnov2Test,
|
|
226
230
|
kolmogorovSmirnovTest: () => kolmogorovSmirnovTest,
|
|
227
231
|
lagrangeInterp: () => lagrangeInterp,
|
|
228
232
|
laguerreL: () => laguerreL,
|
|
@@ -234,6 +238,7 @@ __export(typed_exports, {
|
|
|
234
238
|
leftShift: () => leftShift,
|
|
235
239
|
legendreFit: () => legendreFit,
|
|
236
240
|
legendreP: () => legendreP,
|
|
241
|
+
leveneTest: () => leveneTest,
|
|
237
242
|
lgamma: () => lgamma,
|
|
238
243
|
linearInterp: () => linearInterp,
|
|
239
244
|
linprog: () => linprog,
|
|
@@ -277,6 +282,7 @@ __export(typed_exports, {
|
|
|
277
282
|
multinomial: () => multinomial,
|
|
278
283
|
multiply: () => multiply,
|
|
279
284
|
nearestNeighbor: () => nearestNeighbor,
|
|
285
|
+
negativeBinomialDist: () => negativeBinomialDist,
|
|
280
286
|
newtonInterp: () => newtonInterp,
|
|
281
287
|
nextPrime: () => nextPrime,
|
|
282
288
|
nintegrate: () => nintegrate,
|
|
@@ -354,6 +360,7 @@ __export(typed_exports, {
|
|
|
354
360
|
principalComponentAnalysis: () => principalComponentAnalysis,
|
|
355
361
|
print: () => print,
|
|
356
362
|
projectVector: () => projectVector,
|
|
363
|
+
proportionZTest: () => proportionZTest,
|
|
357
364
|
quadprog: () => quadprog,
|
|
358
365
|
quickSelect: () => quickSelect,
|
|
359
366
|
random: () => random,
|
|
@@ -410,6 +417,7 @@ __export(typed_exports, {
|
|
|
410
417
|
stronglyConnectedComponents: () => stronglyConnectedComponents,
|
|
411
418
|
studentTPDF: () => studentTPDF,
|
|
412
419
|
studentTTest: () => studentTTest,
|
|
420
|
+
studentTTestPaired: () => studentTTestPaired,
|
|
413
421
|
subfactorial: () => subfactorial,
|
|
414
422
|
substitute: () => substitute,
|
|
415
423
|
subtract: () => subtract,
|
|
@@ -12813,12 +12821,7 @@ function _normalQuantileStd(p) {
|
|
|
12813
12821
|
4.374664141464968,
|
|
12814
12822
|
2.938163982698783
|
|
12815
12823
|
];
|
|
12816
|
-
const d = [
|
|
12817
|
-
0.007784695709041462,
|
|
12818
|
-
0.3224671290700398,
|
|
12819
|
-
2.445134137142996,
|
|
12820
|
-
3.754408661907416
|
|
12821
|
-
];
|
|
12824
|
+
const d = [0.007784695709041462, 0.3224671290700398, 2.445134137142996, 3.754408661907416];
|
|
12822
12825
|
const pLow = 0.02425;
|
|
12823
12826
|
let x;
|
|
12824
12827
|
if (p < pLow) {
|
|
@@ -13489,6 +13492,109 @@ function weibullDist(k, lambda = 1) {
|
|
|
13489
13492
|
})
|
|
13490
13493
|
};
|
|
13491
13494
|
}
|
|
13495
|
+
function _logChoose(n, r) {
|
|
13496
|
+
if (r < 0 || r > n) return -Infinity;
|
|
13497
|
+
return _logFactorial2(n) - _logFactorial2(r) - _logFactorial2(n - r);
|
|
13498
|
+
}
|
|
13499
|
+
function _choose(n, r) {
|
|
13500
|
+
if (r < 0 || r > n) return 0;
|
|
13501
|
+
const k = Math.min(r, n - r);
|
|
13502
|
+
let c = 1;
|
|
13503
|
+
for (let i = 0; i < k; i++) c = c * (n - i) / (i + 1);
|
|
13504
|
+
return c;
|
|
13505
|
+
}
|
|
13506
|
+
function _discreteSample(cdf, rng, cap) {
|
|
13507
|
+
const u = rng();
|
|
13508
|
+
for (let k = 0; k <= cap; k++) {
|
|
13509
|
+
if (cdf(k) >= u) return k;
|
|
13510
|
+
}
|
|
13511
|
+
return cap;
|
|
13512
|
+
}
|
|
13513
|
+
function hypergeometricDist(population, successes, draws) {
|
|
13514
|
+
if (![population, successes, draws].every((v) => Number.isInteger(v) && v >= 0)) {
|
|
13515
|
+
throw new Error(
|
|
13516
|
+
"hypergeometricDist: population, successes, draws must be non-negative integers"
|
|
13517
|
+
);
|
|
13518
|
+
}
|
|
13519
|
+
if (successes > population || draws > population) {
|
|
13520
|
+
throw new Error("hypergeometricDist: successes and draws cannot exceed population");
|
|
13521
|
+
}
|
|
13522
|
+
const M = population;
|
|
13523
|
+
const K = successes;
|
|
13524
|
+
const N = draws;
|
|
13525
|
+
const kMin = Math.max(0, N - (M - K));
|
|
13526
|
+
const kMax = Math.min(K, N);
|
|
13527
|
+
const useExact = M <= 1e3;
|
|
13528
|
+
const pmf = (k) => {
|
|
13529
|
+
if (!Number.isInteger(k) || k < kMin || k > kMax) return 0;
|
|
13530
|
+
return useExact ? _choose(K, k) * _choose(M - K, N - k) / _choose(M, N) : Math.exp(_logChoose(K, k) + _logChoose(M - K, N - k) - _logChoose(M, N));
|
|
13531
|
+
};
|
|
13532
|
+
const cdf = (k) => {
|
|
13533
|
+
if (k < kMin) return 0;
|
|
13534
|
+
const kk = Math.min(Math.floor(k), kMax);
|
|
13535
|
+
let sum3 = 0;
|
|
13536
|
+
for (let i = kMin; i <= kk; i++) sum3 += pmf(i);
|
|
13537
|
+
return Math.min(1, sum3);
|
|
13538
|
+
};
|
|
13539
|
+
const mean6 = N * K / M;
|
|
13540
|
+
const variance2 = N * (K / M) * ((M - K) / M) * ((M - N) / (M - 1));
|
|
13541
|
+
return {
|
|
13542
|
+
pdf: pmf,
|
|
13543
|
+
cdf,
|
|
13544
|
+
quantile: (p) => {
|
|
13545
|
+
if (p <= 0) return kMin;
|
|
13546
|
+
if (p >= 1) return kMax;
|
|
13547
|
+
for (let k = kMin; k <= kMax; k++) if (cdf(k) >= p) return k;
|
|
13548
|
+
return kMax;
|
|
13549
|
+
},
|
|
13550
|
+
mean: mean6,
|
|
13551
|
+
variance: variance2,
|
|
13552
|
+
sample: () => _discreteSample(cdf, Math.random, kMax),
|
|
13553
|
+
sampleN: (n, opts) => _sampleNDispatch(null, [], n, opts, (count2, rng) => {
|
|
13554
|
+
const out = new Float64Array(count2);
|
|
13555
|
+
for (let j = 0; j < count2; j++) out[j] = _discreteSample(cdf, rng, kMax);
|
|
13556
|
+
return out;
|
|
13557
|
+
})
|
|
13558
|
+
};
|
|
13559
|
+
}
|
|
13560
|
+
function negativeBinomialDist(r, p) {
|
|
13561
|
+
if (!Number.isInteger(r) || r < 1)
|
|
13562
|
+
throw new Error("negativeBinomialDist: r must be a positive integer");
|
|
13563
|
+
if (p <= 0 || p > 1) throw new Error("negativeBinomialDist: p must be in (0, 1]");
|
|
13564
|
+
const pmf = (k) => {
|
|
13565
|
+
if (!Number.isInteger(k) || k < 0) return 0;
|
|
13566
|
+
return Math.exp(_logChoose(k + r - 1, k) + r * Math.log(p) + k * Math.log(1 - p));
|
|
13567
|
+
};
|
|
13568
|
+
const cdf = (k) => {
|
|
13569
|
+
if (k < 0) return 0;
|
|
13570
|
+
return Math.min(1, _betainc(p, r, Math.floor(k) + 1));
|
|
13571
|
+
};
|
|
13572
|
+
const mean6 = r * (1 - p) / p;
|
|
13573
|
+
const variance2 = r * (1 - p) / (p * p);
|
|
13574
|
+
return {
|
|
13575
|
+
pdf: pmf,
|
|
13576
|
+
cdf,
|
|
13577
|
+
quantile: (prob) => {
|
|
13578
|
+
if (prob <= 0) return 0;
|
|
13579
|
+
if (prob >= 1) return Infinity;
|
|
13580
|
+
let cumul = 0;
|
|
13581
|
+
for (let k = 0; k < 1e5; k++) {
|
|
13582
|
+
cumul += pmf(k);
|
|
13583
|
+
if (cumul >= prob) return k;
|
|
13584
|
+
}
|
|
13585
|
+
return Infinity;
|
|
13586
|
+
},
|
|
13587
|
+
mean: mean6,
|
|
13588
|
+
variance: variance2,
|
|
13589
|
+
sample: () => _discreteSample(cdf, Math.random, Math.ceil(mean6 + 20 * Math.sqrt(variance2) + 20)),
|
|
13590
|
+
sampleN: (n, opts) => _sampleNDispatch(null, [], n, opts, (count2, rng) => {
|
|
13591
|
+
const out = new Float64Array(count2);
|
|
13592
|
+
const cap = Math.ceil(mean6 + 20 * Math.sqrt(variance2) + 20);
|
|
13593
|
+
for (let j = 0; j < count2; j++) out[j] = _discreteSample(cdf, rng, cap);
|
|
13594
|
+
return out;
|
|
13595
|
+
})
|
|
13596
|
+
};
|
|
13597
|
+
}
|
|
13492
13598
|
|
|
13493
13599
|
// src/typed/hypothesis.ts
|
|
13494
13600
|
import { computePool as computePool10 } from "@danielsimonjr/mathts-parallel";
|
|
@@ -14252,6 +14358,140 @@ function principalComponentAnalysis(data, k) {
|
|
|
14252
14358
|
});
|
|
14253
14359
|
return { components: eigenvectors, explained, scores };
|
|
14254
14360
|
}
|
|
14361
|
+
function _kstwobignSf(x) {
|
|
14362
|
+
if (x <= 0) return 1;
|
|
14363
|
+
let sum3 = 0;
|
|
14364
|
+
for (let k = 1; k <= 100; k++) {
|
|
14365
|
+
const term = 2 * (k % 2 === 1 ? 1 : -1) * Math.exp(-2 * k * k * x * x);
|
|
14366
|
+
sum3 += term;
|
|
14367
|
+
if (Math.abs(term) < 1e-15) break;
|
|
14368
|
+
}
|
|
14369
|
+
return Math.max(0, Math.min(1, sum3));
|
|
14370
|
+
}
|
|
14371
|
+
function kolmogorovSmirnov2Test(sample1, sample2) {
|
|
14372
|
+
const n16 = sample1.length;
|
|
14373
|
+
const n26 = sample2.length;
|
|
14374
|
+
if (n16 < 1 || n26 < 1) {
|
|
14375
|
+
throw new Error("kolmogorovSmirnov2Test: both samples must be non-empty");
|
|
14376
|
+
}
|
|
14377
|
+
const a = sample1.slice().sort((x, y) => x - y);
|
|
14378
|
+
const b = sample2.slice().sort((x, y) => x - y);
|
|
14379
|
+
let i = 0;
|
|
14380
|
+
let j = 0;
|
|
14381
|
+
let d = 0;
|
|
14382
|
+
while (i < n16 && j < n26) {
|
|
14383
|
+
const x = Math.min(a[i], b[j]);
|
|
14384
|
+
while (i < n16 && a[i] <= x) i++;
|
|
14385
|
+
while (j < n26 && b[j] <= x) j++;
|
|
14386
|
+
d = Math.max(d, Math.abs(i / n16 - j / n26));
|
|
14387
|
+
}
|
|
14388
|
+
const en = Math.sqrt(n16 * n26 / (n16 + n26));
|
|
14389
|
+
return { statistic: d, pValue: _kstwobignSf(en * d) };
|
|
14390
|
+
}
|
|
14391
|
+
function _median(arr7) {
|
|
14392
|
+
const s = arr7.slice().sort((a, b) => a - b);
|
|
14393
|
+
const n = s.length;
|
|
14394
|
+
const m = n >> 1;
|
|
14395
|
+
return n % 2 === 1 ? s[m] : (s[m - 1] + s[m]) / 2;
|
|
14396
|
+
}
|
|
14397
|
+
function leveneTest(groups, center = "median") {
|
|
14398
|
+
const k = groups.length;
|
|
14399
|
+
if (k < 2) throw new Error("leveneTest: need at least 2 groups");
|
|
14400
|
+
let N = 0;
|
|
14401
|
+
for (const g of groups) {
|
|
14402
|
+
if (g.length < 1) throw new Error("leveneTest: every group must be non-empty");
|
|
14403
|
+
N += g.length;
|
|
14404
|
+
}
|
|
14405
|
+
const z = groups.map((g) => {
|
|
14406
|
+
const c = center === "median" ? _median(g) : _mean(g);
|
|
14407
|
+
return g.map((x) => Math.abs(x - c));
|
|
14408
|
+
});
|
|
14409
|
+
const allZ = [];
|
|
14410
|
+
for (const zi of z) for (const v of zi) allZ.push(v);
|
|
14411
|
+
const zBarAll = _mean(allZ);
|
|
14412
|
+
let num2 = 0;
|
|
14413
|
+
let den = 0;
|
|
14414
|
+
for (const zi of z) {
|
|
14415
|
+
const zBarI = _mean(zi);
|
|
14416
|
+
num2 += zi.length * (zBarI - zBarAll) * (zBarI - zBarAll);
|
|
14417
|
+
for (const v of zi) den += (v - zBarI) * (v - zBarI);
|
|
14418
|
+
}
|
|
14419
|
+
const W = (N - k) / (k - 1) * (num2 / den);
|
|
14420
|
+
return { statistic: W, pValue: _fPValue(W, k - 1, N - k), degreesOfFreedom: [k - 1, N - k] };
|
|
14421
|
+
}
|
|
14422
|
+
function bartlettTest(groups) {
|
|
14423
|
+
const k = groups.length;
|
|
14424
|
+
if (k < 2) throw new Error("bartlettTest: need at least 2 groups");
|
|
14425
|
+
let N = 0;
|
|
14426
|
+
for (const g of groups) {
|
|
14427
|
+
if (g.length < 2) throw new Error("bartlettTest: every group needs \u22652 observations");
|
|
14428
|
+
N += g.length;
|
|
14429
|
+
}
|
|
14430
|
+
let pooledNum = 0;
|
|
14431
|
+
let sumLnVar = 0;
|
|
14432
|
+
let sumInv = 0;
|
|
14433
|
+
for (const g of groups) {
|
|
14434
|
+
const ni = g.length;
|
|
14435
|
+
const si2 = _variance(g, 1);
|
|
14436
|
+
pooledNum += (ni - 1) * si2;
|
|
14437
|
+
sumLnVar += (ni - 1) * Math.log(si2);
|
|
14438
|
+
sumInv += 1 / (ni - 1);
|
|
14439
|
+
}
|
|
14440
|
+
const sp2 = pooledNum / (N - k);
|
|
14441
|
+
const numerator = (N - k) * Math.log(sp2) - sumLnVar;
|
|
14442
|
+
const C = 1 + (sumInv - 1 / (N - k)) / (3 * (k - 1));
|
|
14443
|
+
const T = numerator / C;
|
|
14444
|
+
return { statistic: T, pValue: _chiSquaredPValue(T, k - 1), degreesOfFreedom: k - 1 };
|
|
14445
|
+
}
|
|
14446
|
+
function studentTTestPaired(sample1, sample2) {
|
|
14447
|
+
const n = sample1.length;
|
|
14448
|
+
if (n < 2 || sample2.length !== n) {
|
|
14449
|
+
throw new Error("studentTTestPaired: samples must be the same length \u2265 2");
|
|
14450
|
+
}
|
|
14451
|
+
const d = sample1.map((x, i) => x - sample2[i]);
|
|
14452
|
+
const dBar = _mean(d);
|
|
14453
|
+
const sd = Math.sqrt(_variance(d, 1));
|
|
14454
|
+
const df = n - 1;
|
|
14455
|
+
const t = dBar / (sd / Math.sqrt(n));
|
|
14456
|
+
return { statistic: t, pValue: _tPValue(t, df), degreesOfFreedom: df };
|
|
14457
|
+
}
|
|
14458
|
+
function proportionZTest(count2, nobs, value) {
|
|
14459
|
+
let z;
|
|
14460
|
+
if (Array.isArray(count2) && Array.isArray(nobs)) {
|
|
14461
|
+
const [c1, c2] = count2;
|
|
14462
|
+
const [n16, n26] = nobs;
|
|
14463
|
+
const p1 = c1 / n16;
|
|
14464
|
+
const p2 = c2 / n26;
|
|
14465
|
+
const pPool = (c1 + c2) / (n16 + n26);
|
|
14466
|
+
z = (p1 - p2) / Math.sqrt(pPool * (1 - pPool) * (1 / n16 + 1 / n26));
|
|
14467
|
+
} else if (typeof count2 === "number" && typeof nobs === "number") {
|
|
14468
|
+
const p0 = value ?? 0.5;
|
|
14469
|
+
const pHat = count2 / nobs;
|
|
14470
|
+
z = (pHat - p0) / Math.sqrt(p0 * (1 - p0) / nobs);
|
|
14471
|
+
} else {
|
|
14472
|
+
throw new Error("proportionZTest: count and nobs must both be numbers or both be [a, b] pairs");
|
|
14473
|
+
}
|
|
14474
|
+
const pValue = erfcScalar(Math.abs(z) / Math.SQRT2);
|
|
14475
|
+
return { statistic: z, pValue };
|
|
14476
|
+
}
|
|
14477
|
+
function _binomPmf(k, n, p) {
|
|
14478
|
+
if (k < 0 || k > n) return 0;
|
|
14479
|
+
const logC = _lgamma3(n + 1) - _lgamma3(k + 1) - _lgamma3(n - k + 1);
|
|
14480
|
+
return Math.exp(logC + k * Math.log(p) + (n - k) * Math.log(1 - p));
|
|
14481
|
+
}
|
|
14482
|
+
function binomialTest(successes, n, p = 0.5) {
|
|
14483
|
+
if (!Number.isInteger(successes) || !Number.isInteger(n) || successes < 0 || successes > n) {
|
|
14484
|
+
throw new Error("binomialTest: successes must be an integer in [0, n]");
|
|
14485
|
+
}
|
|
14486
|
+
const dObs = _binomPmf(successes, n, p);
|
|
14487
|
+
const rel = 1 + 1e-7;
|
|
14488
|
+
let pValue = 0;
|
|
14489
|
+
for (let k = 0; k <= n; k++) {
|
|
14490
|
+
const pk = _binomPmf(k, n, p);
|
|
14491
|
+
if (pk <= dObs * rel) pValue += pk;
|
|
14492
|
+
}
|
|
14493
|
+
return { statistic: successes / n, pValue: Math.min(1, pValue) };
|
|
14494
|
+
}
|
|
14255
14495
|
|
|
14256
14496
|
// src/typed/matrix-ops.ts
|
|
14257
14497
|
import {
|
|
@@ -33488,7 +33728,7 @@ var createMedian = /* @__PURE__ */ factory(
|
|
|
33488
33728
|
name219,
|
|
33489
33729
|
dependencies219,
|
|
33490
33730
|
({ typed: typed3, add: add2, divide: divide2, compare: compare2, partitionSelect: partitionSelect2 }) => {
|
|
33491
|
-
function
|
|
33731
|
+
function _median2(array) {
|
|
33492
33732
|
try {
|
|
33493
33733
|
const flat = flatten2(array.valueOf());
|
|
33494
33734
|
const num2 = flat.length;
|
|
@@ -33525,7 +33765,7 @@ var createMedian = /* @__PURE__ */ factory(
|
|
|
33525
33765
|
});
|
|
33526
33766
|
return typed3(name219, {
|
|
33527
33767
|
// median([a, b, c, d, ...])
|
|
33528
|
-
"Array | Matrix":
|
|
33768
|
+
"Array | Matrix": _median2,
|
|
33529
33769
|
// median([a, b, c, d, ...], dim)
|
|
33530
33770
|
"Array | Matrix, number | BigNumber": function(_array, _dim) {
|
|
33531
33771
|
throw new Error("median(A, dim) is not yet supported");
|
|
@@ -33535,7 +33775,7 @@ var createMedian = /* @__PURE__ */ factory(
|
|
|
33535
33775
|
if (containsCollections(args)) {
|
|
33536
33776
|
throw new TypeError("Scalar values expected in function median");
|
|
33537
33777
|
}
|
|
33538
|
-
return
|
|
33778
|
+
return _median2(args);
|
|
33539
33779
|
}
|
|
33540
33780
|
});
|
|
33541
33781
|
}
|
|
@@ -42536,6 +42776,33 @@ function corrcoef(matrix2) {
|
|
|
42536
42776
|
(_, i) => Array.from({ length: n }, (_2, j) => c[i][j] / (d[i] * d[j]))
|
|
42537
42777
|
);
|
|
42538
42778
|
}
|
|
42779
|
+
function kendallTau(x, y) {
|
|
42780
|
+
const n = x.length;
|
|
42781
|
+
if (n !== y.length) throw new Error("kendallTau: inputs must have equal length");
|
|
42782
|
+
if (n < 2) return NaN;
|
|
42783
|
+
let P2 = 0;
|
|
42784
|
+
let Q2 = 0;
|
|
42785
|
+
for (let i = 0; i < n; i++) {
|
|
42786
|
+
for (let j = i + 1; j < n; j++) {
|
|
42787
|
+
const s = Math.sign(x[j] - x[i]) * Math.sign(y[j] - y[i]);
|
|
42788
|
+
if (s > 0) P2++;
|
|
42789
|
+
else if (s < 0) Q2++;
|
|
42790
|
+
}
|
|
42791
|
+
}
|
|
42792
|
+
const n0 = n * (n - 1) / 2;
|
|
42793
|
+
const tiePairs = (arr7) => {
|
|
42794
|
+
const counts = /* @__PURE__ */ new Map();
|
|
42795
|
+
for (const v of arr7) counts.set(v, (counts.get(v) ?? 0) + 1);
|
|
42796
|
+
let s = 0;
|
|
42797
|
+
for (const c of counts.values()) s += c * (c - 1) / 2;
|
|
42798
|
+
return s;
|
|
42799
|
+
};
|
|
42800
|
+
const n16 = tiePairs(x);
|
|
42801
|
+
const n26 = tiePairs(y);
|
|
42802
|
+
const denom = Math.sqrt((n0 - n16) * (n0 - n26));
|
|
42803
|
+
if (denom === 0) return NaN;
|
|
42804
|
+
return (P2 - Q2) / denom;
|
|
42805
|
+
}
|
|
42539
42806
|
|
|
42540
42807
|
// src/numeric-extra.ts
|
|
42541
42808
|
var toArr = (x) => Array.isArray(x) ? x : Array.from(x);
|
|
@@ -43716,6 +43983,7 @@ export {
|
|
|
43716
43983
|
avogadro,
|
|
43717
43984
|
bandpassFilter,
|
|
43718
43985
|
bartlettPSD,
|
|
43986
|
+
bartlettTest,
|
|
43719
43987
|
bellNumbers,
|
|
43720
43988
|
bernoulli,
|
|
43721
43989
|
bernoulliPMF,
|
|
@@ -43740,6 +44008,7 @@ export {
|
|
|
43740
44008
|
bin,
|
|
43741
44009
|
binomialDist,
|
|
43742
44010
|
binomialPMF,
|
|
44011
|
+
binomialTest,
|
|
43743
44012
|
bitAnd,
|
|
43744
44013
|
bitNot,
|
|
43745
44014
|
bitOr,
|
|
@@ -44057,6 +44326,7 @@ export {
|
|
|
44057
44326
|
highpassFilter,
|
|
44058
44327
|
hilbertTransform,
|
|
44059
44328
|
hmean,
|
|
44329
|
+
hypergeometricDist,
|
|
44060
44330
|
hypot,
|
|
44061
44331
|
idct,
|
|
44062
44332
|
identity,
|
|
@@ -44100,9 +44370,11 @@ export {
|
|
|
44100
44370
|
jsDivergence,
|
|
44101
44371
|
kdTree,
|
|
44102
44372
|
kdTreeNearest,
|
|
44373
|
+
kendallTau,
|
|
44103
44374
|
kldivergence,
|
|
44104
44375
|
klitzing,
|
|
44105
44376
|
kmeans,
|
|
44377
|
+
kolmogorovSmirnov2Test,
|
|
44106
44378
|
kolmogorovSmirnovTest,
|
|
44107
44379
|
kron,
|
|
44108
44380
|
kruskalWallis,
|
|
@@ -44125,6 +44397,7 @@ export {
|
|
|
44125
44397
|
legendreFit,
|
|
44126
44398
|
legendreP,
|
|
44127
44399
|
levenbergMarquardt,
|
|
44400
|
+
leveneTest,
|
|
44128
44401
|
lfilter,
|
|
44129
44402
|
lfilterZi,
|
|
44130
44403
|
lgamma,
|
|
@@ -44203,6 +44476,7 @@ export {
|
|
|
44203
44476
|
multiplyScalar,
|
|
44204
44477
|
multivariateTaylor,
|
|
44205
44478
|
nearestNeighbor,
|
|
44479
|
+
negativeBinomialDist,
|
|
44206
44480
|
nelderMead,
|
|
44207
44481
|
neutronMass,
|
|
44208
44482
|
newtonInterp,
|
|
@@ -44304,6 +44578,7 @@ export {
|
|
|
44304
44578
|
print,
|
|
44305
44579
|
prod,
|
|
44306
44580
|
projectVector,
|
|
44581
|
+
proportionZTest,
|
|
44307
44582
|
protonMass,
|
|
44308
44583
|
qr,
|
|
44309
44584
|
quadprog,
|
|
@@ -44416,6 +44691,7 @@ export {
|
|
|
44416
44691
|
studentTPDF,
|
|
44417
44692
|
studentTQuantile,
|
|
44418
44693
|
studentTTest,
|
|
44694
|
+
studentTTestPaired,
|
|
44419
44695
|
studentizedRangeCDF,
|
|
44420
44696
|
studentizedRangeQuantile,
|
|
44421
44697
|
subfactorial,
|
|
@@ -215,5 +215,22 @@ export declare function uniformDist(a?: f64, b?: f64): Distribution;
|
|
|
215
215
|
* d.mean // sqrt(pi) / 2
|
|
216
216
|
*/
|
|
217
217
|
export declare function weibullDist(k: f64, lambda?: f64): Distribution;
|
|
218
|
+
/**
|
|
219
|
+
* Hypergeometric distribution — the number of successes in `draws` samples drawn
|
|
220
|
+
* WITHOUT replacement from a `population` containing `successes` successes.
|
|
221
|
+
* `hypergeometricDist(population, successes, draws)` matches
|
|
222
|
+
* `scipy.stats.hypergeom(M=population, n=successes, N=draws)`.
|
|
223
|
+
*
|
|
224
|
+
* @example hypergeometricDist(50, 5, 10).pmf(1) // 0.4313371972
|
|
225
|
+
*/
|
|
226
|
+
export declare function hypergeometricDist(population: number, successes: number, draws: number): Distribution;
|
|
227
|
+
/**
|
|
228
|
+
* Negative-binomial distribution — the number of failures before the `r`-th
|
|
229
|
+
* success in i.i.d. Bernoulli(`p`) trials. `negativeBinomialDist(r, p)` matches
|
|
230
|
+
* `scipy.stats.nbinom(r, p)` (integer `r`).
|
|
231
|
+
*
|
|
232
|
+
* @example negativeBinomialDist(5, 0.4).pmf(3) // 0.0774144
|
|
233
|
+
*/
|
|
234
|
+
export declare function negativeBinomialDist(r: number, p: f64): Distribution;
|
|
218
235
|
export {};
|
|
219
236
|
//# sourceMappingURL=dist-objects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dist-objects.d.ts","sourceRoot":"","sources":["../../src/typed/dist-objects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH,0CAA0C;AAC1C,KAAK,GAAG,GAAG,MAAM,CAAC;AAElB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;IACrB,uCAAuC;IACvC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;IACrB,sCAAsC;IACtC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;IAC1B,wBAAwB;IACxB,IAAI,EAAE,GAAG,CAAC;IACV,4BAA4B;IAC5B,QAAQ,EAAE,GAAG,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE,MAAM,GAAG,CAAC;IAClB;;;;;;;;;OASG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACtE;
|
|
1
|
+
{"version":3,"file":"dist-objects.d.ts","sourceRoot":"","sources":["../../src/typed/dist-objects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AASH,0CAA0C;AAC1C,KAAK,GAAG,GAAG,MAAM,CAAC;AAElB;;;GAGG;AACH,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;IACrB,uCAAuC;IACvC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;IACrB,sCAAsC;IACtC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC;IAC1B,wBAAwB;IACxB,IAAI,EAAE,GAAG,CAAC;IACV,4BAA4B;IAC5B,QAAQ,EAAE,GAAG,CAAC;IACd,oDAAoD;IACpD,MAAM,EAAE,MAAM,GAAG,CAAC;IAClB;;;;;;;;;OASG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACtE;AAuPD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,EAAE,GAAE,GAAO,EAAE,KAAK,GAAE,GAAO,GAAG,YAAY,CA6BpE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,YAAY,CAiD7D;AA6DD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,YAAY,CAsD5D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAsDtD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,GAAE,GAAO,GAAG,YAAY,CAuB7D;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,YAAY,CAwDpD;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,GAAE,GAAO,GAAG,YAAY,CA8CjE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,EAAE,GAAE,GAAO,EAAE,KAAK,GAAE,GAAO,GAAG,YAAY,CAiCvE;AAMD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,GAAG,YAAY,CAoDrD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,GAAG,YAAY,CAmD3C;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAE,GAAO,EAAE,CAAC,GAAE,GAAO,GAAG,YAAY,CA2BhE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAE,GAAO,GAAG,YAAY,CA8BjE;AAmCD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,YAAY,CAmDd;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,GAAG,YAAY,CAwCpE"}
|
|
@@ -270,5 +270,83 @@ export declare function shapiroWilkTest(sample: f64[], opts?: BootstrapOptions):
|
|
|
270
270
|
* result.explained // [1.0]
|
|
271
271
|
*/
|
|
272
272
|
export declare function principalComponentAnalysis(data: f64[][], k?: number): PCAResult;
|
|
273
|
+
/**
|
|
274
|
+
* Two-sample Kolmogorov–Smirnov test: are two samples drawn from the same
|
|
275
|
+
* continuous distribution? The statistic is the maximum gap between the two
|
|
276
|
+
* empirical CDFs, D = maxₓ |F₁(x) − F₂(x)|; the p-value is the large-sample
|
|
277
|
+
* asymptotic Q(√(n₁n₂/(n₁+n₂))·D) (the `kstwobign` survival function, matching
|
|
278
|
+
* scipy's asymptotic method for large n). Distinct from the one-sample
|
|
279
|
+
* {@link kolmogorovSmirnovTest}, which compares one sample to a CDF *function*.
|
|
280
|
+
*
|
|
281
|
+
* @param sample1 - first sample (non-empty)
|
|
282
|
+
* @param sample2 - second sample (non-empty)
|
|
283
|
+
* @returns `{ statistic: D, pValue }`
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* kolmogorovSmirnov2Test([0.1, 0.4, 0.6], [0.3, 0.5, 0.9]) // { statistic, pValue }
|
|
287
|
+
*/
|
|
288
|
+
export declare function kolmogorovSmirnov2Test(sample1: f64[], sample2: f64[]): KSTestResult;
|
|
289
|
+
/** Variance-homogeneity test result. `degreesOfFreedom` is `[d1, d2]` for the
|
|
290
|
+
* F-based Levene test, a single number for the χ²-based Bartlett test. */
|
|
291
|
+
export interface VarianceTestResult {
|
|
292
|
+
statistic: f64;
|
|
293
|
+
pValue: f64;
|
|
294
|
+
degreesOfFreedom: number | [number, number];
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Levene's test for equality of variances across ≥2 groups (the ANOVA
|
|
298
|
+
* prerequisite). Robust to non-normality — it runs a one-way ANOVA F-test on the
|
|
299
|
+
* absolute deviations from each group's center. `center` defaults to `'median'`
|
|
300
|
+
* (the Brown–Forsythe variant, scipy's default); `'mean'` gives the original
|
|
301
|
+
* Levene test. Pinned to `scipy.stats.levene`.
|
|
302
|
+
*
|
|
303
|
+
* @example leveneTest([[8.1,8.3,7.9],[9.1,9.5,8.9]]) // { statistic, pValue, degreesOfFreedom }
|
|
304
|
+
*/
|
|
305
|
+
export declare function leveneTest(groups: f64[][], center?: 'median' | 'mean'): VarianceTestResult;
|
|
306
|
+
/**
|
|
307
|
+
* Bartlett's test for equality of variances across ≥2 groups. More powerful than
|
|
308
|
+
* Levene when the data are normal, but sensitive to departures from normality.
|
|
309
|
+
* Statistic is χ²-distributed with k−1 df. Pinned to `scipy.stats.bartlett`.
|
|
310
|
+
*
|
|
311
|
+
* @example bartlettTest([[8.1,8.3,7.9],[9.1,9.5,8.9]]) // { statistic, pValue, degreesOfFreedom }
|
|
312
|
+
*/
|
|
313
|
+
export declare function bartlettTest(groups: f64[][]): VarianceTestResult;
|
|
314
|
+
/**
|
|
315
|
+
* Paired (dependent-samples) t-test: tests whether the mean of the paired
|
|
316
|
+
* differences x−y is zero. Distinct from the two-sample Welch test in
|
|
317
|
+
* {@link studentTTest}, which assumes independent samples. Pinned to
|
|
318
|
+
* `scipy.stats.ttest_rel`.
|
|
319
|
+
*
|
|
320
|
+
* @example studentTTestPaired([1.2,2.3,3.1], [1.0,2.0,3.5]) // { statistic, pValue, degreesOfFreedom }
|
|
321
|
+
*/
|
|
322
|
+
export declare function studentTTestPaired(sample1: f64[], sample2: f64[]): TTestResult;
|
|
323
|
+
/** z-test result (statistic + two-tailed p-value). */
|
|
324
|
+
export interface ProportionZResult {
|
|
325
|
+
statistic: f64;
|
|
326
|
+
pValue: f64;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Proportion z-test (large-sample, two-tailed).
|
|
330
|
+
* - **One-sample**: `proportionZTest(successes, n, p0)` tests p̂ = successes/n
|
|
331
|
+
* against a hypothesized proportion `p0`.
|
|
332
|
+
* - **Two-sample**: `proportionZTest([s1, s2], [n1, n2])` tests p̂₁ = p̂₂ using
|
|
333
|
+
* the pooled-variance z (equivalent to `statsmodels.proportions_ztest`).
|
|
334
|
+
*
|
|
335
|
+
* @example proportionZTest(40, 100, 0.5) // one-sample: z=-2, p≈0.0455
|
|
336
|
+
* @example proportionZTest([40, 30], [100, 100]) // two-sample: z≈1.482, p≈0.138
|
|
337
|
+
*/
|
|
338
|
+
export declare function proportionZTest(count: number | [number, number], nobs: number | [number, number], value?: number): ProportionZResult;
|
|
339
|
+
/**
|
|
340
|
+
* Exact binomial test — is the observed success count consistent with success
|
|
341
|
+
* probability `p`? The two-tailed p-value is the total probability of all
|
|
342
|
+
* outcomes no more likely than the observed one (scipy's method-of-small-p).
|
|
343
|
+
* Pinned to `scipy.stats.binomtest`.
|
|
344
|
+
*
|
|
345
|
+
* @example binomialTest(8, 20, 0.5) // { pValue: 0.5034446716 }
|
|
346
|
+
*/
|
|
347
|
+
export declare function binomialTest(successes: number, n: number, p?: f64): {
|
|
348
|
+
statistic: f64;
|
|
349
|
+
pValue: f64;
|
|
350
|
+
};
|
|
273
351
|
export {};
|
|
274
352
|
//# sourceMappingURL=hypothesis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hypothesis.d.ts","sourceRoot":"","sources":["../../src/typed/hypothesis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;
|
|
1
|
+
{"version":3,"file":"hypothesis.d.ts","sourceRoot":"","sources":["../../src/typed/hypothesis.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED