UNPKG

lakutata

Version:

An IoC-based universal application framework.

2,250 lines (2,071 loc) 44.4 kB
"use strict"; function r(r) { var t; var e; var n = r.length; if (n === 1) { t = 0; e = r[0][1]; } else { var a = 0; var o = 0; var i = 0; var u = 0; var f; var v; var h; for (var s = 0; s < n; s++) { f = r[s]; v = f[0]; h = f[1]; a += v; o += h; i += v * v; u += v * h; } t = (n * u - a * o) / (n * i - a * a); e = o / n - t * a / n; } return { m: t, b: e }; } function t(r) { return function(t) { return r.b + r.m * t; }; } function e(r) { if (r.length === 0) { return 0; } var t = r[0]; var e = 0; var n; if (typeof t !== "number") { return Number.NaN; } for (var a = 1; a < r.length; a++) { if (typeof r[a] !== "number") { return Number.NaN; } n = t + r[a]; if (Math.abs(t) >= Math.abs(r[a])) { e += t - n + r[a]; } else { e += r[a] - n + t; } t = n; } return t + e; } function n(r) { if (r.length === 0) { throw new Error("mean requires at least one data point"); } return e(r) / r.length; } function a(r, t) { var e = n(r); var a = 0; var o; var i; if (t === 2) { for (i = 0; i < r.length; i++) { o = r[i] - e; a += o * o; } } else { for (i = 0; i < r.length; i++) { a += Math.pow(r[i] - e, t); } } return a; } function o(r) { if (r.length === 0) { throw new Error("variance requires at least one data point"); } return a(r, 2) / r.length; } function i(r) { if (r.length === 1) { return 0; } var t = o(r); return Math.sqrt(t); } function u(r, t) { if (r.length < 2) { return 1; } var e = 0; for (var n = 0; n < r.length; n++) { e += r[n][1]; } var a = e / r.length; var o = 0; for (var i = 0; i < r.length; i++) { o += Math.pow(a - r[i][1], 2); } var u = 0; for (var f = 0; f < r.length; f++) { u += Math.pow(r[f][1] - t(r[f][0]), 2); } return 1 - u / o; } function f(r) { if (r.length === 0) { throw new Error("mode requires at least one data point"); } if (r.length === 1) { return r[0]; } var t = r[0]; var e = Number.NaN; var n = 0; var a = 1; for (var o = 1; o < r.length + 1; o++) { if (r[o] !== t) { if (a > n) { n = a; e = t; } a = 1; t = r[o]; } else { a++; } } return e; } function v(r) { return r.slice().sort((function(r, t) { return r - t; })); } function h(r) { return f(v(r)); } function s(r) { var t = new Map; var e; var n = 0; for (var a = 0; a < r.length; a++) { var o = t.get(r[a]); if (o === undefined) { o = 1; } else { o++; } if (o > n) { e = r[a]; n = o; } t.set(r[a], o); } if (n === 0) { throw new Error("mode requires at last one data point"); } return e; } function l(r) { if (r.length === 0) { throw new Error("min requires at least one data point"); } var t = r[0]; for (var e = 1; e < r.length; e++) { if (r[e] < t) { t = r[e]; } } return t; } function c(r) { if (r.length === 0) { throw new Error("max requires at least one data point"); } var t = r[0]; for (var e = 1; e < r.length; e++) { if (r[e] > t) { t = r[e]; } } return t; } function p(r) { if (r.length === 0) { throw new Error("extent requires at least one data point"); } var t = r[0]; var e = r[0]; for (var n = 1; n < r.length; n++) { if (r[n] > e) { e = r[n]; } if (r[n] < t) { t = r[n]; } } return [ t, e ]; } function g(r) { return r[0]; } function w(r) { return r[r.length - 1]; } function M(r) { return [ r[0], r[r.length - 1] ]; } function m(r) { var t = 0; for (var e = 0; e < r.length; e++) { if (typeof r[e] !== "number") { return Number.NaN; } t += r[e]; } return t; } function d(r) { var t = 1; for (var e = 0; e < r.length; e++) { t *= r[e]; } return t; } function b(r, t) { var e = r.length * t; if (r.length === 0) { throw new Error("quantile requires at least one data point."); } else if (t < 0 || t > 1) { throw new Error("quantiles must be between 0 and 1"); } else if (t === 1) { return r[r.length - 1]; } else if (t === 0) { return r[0]; } else if (e % 1 !== 0) { return r[Math.ceil(e) - 1]; } else if (r.length % 2 === 0) { return (r[e - 1] + r[e]) / 2; } else { return r[e]; } } function x(r, t, e, n) { e = e || 0; n = n || r.length - 1; while (n > e) { if (n - e > 600) { var a = n - e + 1; var o = t - e + 1; var i = Math.log(a); var u = .5 * Math.exp(2 * i / 3); var f = .5 * Math.sqrt(i * u * (a - u) / a); if (o - a / 2 < 0) { f *= -1; } var v = Math.max(e, Math.floor(t - o * u / a + f)); var h = Math.min(n, Math.floor(t + (a - o) * u / a + f)); x(r, t, v, h); } var s = r[t]; var l = e; var c = n; q(r, e, t); if (r[n] > s) { q(r, e, n); } while (l < c) { q(r, l, c); l++; c--; while (r[l] < s) { l++; } while (r[c] > s) { c--; } } if (r[e] === s) { q(r, e, c); } else { c++; q(r, c, n); } if (c <= t) { e = c + 1; } if (t <= c) { n = c - 1; } } } function q(r, t, e) { var n = r[t]; r[t] = r[e]; r[e] = n; } function E(r, t) { var e = r.slice(); if (Array.isArray(t)) { N(e, t); var n = []; for (var a = 0; a < t.length; a++) { n[a] = b(e, t[a]); } return n; } else { var o = k(e.length, t); y(e, o, 0, e.length - 1); return b(e, t); } } function y(r, t, e, n) { if (t % 1 === 0) { x(r, t, e, n); } else { t = Math.floor(t); x(r, t, e, n); x(r, t + 1, t + 1, n); } } function N(r, t) { var e = [ 0 ]; for (var n = 0; n < t.length; n++) { e.push(k(r.length, t[n])); } e.push(r.length - 1); e.sort(I); var a = [ 0, e.length - 1 ]; while (a.length) { var o = Math.ceil(a.pop()); var i = Math.floor(a.pop()); if (o - i <= 1) { continue; } var u = Math.floor((i + o) / 2); y(r, e[u], Math.floor(e[i]), Math.ceil(e[o])); a.push(i, u, u, o); } } function I(r, t) { return r - t; } function k(r, t) { var e = r * t; if (t === 1) { return r - 1; } else if (t === 0) { return 0; } else if (e % 1 !== 0) { return Math.ceil(e) - 1; } else if (r % 2 === 0) { return e - .5; } else { return e; } } function A(r, t) { if (t < r[0]) { return 0; } if (t > r[r.length - 1]) { return 1; } var e = P(r, t); if (r[e] !== t) { return e / r.length; } e++; var n = S(r, t); if (n === e) { return e / r.length; } var a = n - e + 1; var o = a * (n + e) / 2; var i = o / a; return i / r.length; } function P(r, t) { var e = 0; var n = 0; var a = r.length; while (n < a) { e = n + a >>> 1; if (t <= r[e]) { a = e; } else { n = -~e; } } return n; } function S(r, t) { var e = 0; var n = 0; var a = r.length; while (n < a) { e = n + a >>> 1; if (t >= r[e]) { n = -~e; } else { a = e; } } return n; } function C(r, t) { var e = v(r); return A(e, t); } function _(r) { var t = E(r, .75); var e = E(r, .25); if (typeof t === "number" && typeof e === "number") { return t - e; } } function T(r) { return +E(r, .5); } function V(r) { var t = T(r); var e = []; for (var n = 0; n < r.length; n++) { e.push(Math.abs(r[n] - t)); } return T(e); } function D(r, t) { var e = []; if (t < 1) { throw new Error("chunk size must be a positive number"); } if (Math.floor(t) !== t) { throw new Error("chunk size must be an integer"); } for (var n = 0; n < r.length; n += t) { e.push(r.slice(n, n + t)); } return e; } function L(r, t, e) { if (r.length === 0) { return []; } e = e || Math.random; var n = r.length; var a = []; for (var o = 0; o < t; o++) { var i = Math.floor(e() * n); a.push(r[i]); } return a; } function R(r, t) { t = t || Math.random; var e = r.length; var n; var a; while (e > 0) { a = Math.floor(t() * e--); n = r[e]; r[e] = r[a]; r[a] = n; } return r; } function U(r, t) { var e = r.slice(); return R(e, t); } function z(r, t, e) { var n = U(r, e); return n.slice(0, t); } function F(r, t) { var e = []; for (var n = 0; n < r; n++) { var a = []; for (var o = 0; o < t; o++) { a.push(0); } e.push(a); } return e; } function O(r) { var t = 0; var e; for (var n = 0; n < r.length; n++) { if (n === 0 || r[n] !== e) { e = r[n]; t++; } } return t; } function X(r, t, e, n) { var a; if (r > 0) { var o = (e[t] - e[r - 1]) / (t - r + 1); a = n[t] - n[r - 1] - (t - r + 1) * o * o; } else { a = n[t] - e[t] * e[t] / (t + 1); } if (a < 0) { return 0; } return a; } function Y(r, t, e, n, a, o, i) { if (r > t) { return; } var u = Math.floor((r + t) / 2); n[e][u] = n[e - 1][u - 1]; a[e][u] = u; var f = e; if (r > e) { f = Math.max(f, a[e][r - 1] || 0); } f = Math.max(f, a[e - 1][u] || 0); var v = u - 1; if (t < n[0].length - 1) { v = Math.min(v, a[e][t + 1] || 0); } var h; var s; var l; var c; for (var p = v; p >= f; --p) { h = X(p, u, o, i); if (h + n[e - 1][f - 1] >= n[e][u]) { break; } s = X(f, u, o, i); l = s + n[e - 1][f - 1]; if (l < n[e][u]) { n[e][u] = l; a[e][u] = f; } f++; c = h + n[e - 1][p - 1]; if (c < n[e][u]) { n[e][u] = c; a[e][u] = p; } } Y(r, u - 1, e, n, a, o, i); Y(u + 1, t, e, n, a, o, i); } function j(r, t, e) { var n = t[0].length; var a = r[Math.floor(n / 2)]; var o = []; var i = []; for (var u = 0, f = void 0; u < n; ++u) { f = r[u] - a; if (u === 0) { o.push(f); i.push(f * f); } else { o.push(o[u - 1] + f); i.push(i[u - 1] + f * f); } t[0][u] = X(0, u, o, i); e[0][u] = 0; } var v; for (var h = 1; h < t.length; ++h) { if (h < t.length - 1) { v = h; } else { v = n - 1; } Y(v, n - 1, h, t, e, o, i); } } function K(r, t) { if (t > r.length) { throw new Error("cannot generate more classes than there are data values"); } var e = v(r); var n = O(e); if (n === 1) { return [ e ]; } var a = F(t, e.length); var o = F(t, e.length); j(e, a, o); var i = []; var u = o[0].length - 1; for (var f = o.length - 1; f >= 0; f--) { var h = o[f][u]; i[f] = e.slice(h, u + 1); if (f > 0) { u = h - 1; } } return i; } function W(r, t, e) { var n = r.length; var a = []; var o = e; a[e] = r[r.length - 1]; while (o > 0) { a[o - 1] = r[t[n][o] - 1]; n = t[n][o] - 1; o--; } return a; } function B(r, t) { var e = []; var n = []; var a; var o; var i = 0; for (a = 0; a < r.length + 1; a++) { var u = []; var f = []; for (o = 0; o < t + 1; o++) { u.push(0); f.push(0); } e.push(u); n.push(f); } for (a = 1; a < t + 1; a++) { e[1][a] = 1; n[1][a] = 0; for (o = 2; o < r.length + 1; o++) { n[o][a] = Number.POSITIVE_INFINITY; } } for (var v = 2; v < r.length + 1; v++) { var h = 0; var s = 0; var l = 0; var c = 0; for (var p = 1; p < v + 1; p++) { var g = v - p + 1; var w = r[g - 1]; l++; h += w; s += w * w; i = s - h * h / l; c = g - 1; if (c !== 0) { for (o = 2; o < t + 1; o++) { if (n[v][o] >= i + n[c][o - 1]) { e[v][o] = g; n[v][o] = i + n[c][o - 1]; } } } } e[v][1] = 1; n[v][1] = i; } return { lowerClassLimits: e, varianceCombinations: n }; } function G(r, t) { if (t > r.length) { return null; } r = r.slice().sort((function(r, t) { return r - t; })); var e = B(r, t); var n = e.lowerClassLimits; return W(r, n, t); } function H(r, t) { if (r.length < 2) { return r; } var e = l(r); var n = c(r); var a = [ e ]; var o = (n - e) / t; for (var i = 1; i < t; i++) { a.push(a[0] + o * i); } a.push(n); return a; } function J(r, t) { if (r.length !== t.length) { throw new Error("sampleCovariance requires samples with equal lengths"); } if (r.length < 2) { throw new Error("sampleCovariance requires at least two data points in each sample"); } var e = n(r); var a = n(t); var o = 0; for (var i = 0; i < r.length; i++) { o += (r[i] - e) * (t[i] - a); } var u = r.length - 1; return o / u; } function Q(r) { if (r.length < 2) { throw new Error("sampleVariance requires at least two data points"); } var t = a(r, 2); var e = r.length - 1; return t / e; } function Z(r) { var t = Q(r); return Math.sqrt(t); } function $(r, t) { var e = J(r, t); var n = Z(r); var a = Z(t); return e / n / a; } function rr(r, t) { var e = r.map((function(r, t) { return [ r, t ]; })).sort((function(r, t) { return r[0] - t[0]; })).map((function(r) { return r[1]; })); var n = t.map((function(r, t) { return [ r, t ]; })).sort((function(r, t) { return r[0] - t[0]; })).map((function(r) { return r[1]; })); var a = Array(e.length); var o = Array(e.length); for (var i = 0; i < e.length; i++) { a[e[i]] = i; o[n[i]] = i; } return $(a, o); } function tr(r) { if (r.length < 3) { throw new Error("sampleSkewness requires at least three data points"); } var t = n(r); var e; var a = 0; var o = 0; for (var i = 0; i < r.length; i++) { e = r[i] - t; a += e * e; o += e * e * e; } var u = r.length - 1; var f = Math.sqrt(a / u); var v = r.length; var h = Math.pow(f, 3); return v * o / ((v - 1) * (v - 2) * h); } function er(r) { var t = r.length; if (t < 4) { throw new Error("sampleKurtosis requires at least four data points"); } var e = n(r); var a; var o = 0; var i = 0; for (var u = 0; u < t; u++) { a = r[u] - e; o += a * a; i += a * a * a * a; } return (t - 1) / ((t - 2) * (t - 3)) * (t * (t + 1) * i / (o * o) - 3 * (t - 1)); } function nr(r) { var t = new Array(r.length); var e = [ r.slice() ]; for (var n = 0; n < r.length; n++) { t[n] = 0; } for (var a = 0; a < r.length; ) { if (t[a] < a) { var o = 0; if (a % 2 !== 0) { o = t[a]; } var i = r[o]; r[o] = r[a]; r[a] = i; e.push(r.slice()); t[a]++; a = 0; } else { t[a] = 0; a++; } } return e; } function ar(r, t) { var e; var n; var a = []; var o; var i; for (e = 0; e < r.length; e++) { if (t === 1) { a.push([ r[e] ]); } else { o = ar(r.slice(e + 1, r.length), t - 1); for (n = 0; n < o.length; n++) { i = o[n]; i.unshift(r[e]); a.push(i); } } } return a; } function or(r, t) { var e = []; for (var n = 0; n < r.length; n++) { if (t === 1) { e.push([ r[n] ]); } else { var a = or(r.slice(n, r.length), t - 1); for (var o = 0; o < a.length; o++) { e.push([ r[n] ].concat(a[o])); } } } return e; } function ir(r, t, e) { return r + (e - r) / (t + 1); } function ur(r, t, e, n) { return (r * t + e * n) / (t + n); } function fr(r, t, e, n, a, o) { var i = ur(t, e, a, o); return (e * (r + Math.pow(t - i, 2)) + o * (n + Math.pow(a - i, 2))) / (e + o); } function vr(r) { if (r.length === 0) { throw new Error("geometricMean requires at least one data point"); } var t = 1; for (var e = 0; e < r.length; e++) { if (r[e] < 0) { throw new Error("geometricMean requires only non-negative numbers as input"); } t *= r[e]; } return Math.pow(t, 1 / r.length); } function hr(r) { if (r.length === 0) { throw new Error("logAverage requires at least one data point"); } var t = 0; for (var e = 0; e < r.length; e++) { if (r[e] < 0) { throw new Error("logAverage requires only non-negative numbers as input"); } t += Math.log(r[e]); } return Math.exp(t / r.length); } function sr(r) { if (r.length === 0) { throw new Error("harmonicMean requires at least one data point"); } var t = 0; for (var e = 0; e < r.length; e++) { if (r[e] <= 0) { throw new Error("harmonicMean requires only positive numbers as input"); } t += 1 / r[e]; } return r.length / t; } function lr(r) { if (r.length === 0) { throw new Error("meanSimple requires at least one data point"); } return m(r) / r.length; } function cr(r) { return b(r, .5); } function pr(r, t, e) { return (r * t - e) / (t - 1); } function gr(r) { if (r.length === 0) { throw new Error("rootMeanSquare requires at least one data point"); } var t = 0; for (var e = 0; e < r.length; e++) { t += Math.pow(r[e], 2); } return Math.sqrt(t / r.length); } function wr(r) { return Z(r) / n(r); } function Mr(r, t) { var e = n(r); var a = i(r); var o = Math.sqrt(r.length); return (e - t) / (a / o); } function mr(r, t, e) { var a = r.length; var o = t.length; if (!a || !o) { return null; } if (!e) { e = 0; } var i = n(r); var u = n(t); var f = Q(r); var v = Q(t); if (typeof i === "number" && typeof u === "number" && typeof f === "number" && typeof v === "number") { var h = ((a - 1) * f + (o - 1) * v) / (a + o - 2); return (i - u - e) / Math.sqrt(h * (1 / a + 1 / o)); } } function dr(r, t) { if (!r.length || !t.length) { throw new Error("Neither sample can be empty"); } var e = r.map((function(r) { return { label: "x", value: r }; })).concat(t.map((function(r) { return { label: "y", value: r }; }))).sort((function(r, t) { return r.value - t.value; })); for (var n = 0; n < e.length; n++) { e[n].rank = n; } var a = [ e[0].rank ]; for (var o = 1; o < e.length; o++) { if (e[o].value === e[o - 1].value) { a.push(e[o].rank); if (o === e.length - 1) { i(e, a); } } else if (a.length > 1) { i(e, a); } else { a = [ e[o].rank ]; } } function i(r, t) { var e = (t[0] + t[t.length - 1]) / 2; for (var n = 0; n < t.length; n++) { r[t[n]].rank = e; } } var u = 0; for (var f = 0; f < e.length; f++) { var v = e[f]; if (v.label === "x") { u += v.rank + 1; } } return u; } var br = function r() { this.totalCount = 0; this.data = {}; }; br.prototype.train = function r(t, e) { if (!this.data[e]) { this.data[e] = {}; } for (var n in t) { var a = t[n]; if (this.data[e][n] === undefined) { this.data[e][n] = {}; } if (this.data[e][n][a] === undefined) { this.data[e][n][a] = 0; } this.data[e][n][a]++; } this.totalCount++; }; br.prototype.score = function r(t) { var e = {}; var n; for (var a in t) { var o = t[a]; for (n in this.data) { e[n] = {}; if (this.data[n][a]) { e[n][a + "_" + o] = (this.data[n][a][o] || 0) / this.totalCount; } else { e[n][a + "_" + o] = 0; } } } var i = {}; for (n in e) { i[n] = 0; for (var u in e[n]) { i[n] += e[n][u]; } } return i; }; var xr = function r() { this.weights = []; this.bias = 0; }; xr.prototype.predict = function r(t) { if (t.length !== this.weights.length) { return null; } var e = 0; for (var n = 0; n < this.weights.length; n++) { e += this.weights[n] * t[n]; } e += this.bias; if (e > 0) { return 1; } else { return 0; } }; xr.prototype.train = function r(t, e) { if (e !== 0 && e !== 1) { return null; } if (t.length !== this.weights.length) { this.weights = t; this.bias = 1; } var n = this.predict(t); if (typeof n === "number" && n !== e) { var a = e - n; for (var o = 0; o < this.weights.length; o++) { this.weights[o] += a * t[o]; } this.bias += a; } return this; }; var qr = 1e-4; function Er(r) { if (r < 0) { throw new Error("factorial requires a non-negative value"); } if (Math.floor(r) !== r) { throw new Error("factorial requires an integer input"); } var t = 1; for (var e = 2; e <= r; e++) { t *= e; } return t; } function yr(r) { if (Number.isInteger(r)) { if (r <= 0) { return Number.NaN; } else { return Er(r - 1); } } r--; if (r < 0) { return Math.PI / (Math.sin(Math.PI * -r) * yr(-r)); } else { var t = Math.pow(r / Math.E, r) * Math.sqrt(2 * Math.PI * (r + 1 / 6)); var e = r + 1 / 4; var n = 1 + 1 / 144 / Math.pow(e, 2) - 1 / 12960 / Math.pow(e, 3) - 257 / 207360 / Math.pow(e, 4) - 52 / 2612736 / Math.pow(e, 5) + 5741173 / 9405849600 / Math.pow(e, 6) + 37529 / 18811699200 / Math.pow(e, 7); return t * n; } } var Nr = [ .9999999999999971, 57.15623566586292, -59.59796035547549, 14.136097974741746, -.4919138160976202, 3399464998481189e-20, 4652362892704858e-20, -9837447530487956e-20, .0001580887032249125, -.00021026444172410488, .00021743961811521265, -.0001643181065367639, 8441822398385275e-20, -26190838401581408e-21, 36899182659531625e-22 ]; var Ir = 607 / 128; var kr = Math.log(Math.sqrt(2 * Math.PI)); function Ar(r) { if (r <= 0) { return Number.POSITIVE_INFINITY; } r--; var t = Nr[0]; for (var e = 1; e < 15; e++) { t += Nr[e] / (r + e); } var n = Ir + .5 + r; return kr + Math.log(t) - n + (r + .5) * Math.log(n); } function Pr(r) { if (r < 0 || r > 1) { throw new Error("bernoulliDistribution requires probability to be between 0 and 1 inclusive"); } return [ 1 - r, r ]; } function Sr(r, t) { if (t < 0 || t > 1 || r <= 0 || r % 1 !== 0) { return undefined; } var e = 0; var n = 0; var a = []; var o = 1; do { a[e] = o * Math.pow(t, e) * Math.pow(1 - t, r - e); n += a[e]; e++; o = o * (r - e + 1) / e; } while (n < 1 - qr); return a; } function Cr(r) { if (r <= 0) { return undefined; } var t = 0; var e = 0; var n = []; var a = 1; do { n[t] = Math.exp(-r) * Math.pow(r, t) / a; e += n[t]; t++; a *= t; } while (e < 1 - qr); return n; } var _r = { 1: { .995: 0, .99: 0, .975: 0, .95: 0, .9: .02, .5: .45, .1: 2.71, .05: 3.84, .025: 5.02, .01: 6.63, .005: 7.88 }, 2: { .995: .01, .99: .02, .975: .05, .95: .1, .9: .21, .5: 1.39, .1: 4.61, .05: 5.99, .025: 7.38, .01: 9.21, .005: 10.6 }, 3: { .995: .07, .99: .11, .975: .22, .95: .35, .9: .58, .5: 2.37, .1: 6.25, .05: 7.81, .025: 9.35, .01: 11.34, .005: 12.84 }, 4: { .995: .21, .99: .3, .975: .48, .95: .71, .9: 1.06, .5: 3.36, .1: 7.78, .05: 9.49, .025: 11.14, .01: 13.28, .005: 14.86 }, 5: { .995: .41, .99: .55, .975: .83, .95: 1.15, .9: 1.61, .5: 4.35, .1: 9.24, .05: 11.07, .025: 12.83, .01: 15.09, .005: 16.75 }, 6: { .995: .68, .99: .87, .975: 1.24, .95: 1.64, .9: 2.2, .5: 5.35, .1: 10.65, .05: 12.59, .025: 14.45, .01: 16.81, .005: 18.55 }, 7: { .995: .99, .99: 1.25, .975: 1.69, .95: 2.17, .9: 2.83, .5: 6.35, .1: 12.02, .05: 14.07, .025: 16.01, .01: 18.48, .005: 20.28 }, 8: { .995: 1.34, .99: 1.65, .975: 2.18, .95: 2.73, .9: 3.49, .5: 7.34, .1: 13.36, .05: 15.51, .025: 17.53, .01: 20.09, .005: 21.96 }, 9: { .995: 1.73, .99: 2.09, .975: 2.7, .95: 3.33, .9: 4.17, .5: 8.34, .1: 14.68, .05: 16.92, .025: 19.02, .01: 21.67, .005: 23.59 }, 10: { .995: 2.16, .99: 2.56, .975: 3.25, .95: 3.94, .9: 4.87, .5: 9.34, .1: 15.99, .05: 18.31, .025: 20.48, .01: 23.21, .005: 25.19 }, 11: { .995: 2.6, .99: 3.05, .975: 3.82, .95: 4.57, .9: 5.58, .5: 10.34, .1: 17.28, .05: 19.68, .025: 21.92, .01: 24.72, .005: 26.76 }, 12: { .995: 3.07, .99: 3.57, .975: 4.4, .95: 5.23, .9: 6.3, .5: 11.34, .1: 18.55, .05: 21.03, .025: 23.34, .01: 26.22, .005: 28.3 }, 13: { .995: 3.57, .99: 4.11, .975: 5.01, .95: 5.89, .9: 7.04, .5: 12.34, .1: 19.81, .05: 22.36, .025: 24.74, .01: 27.69, .005: 29.82 }, 14: { .995: 4.07, .99: 4.66, .975: 5.63, .95: 6.57, .9: 7.79, .5: 13.34, .1: 21.06, .05: 23.68, .025: 26.12, .01: 29.14, .005: 31.32 }, 15: { .995: 4.6, .99: 5.23, .975: 6.27, .95: 7.26, .9: 8.55, .5: 14.34, .1: 22.31, .05: 25, .025: 27.49, .01: 30.58, .005: 32.8 }, 16: { .995: 5.14, .99: 5.81, .975: 6.91, .95: 7.96, .9: 9.31, .5: 15.34, .1: 23.54, .05: 26.3, .025: 28.85, .01: 32, .005: 34.27 }, 17: { .995: 5.7, .99: 6.41, .975: 7.56, .95: 8.67, .9: 10.09, .5: 16.34, .1: 24.77, .05: 27.59, .025: 30.19, .01: 33.41, .005: 35.72 }, 18: { .995: 6.26, .99: 7.01, .975: 8.23, .95: 9.39, .9: 10.87, .5: 17.34, .1: 25.99, .05: 28.87, .025: 31.53, .01: 34.81, .005: 37.16 }, 19: { .995: 6.84, .99: 7.63, .975: 8.91, .95: 10.12, .9: 11.65, .5: 18.34, .1: 27.2, .05: 30.14, .025: 32.85, .01: 36.19, .005: 38.58 }, 20: { .995: 7.43, .99: 8.26, .975: 9.59, .95: 10.85, .9: 12.44, .5: 19.34, .1: 28.41, .05: 31.41, .025: 34.17, .01: 37.57, .005: 40 }, 21: { .995: 8.03, .99: 8.9, .975: 10.28, .95: 11.59, .9: 13.24, .5: 20.34, .1: 29.62, .05: 32.67, .025: 35.48, .01: 38.93, .005: 41.4 }, 22: { .995: 8.64, .99: 9.54, .975: 10.98, .95: 12.34, .9: 14.04, .5: 21.34, .1: 30.81, .05: 33.92, .025: 36.78, .01: 40.29, .005: 42.8 }, 23: { .995: 9.26, .99: 10.2, .975: 11.69, .95: 13.09, .9: 14.85, .5: 22.34, .1: 32.01, .05: 35.17, .025: 38.08, .01: 41.64, .005: 44.18 }, 24: { .995: 9.89, .99: 10.86, .975: 12.4, .95: 13.85, .9: 15.66, .5: 23.34, .1: 33.2, .05: 36.42, .025: 39.36, .01: 42.98, .005: 45.56 }, 25: { .995: 10.52, .99: 11.52, .975: 13.12, .95: 14.61, .9: 16.47, .5: 24.34, .1: 34.28, .05: 37.65, .025: 40.65, .01: 44.31, .005: 46.93 }, 26: { .995: 11.16, .99: 12.2, .975: 13.84, .95: 15.38, .9: 17.29, .5: 25.34, .1: 35.56, .05: 38.89, .025: 41.92, .01: 45.64, .005: 48.29 }, 27: { .995: 11.81, .99: 12.88, .975: 14.57, .95: 16.15, .9: 18.11, .5: 26.34, .1: 36.74, .05: 40.11, .025: 43.19, .01: 46.96, .005: 49.65 }, 28: { .995: 12.46, .99: 13.57, .975: 15.31, .95: 16.93, .9: 18.94, .5: 27.34, .1: 37.92, .05: 41.34, .025: 44.46, .01: 48.28, .005: 50.99 }, 29: { .995: 13.12, .99: 14.26, .975: 16.05, .95: 17.71, .9: 19.77, .5: 28.34, .1: 39.09, .05: 42.56, .025: 45.72, .01: 49.59, .005: 52.34 }, 30: { .995: 13.79, .99: 14.95, .975: 16.79, .95: 18.49, .9: 20.6, .5: 29.34, .1: 40.26, .05: 43.77, .025: 46.98, .01: 50.89, .005: 53.67 }, 40: { .995: 20.71, .99: 22.16, .975: 24.43, .95: 26.51, .9: 29.05, .5: 39.34, .1: 51.81, .05: 55.76, .025: 59.34, .01: 63.69, .005: 66.77 }, 50: { .995: 27.99, .99: 29.71, .975: 32.36, .95: 34.76, .9: 37.69, .5: 49.33, .1: 63.17, .05: 67.5, .025: 71.42, .01: 76.15, .005: 79.49 }, 60: { .995: 35.53, .99: 37.48, .975: 40.48, .95: 43.19, .9: 46.46, .5: 59.33, .1: 74.4, .05: 79.08, .025: 83.3, .01: 88.38, .005: 91.95 }, 70: { .995: 43.28, .99: 45.44, .975: 48.76, .95: 51.74, .9: 55.33, .5: 69.33, .1: 85.53, .05: 90.53, .025: 95.02, .01: 100.42, .005: 104.22 }, 80: { .995: 51.17, .99: 53.54, .975: 57.15, .95: 60.39, .9: 64.28, .5: 79.33, .1: 96.58, .05: 101.88, .025: 106.63, .01: 112.33, .005: 116.32 }, 90: { .995: 59.2, .99: 61.75, .975: 65.65, .95: 69.13, .9: 73.29, .5: 89.33, .1: 107.57, .05: 113.14, .025: 118.14, .01: 124.12, .005: 128.3 }, 100: { .995: 67.33, .99: 70.06, .975: 74.22, .95: 77.93, .9: 82.36, .5: 99.33, .1: 118.5, .05: 124.34, .025: 129.56, .01: 135.81, .005: 140.17 } }; function Tr(r, t, e) { var a = n(r); var o = 0; var i = 1; var u = t(a); var f = []; var v = []; for (var h = 0; h < r.length; h++) { if (f[r[h]] === undefined) { f[r[h]] = 0; } f[r[h]]++; } for (var s = 0; s < f.length; s++) { if (f[s] === undefined) { f[s] = 0; } } for (var l in u) { if (l in f) { v[+l] = u[l] * r.length; } } for (var c = v.length - 1; c >= 0; c--) { if (v[c] < 3) { v[c - 1] += v[c]; v.pop(); f[c - 1] += f[c]; f.pop(); } } for (var p = 0; p < f.length; p++) { o += Math.pow(f[p] - v[p], 2) / v[p]; } var g = f.length - i - 1; return _r[g][e] < o; } var Vr = Math.sqrt(2 * Math.PI); var Dr = { gaussian: function(r) { return Math.exp(-.5 * r * r) / Vr; } }; var Lr = { nrd: function(r) { var t = Z(r); var e = _(r); if (typeof e === "number") { t = Math.min(t, e / 1.34); } return 1.06 * t * Math.pow(r.length, -.2); } }; function Rr(r, t, e) { var n; if (t === undefined) { n = Dr.gaussian; } else if (typeof t === "string") { if (!Dr[t]) { throw new Error('Unknown kernel "' + t + '"'); } n = Dr[t]; } else { n = t; } var a; if (typeof e === "undefined") { a = Lr.nrd(r); } else if (typeof e === "string") { if (!Lr[e]) { throw new Error('Unknown bandwidth method "' + e + '"'); } a = Lr[e](r); } else { a = e; } return function(t) { var e = 0; var o = 0; for (e = 0; e < r.length; e++) { o += n((t - r[e]) / a); } return o / a / r.length; }; } function Ur(r, t, e) { return (r - t) / e; } var zr = Math.sqrt(2 * Math.PI); function Fr(r) { var t = r; var e = r; for (var n = 1; n < 15; n++) { e *= r * r / (2 * n + 1); t += e; } return Math.round((.5 + t / zr * Math.exp(-r * r / 2)) * 1e4) / 1e4; } var Or = []; for (var Xr = 0; Xr <= 3.09; Xr += .01) { Or.push(Fr(Xr)); } function Yr(r) { var t = Math.abs(r); var e = Math.min(Math.round(t * 100), Or.length - 1); if (r >= 0) { return Or[e]; } else { return Math.round((1 - Or[e]) * 1e4) / 1e4; } } function jr(r) { return 1 / (Math.exp(-r) + 1); } function Kr(r) { var t = 1 / (1 + .5 * Math.abs(r)); var e = t * Math.exp(-r * r + ((((((((.17087277 * t - .82215223) * t + 1.48851587) * t - 1.13520398) * t + .27886807) * t - .18628806) * t + .09678418) * t + .37409196) * t + 1.00002368) * t - 1.26551223); if (r >= 0) { return 1 - e; } else { return e - 1; } } function Wr(r) { var t = 8 * (Math.PI - 3) / (3 * Math.PI * (4 - Math.PI)); var e = Math.sqrt(Math.sqrt(Math.pow(2 / (Math.PI * t) + Math.log(1 - r * r) / 2, 2) - Math.log(1 - r * r) / t) - (2 / (Math.PI * t) + Math.log(1 - r * r) / 2)); if (r >= 0) { return e; } else { return -e; } } function Br(r) { if (r === 0) { r = qr; } else if (r >= 1) { r = 1 - qr; } return Math.sqrt(2) * Wr(2 * r - 1); } function Gr(r) { if (r <= 0 || r >= 1) { throw new Error("p must be strictly between zero and one"); } return Math.log(r / (1 - r)); } function Hr(r, t, e, a, o) { if (a === undefined) { a = 1e4; } if (e === undefined) { e = "two_side"; } if (e !== "two_side" && e !== "greater" && e !== "less") { throw new Error("`alternative` must be either 'two_side', 'greater', or 'less'."); } var i = n(r); var u = n(t); var f = i - u; var v = new Array(a); var h = r.concat(t); var s = Math.floor(h.length / 2); for (var l = 0; l < a; l++) { R(h, o); var c = h.slice(0, s); var p = h.slice(s, h.length); var g = n(c) - n(p); v[l] = g; } var w = 0; if (e === "two_side") { for (var M = 0; M <= a; M++) { if (Math.abs(v[M]) >= Math.abs(f)) { w += 1; } } } else if (e === "greater") { for (var m = 0; m <= a; m++) { if (v[m] >= f) { w += 1; } } } else { for (var d = 0; d <= a; d++) { if (v[d] <= f) { w += 1; } } } return w / a; } function Jr(r) { if (typeof r === "number") { if (r < 0) { return -1; } else if (r === 0) { return 0; } else { return 1; } } else { throw new TypeError("not a number"); } } function Qr(r, t, e, n, a) { if (typeof r !== "function") { throw new TypeError("func must be a function"); } for (var o = 0; o < n; o++) { var i = (t + e) / 2; if (r(i) === 0 || Math.abs((e - t) / 2) < a) { return i; } if (Jr(r(i)) === Jr(r(t))) { t = i; } else { e = i; } } throw new Error("maximum number of iterations exceeded"); } function Zr(r, t) { var e = 0; for (var n = 0; n < r.length; n++) { var a = r[n] - t[n]; e += a * a; } return Math.sqrt(e); } function $r(r, t, e) { if (e === void 0) e = Math.random; var n = null; var a = z(r, t, e); var o = null; var i = Number.MAX_VALUE; while (i !== 0) { o = rt(r, a); n = a; a = tt(r, o, t); i = et(a, n); } return { labels: o, centroids: a }; } function rt(r, t) { return r.map((function(r) { var e = Number.MAX_VALUE; var n = -1; for (var a = 0; a < t.length; a++) { var o = Zr(r, t[a]); if (o < e) { e = o; n = a; } } return n; })); } function tt(r, t, e) { var n = r[0].length; var a = F(e, n); var o = Array(e).fill(0); var i = r.length; for (var u = 0; u < i; u++) { var f = r[u]; var v = t[u]; var h = a[v]; for (var s = 0; s < n; s++) { h[s] += f[s]; } o[v] += 1; } for (var l = 0; l < e; l++) { if (o[l] === 0) { throw new Error("Centroid " + l + " has no friends"); } var c = a[l]; for (var p = 0; p < n; p++) { c[p] /= o[l]; } } return a; } function et(r, t) { var e = 0; for (var n = 0; n < r.length; n++) { e += Zr(r[n], t[n]); } return e; } function nt(r, t) { if (r.length !== t.length) { throw new Error("must have exactly as many labels as points"); } var e = at(t); var n = ot(r); var a = []; for (var o = 0; o < r.length; o++) { var i = 0; if (e[t[o]].length > 1) { var u = ut(o, e[t[o]], n); var f = it(o, t, e, n); i = (f - u) / Math.max(u, f); } a.push(i); } return a; } function at(r) { var t = 1 + c(r); var e = Array(t); for (var n = 0; n < r.length; n++) { var a = r[n]; if (e[a] === undefined) { e[a] = []; } e[a].push(n); } return e; } function ot(r) { var t = r.length; var e = F(t, t); for (var n = 0; n < t; n++) { for (var a = 0; a < n; a++) { e[n][a] = Zr(r[n], r[a]); e[a][n] = e[n][a]; } } return e; } function it(r, t, e, n) { var a = t[r]; var o = Number.MAX_VALUE; for (var i = 0; i < e.length; i++) { if (i !== a) { var u = ut(r, e[i], n); if (u < o) { o = u; } } } return o; } function ut(r, t, e) { var n = 0; for (var a = 0; a < t.length; a++) { n += e[r][t[a]]; } return n / t.length; } function ft(r, t) { var e = nt(r, t); return c(e); } function vt(r, t) { if (r === 0 && t === 0) { return 0; } return Math.abs((r - t) / t); } function ht(r, t, e) { if (e === void 0) e = qr; return vt(r, t) <= e; } exports.addToMean = ir; exports.approxEqual = ht; exports.bernoulliDistribution = Pr; exports.binomialDistribution = Sr; exports.bisect = Qr; exports.chunk = D; exports.coefficientOfVariation = wr; exports.combinations = ar; exports.combinationsReplacement = or; exports.combineMeans = ur; exports.combineVariances = fr; exports.cumulativeStdLogisticProbability = jr; exports.epsilon = qr; exports.extent = p; exports.factorial = Er; exports.gamma = yr; exports.gammaln = Ar; exports.geometricMean = vr; exports.harmonicMean = sr; exports.interquartileRange = _; exports.jenks = G; exports.linearRegression = r; exports.linearRegressionLine = t; exports.logAverage = hr; exports.logit = Gr; exports.max = c; exports.mean = n; exports.median = T; exports.medianAbsoluteDeviation = V; exports.min = l; exports.mode = h; exports.poissonDistribution = Cr; exports.probit = Br; exports.product = d; exports.quantile = E; exports.quantileRank = C; exports.quickselect = x; exports.rSquared = u; exports.rootMeanSquare = gr; exports.sample = z; exports.sampleCorrelation = $; exports.sampleCovariance = J; exports.sampleSkewness = tr; exports.sampleStandardDeviation = Z; exports.sampleVariance = Q; exports.sampleWithReplacement = L; exports.shuffle = U; exports.standardDeviation = i; exports.subtractFromMean = pr; exports.sum = e; exports.sumNthPowerDeviations = a; exports.tTest = Mr; exports.tTestTwoSample = mr; exports.variance = o; exports.zScore = Ur;