UNPKG

als-statistics

Version:

Modular JS statistics toolkit for Node.js and the browser: descriptive stats, correlations (Pearson/Spearman/Kendall), t-tests & ANOVA (Student/Welch), reliability (Cronbach’s alpha), regression (linear/logistic), clustering (DBSCAN/HDBSCAN), and table/co

38 lines (35 loc) 1.08 kB
export function betacfNR(x, a, b, {EPS,FPMIN}) { const MAXIT = 200; let qab = a + b; let qap = a + 1; let qam = a - 1; // используется только для инициализации, но оставим для ясности let c = 1.0; let d = 1.0 - (qab * x) / qap; if (Math.abs(d) < FPMIN) d = FPMIN; d = 1.0 / d; let h = d; for (let m = 1; m <= MAXIT; m++) { const m2 = 2 * m; // Even step let aa = m * (b - m) * x / ((a + m2 - 1) * (a + m2)); d = 1.0 + aa * d; if (Math.abs(d) < FPMIN) d = FPMIN; c = 1.0 + aa / c; if (Math.abs(c) < FPMIN) c = FPMIN; d = 1.0 / d; h *= (d * c); // Odd step aa = - (a + m) * (qab + m) * x / ((a + m2) * (a + m2 + 1)); d = 1.0 + aa * d; if (Math.abs(d) < FPMIN) d = FPMIN; c = 1.0 + aa / c; if (Math.abs(c) < FPMIN) c = FPMIN; d = 1.0 / d; let delta = d * c; h *= delta; if (Math.abs(delta - 1.0) < EPS) { break; } } return h; }