Socket
Socket
Sign inDemoInstall

vega-statistics

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vega-statistics - npm Package Compare versions

Comparing version 1.7.6 to 1.7.7

393

build/vega-statistics.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) :
(global = global || self, factory(global.vega = {}, global.d3));
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.vega = {}, global.d3));
}(this, (function (exports, d3Array) { 'use strict';

@@ -26,3 +26,3 @@

function quantiles(array, p, f) {
var values = Float64Array.from(numbers(array, f));
const values = Float64Array.from(numbers(array, f));

@@ -43,3 +43,3 @@ // don't depend on return value from typed array sort call

function estimateBandwidth(array, f) {
var n = array.length,
let n = array.length,
v = d3Array.deviation(array, f),

@@ -56,3 +56,3 @@ q = quartiles(array, f),

// determine range
var maxb = _.maxbins || 20,
let maxb = _.maxbins || 20,
base = _.base || 10,

@@ -119,3 +119,3 @@ logb = Math.log(base),

var values = Float64Array.from(numbers(array, f)),
let values = Float64Array.from(numbers(array, f)),
n = values.length,

@@ -219,42 +219,38 @@ m = samples,

var dist = {},
a, b, d;
let a, b, d;
dist.min = function(_) {
if (arguments.length) {
a = _ || 0;
d = b - a;
return dist;
} else {
return a;
const dist = {
min(_) {
if (arguments.length) {
a = _ || 0;
d = b - a;
return dist;
} else {
return a;
}
},
max(_) {
if (arguments.length) {
b = _ || 0;
d = b - a;
return dist;
} else {
return b;
}
},
sample() {
return a + Math.floor(d * exports.random());
},
pdf(x) {
return (x === Math.floor(x) && x >= a && x < b) ? 1 / d : 0;
},
cdf(x) {
const v = Math.floor(x);
return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;
},
icdf(p) {
return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p * d) : NaN;
}
};
dist.max = function(_) {
if (arguments.length) {
b = _ || 0;
d = b - a;
return dist;
} else {
return b;
}
};
dist.sample = function() {
return a + Math.floor(d * exports.random());
};
dist.pdf = function(x) {
return (x === Math.floor(x) && x >= a && x < b) ? 1 / d : 0;
};
dist.cdf = function(x) {
var v = Math.floor(x);
return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;
};
dist.icdf = function(p) {
return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p * d) : NaN;
};
return dist.min(min).max(max);

@@ -426,75 +422,77 @@ }

function gaussian(mean, stdev) {
var mu,
sigma,
dist = {
mean: function(_) {
if (arguments.length) {
mu = _ || 0;
return dist;
} else {
return mu;
}
},
stdev: function(_) {
if (arguments.length) {
sigma = _ == null ? 1 : _;
return dist;
} else {
return sigma;
}
},
sample: () => sampleNormal(mu, sigma),
pdf: value => densityNormal(value, mu, sigma),
cdf: value => cumulativeNormal(value, mu, sigma),
icdf: p => quantileNormal(p, mu, sigma)
};
let mu, sigma;
const dist = {
mean(_) {
if (arguments.length) {
mu = _ || 0;
return dist;
} else {
return mu;
}
},
stdev(_) {
if (arguments.length) {
sigma = _ == null ? 1 : _;
return dist;
} else {
return sigma;
}
},
sample: () => sampleNormal(mu, sigma),
pdf: value => densityNormal(value, mu, sigma),
cdf: value => cumulativeNormal(value, mu, sigma),
icdf: p => quantileNormal(p, mu, sigma)
};
return dist.mean(mean).stdev(stdev);
}
// TODO: support for additional kernels?
function kde(support, bandwidth) {
var kernel = gaussian(),
dist = {},
n = 0;
const kernel = gaussian();
let n = 0;
dist.data = function(_) {
if (arguments.length) {
support = _;
n = _ ? _.length : 0;
return dist.bandwidth(bandwidth);
} else {
return support;
}
};
const dist = {
data(_) {
if (arguments.length) {
support = _;
n = _ ? _.length : 0;
return dist.bandwidth(bandwidth);
} else {
return support;
}
},
dist.bandwidth = function(_) {
if (!arguments.length) return bandwidth;
bandwidth = _;
if (!bandwidth && support) bandwidth = estimateBandwidth(support);
return dist;
};
bandwidth(_) {
if (!arguments.length) return bandwidth;
bandwidth = _;
if (!bandwidth && support) bandwidth = estimateBandwidth(support);
return dist;
},
dist.sample = function() {
return support[~~(exports.random() * n)] + bandwidth * kernel.sample();
};
sample() {
return support[~~(exports.random() * n)] + bandwidth * kernel.sample();
},
dist.pdf = function(x) {
for (var y=0, i=0; i<n; ++i) {
y += kernel.pdf((x - support[i]) / bandwidth);
}
return y / bandwidth / n;
};
pdf(x) {
let y = 0, i = 0;
for (; i<n; ++i) {
y += kernel.pdf((x - support[i]) / bandwidth);
}
return y / bandwidth / n;
},
dist.cdf = function(x) {
for (var y=0, i=0; i<n; ++i) {
y += kernel.cdf((x - support[i]) / bandwidth);
cdf(x) {
let y = 0, i = 0;
for (; i<n; ++i) {
y += kernel.cdf((x - support[i]) / bandwidth);
}
return y / n;
},
icdf() {
throw Error('KDE icdf not supported.');
}
return y / n;
};
dist.icdf = function() {
throw Error('KDE icdf not supported.');
};
return dist.data(support);

@@ -526,27 +524,27 @@ }

function lognormal(mean, stdev) {
var mu,
sigma,
dist = {
mean: function(_) {
if (arguments.length) {
mu = _ || 0;
return dist;
} else {
return mu;
}
},
stdev: function(_) {
if (arguments.length) {
sigma = _ == null ? 1 : _;
return dist;
} else {
return sigma;
}
},
sample: () => sampleLogNormal(mu, sigma),
pdf: value => densityLogNormal(value, mu, sigma),
cdf: value => cumulativeLogNormal(value, mu, sigma),
icdf: p => quantileLogNormal(p, mu, sigma)
};
let mu, sigma;
const dist = {
mean(_) {
if (arguments.length) {
mu = _ || 0;
return dist;
} else {
return mu;
}
},
stdev(_) {
if (arguments.length) {
sigma = _ == null ? 1 : _;
return dist;
} else {
return sigma;
}
},
sample: () => sampleLogNormal(mu, sigma),
pdf: value => densityLogNormal(value, mu, sigma),
cdf: value => cumulativeLogNormal(value, mu, sigma),
icdf: p => quantileLogNormal(p, mu, sigma)
};
return dist.mean(mean).stdev(stdev);

@@ -556,6 +554,6 @@ }

function mixture(dists, weights) {
var dist = {}, m = 0, w;
let m = 0, w;
function normalize(x) {
var w = [], sum = 0, i;
let w = [], sum = 0, i;
for (i=0; i<m; ++i) { sum += (w[i] = (x[i]==null ? 1 : +x[i])); }

@@ -566,56 +564,60 @@ for (i=0; i<m; ++i) { w[i] /= sum; }

dist.weights = function(_) {
if (arguments.length) {
w = normalize(weights = (_ || []));
return dist;
}
return weights;
};
const dist = {
weights(_) {
if (arguments.length) {
w = normalize(weights = (_ || []));
return dist;
}
return weights;
},
dist.distributions = function(_) {
if (arguments.length) {
if (_) {
m = _.length;
dists = _;
} else {
m = 0;
dists = [];
distributions(_) {
if (arguments.length) {
if (_) {
m = _.length;
dists = _;
} else {
m = 0;
dists = [];
}
return dist.weights(weights);
}
return dist.weights(weights);
}
return dists;
};
return dists;
},
dist.sample = function() {
var r = exports.random(),
d = dists[m-1],
v = w[0],
i = 0;
sample() {
let r = exports.random(),
d = dists[m-1],
v = w[0],
i = 0;
// first select distribution
for (; i<m-1; v += w[++i]) {
if (r < v) { d = dists[i]; break; }
}
// then sample from it
return d.sample();
};
// first select distribution
for (; i<m-1; v += w[++i]) {
if (r < v) { d = dists[i]; break; }
}
// then sample from it
return d.sample();
},
dist.pdf = function(x) {
for (var p=0, i=0; i<m; ++i) {
p += w[i] * dists[i].pdf(x);
}
return p;
};
pdf(x) {
let p = 0, i = 0;
for (; i<m; ++i) {
p += w[i] * dists[i].pdf(x);
}
return p;
},
dist.cdf = function(x) {
for (var p=0, i=0; i<m; ++i) {
p += w[i] * dists[i].cdf(x);
cdf(x) {
let p = 0, i = 0;
for (; i<m; ++i) {
p += w[i] * dists[i].cdf(x);
}
return p;
},
icdf() {
throw Error('Mixture icdf not supported.');
}
return p;
};
dist.icdf = function() {
throw Error('Mixture icdf not supported.');
};
return dist.distributions(dists).weights(weights);

@@ -657,26 +659,27 @@ }

function uniform(min, max) {
var a, b,
dist = {
min: function(_) {
if (arguments.length) {
a = _ || 0;
return dist;
} else {
return a;
}
},
max: function(_) {
if (arguments.length) {
b = _ == null ? 1 : _;
return dist;
} else {
return b;
}
},
sample: () => sampleUniform(a, b),
pdf: value => densityUniform(value, a, b),
cdf: value => cumulativeUniform(value, a, b),
icdf: p => quantileUniform(p, a, b)
};
let a, b;
const dist = {
min(_) {
if (arguments.length) {
a = _ || 0;
return dist;
} else {
return a;
}
},
max(_) {
if (arguments.length) {
b = _ == null ? 1 : _;
return dist;
} else {
return b;
}
},
sample: () => sampleUniform(a, b),
pdf: value => densityUniform(value, a, b),
cdf: value => cumulativeUniform(value, a, b),
icdf: p => quantileUniform(p, a, b)
};
if (max == null) {

@@ -683,0 +686,0 @@ max = (min == null ? 1 : min);

@@ -1,1 +0,1 @@

!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("d3-array")):"function"==typeof define&&define.amd?define(["exports","d3-array"],n):n((t=t||self).vega={},t.d3)}(this,(function(t,n){"use strict";function*r(t,n){if(null==n)for(let n of t)null!=n&&""!==n&&(n=+n)>=n&&(yield n);else{let r=-1;for(let e of t)e=n(e,++r,t),null!=e&&""!==e&&(e=+e)>=e&&(yield e)}}function e(t,e,o){var u=Float64Array.from(r(t,o));return u.sort(n.ascending),e.map(t=>n.quantileSorted(u,t))}function o(t,n){return e(t,[.25,.5,.75],n)}function u(t,r){var e=t.length,u=n.deviation(t,r),a=o(t,r),f=(a[2]-a[0])/1.34;return 1.06*(u=Math.min(u,f)||u||Math.abs(a[0])||1)*Math.pow(e,-.2)}t.random=Math.random;const a=Math.sqrt(2*Math.PI),f=Math.SQRT2;let l=NaN;function i(n,r){n=n||0,r=null==r?1:r;let e,o,u=0,a=0;if(l==l)u=l,l=NaN;else{do{u=2*t.random()-1,a=2*t.random()-1,e=u*u+a*a}while(0===e||e>1);o=Math.sqrt(-2*Math.log(e)/e),u*=o,l=a*o}return n+u*r}function c(t,n,r){const e=(t-(n||0))/(r=null==r?1:r);return Math.exp(-.5*e*e)/(r*a)}function s(t,n,r){let e,o=(t-(n=n||0))/(r=null==r?1:r),u=Math.abs(o);if(u>37)e=0;else{let t,n=Math.exp(-u*u/2);u<7.07106781186547?(t=.0352624965998911*u+.700383064443688,t=t*u+6.37396220353165,t=t*u+33.912866078383,t=t*u+112.079291497871,t=t*u+221.213596169931,t=t*u+220.206867912376,e=n*t,t=.0883883476483184*u+1.75566716318264,t=t*u+16.064177579207,t=t*u+86.7807322029461,t=t*u+296.564248779674,t=t*u+637.333633378831,t=t*u+793.826512519948,t=t*u+440.413735824752,e/=t):(t=u+.65,t=u+4/t,t=u+3/t,t=u+2/t,t=u+1/t,e=n/t/2.506628274631)}return o>0?1-e:e}function h(t,n,r){return t<0||t>1?NaN:(n||0)+(null==r?1:r)*f*function(t){let n,r=-Math.log((1-t)*(1+t));r<6.25?(r-=3.125,n=-364441206401782e-35,n=n*r-16850591381820166e-35,n=128584807152564e-32+n*r,n=11157877678025181e-33+n*r,n=n*r-1333171662854621e-31,n=20972767875968562e-33+n*r,n=6637638134358324e-30+n*r,n=n*r-4054566272975207e-29,n=n*r-8151934197605472e-29,n=26335093153082323e-28+n*r,n=n*r-12975133253453532e-27,n=n*r-5415412054294628e-26,n=1.0512122733215323e-9+n*r,n=n*r-4.112633980346984e-9,n=n*r-2.9070369957882005e-8,n=4.2347877827932404e-7+n*r,n=n*r-13654692000834679e-22,n=n*r-13882523362786469e-21,n=.00018673420803405714+n*r,n=n*r-.000740702534166267,n=n*r-.006033670871430149,n=.24015818242558962+n*r,n=1.6536545626831027+n*r):r<16?(r=Math.sqrt(r)-3.25,n=2.2137376921775787e-9,n=9.075656193888539e-8+n*r,n=n*r-2.7517406297064545e-7,n=1.8239629214389228e-8+n*r,n=15027403968909828e-22+n*r,n=n*r-4013867526981546e-21,n=29234449089955446e-22+n*r,n=12475304481671779e-21+n*r,n=n*r-47318229009055734e-21,n=6828485145957318e-20+n*r,n=24031110387097894e-21+n*r,n=n*r-.0003550375203628475,n=.0009532893797373805+n*r,n=n*r-.0016882755560235047,n=.002491442096107851+n*r,n=n*r-.003751208507569241,n=.005370914553590064+n*r,n=1.0052589676941592+n*r,n=3.0838856104922208+n*r):Number.isFinite(r)?(r=Math.sqrt(r)-5,n=-27109920616438573e-27,n=n*r-2.555641816996525e-10,n=1.5076572693500548e-9+n*r,n=n*r-3.789465440126737e-9,n=7.61570120807834e-9+n*r,n=n*r-1.496002662714924e-8,n=2.914795345090108e-8+n*r,n=n*r-6.771199775845234e-8,n=2.2900482228026655e-7+n*r,n=n*r-9.9298272942317e-7,n=4526062597223154e-21+n*r,n=n*r-1968177810553167e-20,n=7599527703001776e-20+n*r,n=n*r-.00021503011930044477,n=n*r-.00013871931833623122,n=1.0103004648645344+n*r,n=4.849906401408584+n*r):n=1/0;return n*t}(2*t-1)}function d(t,n){var r,e,o={mean:function(t){return arguments.length?(r=t||0,o):r},stdev:function(t){return arguments.length?(e=null==t?1:t,o):e},sample:()=>i(r,e),pdf:t=>c(t,r,e),cdf:t=>s(t,r,e),icdf:t=>h(t,r,e)};return o.mean(t).stdev(n)}function p(t,n){return t=t||0,n=null==n?1:n,Math.exp(t+i()*n)}function m(t,n,r){if(t<=0)return 0;n=n||0,r=null==r?1:r;const e=(Math.log(t)-n)/r;return Math.exp(-.5*e*e)/(r*a*t)}function M(t,n,r){return s(Math.log(t),n,r)}function g(t,n,r){return Math.exp(h(t,n,r))}function v(n,r){return null==r&&(r=null==n?1:n,n=0),n+(r-n)*t.random()}function b(t,n,r){return null==r&&(r=null==n?1:n,n=0),t>=n&&t<=r?1/(r-n):0}function w(t,n,r){return null==r&&(r=null==n?1:n,n=0),t<n?0:t>r?1:(t-n)/(r-n)}function x(t,n,r){return null==r&&(r=null==n?1:n,n=0),t>=0&&t<=1?n+t*(r-n):NaN}function y(t,n,r,e){const o=e-t*t,u=Math.abs(o)<1e-24?0:(r-t*n)/o;return[n-u*t,u]}function N(t,n,r,e){t=t.filter(t=>{let e=n(t),o=r(t);return null!=e&&(e=+e)>=e&&null!=o&&(o=+o)>=o}),e&&t.sort((t,r)=>n(t)-n(r));const o=t.length,u=new Float64Array(o),a=new Float64Array(o);let f,l,i,c=0,s=0,h=0;for(i of t)u[c]=f=+n(i),a[c]=l=+r(i),++c,s+=(f-s)/c,h+=(l-h)/c;for(c=0;c<o;++c)u[c]-=s,a[c]-=h;return[u,a,s,h]}function q(t,n,r,e){let o,u,a=-1;for(let f of t)o=n(f),u=r(f),null!=o&&(o=+o)>=o&&null!=u&&(u=+u)>=u&&e(o,u,++a)}function A(t,n,r,e,o){let u=0,a=0;return q(t,n,r,(t,n)=>{const r=n-o(t),f=n-e;u+=r*r,a+=f*f}),1-u/a}function F(t,n,r){let e=0,o=0,u=0,a=0,f=0;q(t,n,r,(t,n)=>{++f,e+=(t-e)/f,o+=(n-o)/f,u+=(t*n-u)/f,a+=(t*t-a)/f});const l=y(e,o,u,a),i=t=>l[0]+l[1]*t;return{coef:l,predict:i,rSquared:A(t,n,r,o,i)}}function L(t,n,r){const[e,o,u,a]=N(t,n,r),f=e.length;let l,i,c,s,h=0,d=0,p=0,m=0,M=0;for(l=0;l<f;)i=e[l],c=o[l++],s=i*i,h+=(s-h)/l,d+=(s*i-d)/l,p+=(s*s-p)/l,m+=(i*c-m)/l,M+=(s*c-M)/l;const g=p-h*h,v=h*g-d*d,b=(M*h-m*d)/v,w=(m*g-M*d)/v,x=-b*h,y=t=>b*(t-=u)*t+w*t+x+a;return{coef:[x-w*u+b*u*u+a,w-2*b*u,b],predict:y,rSquared:A(t,n,r,a,y)}}function S(t,n,r,e){const o=Array(t);let u,a,f,l;for(u=0;u<t;++u)o[u]=0;for(u=t-1;u>=0;--u)for(f=n[u],l=1,o[u]+=f,a=1;a<=u;++a)l*=(u+1-a)/a,o[u-a]+=f*Math.pow(r,a)*l;return o[0]+=e,o}function E(t){return(t=1-t*t*t)*t*t}function P(t,n,r){let e=t[n],o=r[0],u=r[1]+1;if(!(u>=t.length))for(;n>o&&t[u]-e<=e-t[o];)r[0]=++o,r[1]=u,++u}const U=.1*Math.PI/180;function I(t,n,r){const e=Math.atan2(r[1]-t[1],r[0]-t[0]),o=Math.atan2(n[1]-t[1],n[0]-t[0]);return Math.abs(e-o)}t.bandwidthNRD=u,t.bin=function(t){var n,r,e,o,u,a,f,l,i=t.maxbins||20,c=t.base||10,s=Math.log(c),h=t.divide||[5,2],d=t.extent[0],p=t.extent[1],m=t.span||p-d||Math.abs(d)||1;if(t.step)n=t.step;else if(t.steps){for(u=m/i,a=0,f=t.steps.length;a<f&&t.steps[a]<u;++a);n=t.steps[Math.max(0,a-1)]}else{for(r=Math.ceil(Math.log(i)/s),e=t.minstep||0,n=Math.max(e,Math.pow(c,Math.round(Math.log(m)/s)-r));Math.ceil(m/n)>i;)n*=c;for(a=0,f=h.length;a<f;++a)(u=n/h[a])>=e&&m/u<=i&&(n=u)}return o=(u=Math.log(n))>=0?0:1+~~(-u/s),l=Math.pow(c,-o-1),(t.nice||void 0===t.nice)&&(d=d<(u=Math.floor(d/n+l)*n)?u-n:u,p=Math.ceil(p/n)*n),{start:d,stop:p===d?d+n:p,step:n}},t.bootstrapCI=function(e,o,u,a){if(!e.length)return[void 0,void 0];var f,l,i,c,s=Float64Array.from(r(e,a)),h=s.length,d=o;for(i=0,c=Array(d);i<d;++i){for(f=0,l=0;l<h;++l)f+=s[~~(t.random()*h)];c[i]=f/h}return c.sort(n.ascending),[n.quantile(c,u/2),n.quantile(c,1-u/2)]},t.cumulativeLogNormal=M,t.cumulativeNormal=s,t.cumulativeUniform=w,t.densityLogNormal=m,t.densityNormal=c,t.densityUniform=b,t.dotbin=function(t,n,r,e){e=e||(t=>t);let o,u=0,a=1,f=t.length,l=new Float64Array(f),i=e(t[0]),c=i,s=i+n;for(;a<f;++a){if(o=e(t[a]),o>=s){for(c=(i+c)/2;u<a;++u)l[u]=c;s=o+n,i=o}c=o}for(c=(i+c)/2;u<a;++u)l[u]=c;return r?function(t,n){let r,e,o=t.length,u=0,a=1;for(;t[u]===t[a];)++a;for(;a<o;){for(r=a+1;t[a]===t[r];)++r;if(t[a]-t[a-1]<n){for(e=a+(u+r-a-a>>1);e<a;)t[e++]=t[a];for(;e>a;)t[e--]=t[u]}u=a,a=r}return t}(l,n+n/4):l},t.quantileLogNormal=g,t.quantileNormal=h,t.quantileUniform=x,t.quantiles=e,t.quartiles=o,t.randomInteger=function(n,r){null==r&&(r=n,n=0);var e,o,u,a={};return a.min=function(t){return arguments.length?(u=o-(e=t||0),a):e},a.max=function(t){return arguments.length?(u=(o=t||0)-e,a):o},a.sample=function(){return e+Math.floor(u*t.random())},a.pdf=function(t){return t===Math.floor(t)&&t>=e&&t<o?1/u:0},a.cdf=function(t){var n=Math.floor(t);return n<e?0:n>=o?1:(n-e+1)/u},a.icdf=function(t){return t>=0&&t<=1?e-1+Math.floor(t*u):NaN},a.min(n).max(r)},t.randomKDE=function(n,r){var e=d(),o={},a=0;return o.data=function(t){return arguments.length?(n=t,a=t?t.length:0,o.bandwidth(r)):n},o.bandwidth=function(t){return arguments.length?(!(r=t)&&n&&(r=u(n)),o):r},o.sample=function(){return n[~~(t.random()*a)]+r*e.sample()},o.pdf=function(t){for(var o=0,u=0;u<a;++u)o+=e.pdf((t-n[u])/r);return o/r/a},o.cdf=function(t){for(var o=0,u=0;u<a;++u)o+=e.cdf((t-n[u])/r);return o/a},o.icdf=function(){throw Error("KDE icdf not supported.")},o.data(n)},t.randomLCG=function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},t.randomLogNormal=function(t,n){var r,e,o={mean:function(t){return arguments.length?(r=t||0,o):r},stdev:function(t){return arguments.length?(e=null==t?1:t,o):e},sample:()=>p(r,e),pdf:t=>m(t,r,e),cdf:t=>M(t,r,e),icdf:t=>g(t,r,e)};return o.mean(t).stdev(n)},t.randomMixture=function(n,r){var e,o={},u=0;function a(t){var n,r=[],e=0;for(n=0;n<u;++n)e+=r[n]=null==t[n]?1:+t[n];for(n=0;n<u;++n)r[n]/=e;return r}return o.weights=function(t){return arguments.length?(e=a(r=t||[]),o):r},o.distributions=function(t){return arguments.length?(t?(u=t.length,n=t):(u=0,n=[]),o.weights(r)):n},o.sample=function(){for(var r=t.random(),o=n[u-1],a=e[0],f=0;f<u-1;a+=e[++f])if(r<a){o=n[f];break}return o.sample()},o.pdf=function(t){for(var r=0,o=0;o<u;++o)r+=e[o]*n[o].pdf(t);return r},o.cdf=function(t){for(var r=0,o=0;o<u;++o)r+=e[o]*n[o].cdf(t);return r},o.icdf=function(){throw Error("Mixture icdf not supported.")},o.distributions(n).weights(r)},t.randomNormal=d,t.randomUniform=function(t,n){var r,e,o={min:function(t){return arguments.length?(r=t||0,o):r},max:function(t){return arguments.length?(e=null==t?1:t,o):e},sample:()=>v(r,e),pdf:t=>b(t,r,e),cdf:t=>w(t,r,e),icdf:t=>x(t,r,e)};return null==n&&(n=null==t?1:t,t=0),o.min(t).max(n)},t.regressionExp=function(t,n,r){const[e,o,u,a]=N(t,n,r);let f,l,i,c=0,s=0,h=0,d=0,p=0;q(t,n,r,(t,n)=>{f=e[p++],l=Math.log(n),i=f*n,c+=(n*l-c)/p,s+=(i-s)/p,h+=(i*l-h)/p,d+=(f*i-d)/p});const[m,M]=y(s/a,c/a,h/a,d/a),g=t=>Math.exp(m+M*(t-u));return{coef:[Math.exp(m-M*u),M],predict:g,rSquared:A(t,n,r,a,g)}},t.regressionLinear=F,t.regressionLoess=function(t,r,e,o){const[u,a,f,l]=N(t,r,e,!0),i=u.length,c=Math.max(2,~~(o*i)),s=new Float64Array(i),h=new Float64Array(i),d=new Float64Array(i).fill(1);for(let t=-1;++t<=2;){const r=[0,c-1];for(let t=0;t<i;++t){const n=u[t],e=r[0],o=r[1],f=n-u[e]>u[o]-n?e:o;let l=0,i=0,c=0,p=0,m=0,M=1/Math.abs(u[f]-n||1);for(let t=e;t<=o;++t){const r=u[t],e=a[t],o=E(Math.abs(n-r)*M)*d[t],f=r*o;l+=o,i+=f,c+=e*o,p+=e*f,m+=r*f}const[g,v]=y(i/l,c/l,p/l,m/l);s[t]=g+v*n,h[t]=Math.abs(a[t]-s[t]),P(u,t+1,r)}if(2===t)break;const e=n.median(h);if(Math.abs(e)<1e-12)break;for(let t,n,r=0;r<i;++r)t=h[r]/(6*e),d[r]=t>=1?1e-12:(n=1-t*t)*n}return function(t,n,r,e){const o=t.length,u=[];let a,f=0,l=0,i=[];for(;f<o;++f)a=t[f]+r,i[0]===a?i[1]+=(n[f]-i[1])/++l:(l=0,i[1]+=e,i=[a,n[f]],u.push(i));return i[1]+=e,u}(u,s,f,l)},t.regressionLog=function(t,n,r){let e=0,o=0,u=0,a=0,f=0;q(t,n,r,(t,n)=>{++f,t=Math.log(t),e+=(t-e)/f,o+=(n-o)/f,u+=(t*n-u)/f,a+=(t*t-a)/f});const l=y(e,o,u,a),i=t=>l[0]+l[1]*Math.log(t);return{coef:l,predict:i,rSquared:A(t,n,r,o,i)}},t.regressionPoly=function(t,n,r,e){if(1===e)return F(t,n,r);if(2===e)return L(t,n,r);const[o,u,a,f]=N(t,n,r),l=o.length,i=[],c=[],s=e+1;let h,d,p,m,M;for(h=0;h<s;++h){for(p=0,m=0;p<l;++p)m+=Math.pow(o[p],h)*u[p];for(i.push(m),M=new Float64Array(s),d=0;d<s;++d){for(p=0,m=0;p<l;++p)m+=Math.pow(o[p],h+d);M[d]=m}c.push(M)}c.push(i);const g=function(t){const n=t.length-1,r=[];let e,o,u,a,f;for(e=0;e<n;++e){for(a=e,o=e+1;o<n;++o)Math.abs(t[e][o])>Math.abs(t[e][a])&&(a=o);for(u=e;u<n+1;++u)f=t[u][e],t[u][e]=t[u][a],t[u][a]=f;for(o=e+1;o<n;++o)for(u=n;u>=e;u--)t[u][o]-=t[u][e]*t[e][o]/t[e][e]}for(o=n-1;o>=0;--o){for(f=0,u=o+1;u<n;++u)f+=t[u][o]*r[u];r[o]=(t[n][o]-f)/t[o][o]}return r}(c),v=t=>{t-=a;let n=f+g[0]+g[1]*t+g[2]*t*t;for(h=3;h<s;++h)n+=g[h]*Math.pow(t,h);return n};return{coef:S(s,g,-a,f),predict:v,rSquared:A(t,n,r,f,v)}},t.regressionPow=function(t,n,r){let e=0,o=0,u=0,a=0,f=0,l=0;q(t,n,r,(t,n)=>{const r=Math.log(t),i=Math.log(n);++l,e+=(r-e)/l,o+=(i-o)/l,u+=(r*i-u)/l,a+=(r*r-a)/l,f+=(n-f)/l});const i=y(e,o,u,a),c=t=>i[0]*Math.pow(t,i[1]);return i[0]=Math.exp(i[0]),{coef:i,predict:c,rSquared:A(t,n,r,f,c)}},t.regressionQuad=L,t.sampleCurve=function(t,n,r,e){r=r||25,e=Math.max(r,e||200);const o=n=>[n,t(n)],u=n[0],a=n[1],f=a-u,l=f/e,i=[o(u)],c=[];if(r===e){for(let t=1;t<e;++t)i.push(o(u+t/r*f));return i.push(o(a)),i}c.push(o(a));for(let t=r;--t>0;)c.push(o(u+t/r*f));let s=i[0],h=c[c.length-1];for(;h;){const t=o((s[0]+h[0])/2);t[0]-s[0]>=l&&I(s,t,h)>U?c.push(t):(s=h,i.push(h),c.pop()),h=c[c.length-1]}return i},t.sampleLogNormal=p,t.sampleNormal=i,t.sampleUniform=v,t.setRandom=function(n){t.random=n},Object.defineProperty(t,"__esModule",{value:!0})}));
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("d3-array")):"function"==typeof define&&define.amd?define(["exports","d3-array"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).vega={},t.d3)}(this,(function(t,e){"use strict";function*n(t,e){if(null==e)for(let e of t)null!=e&&""!==e&&(e=+e)>=e&&(yield e);else{let n=-1;for(let r of t)r=e(r,++n,t),null!=r&&""!==r&&(r=+r)>=r&&(yield r)}}function r(t,r,o){const l=Float64Array.from(n(t,o));return l.sort(e.ascending),r.map(t=>e.quantileSorted(l,t))}function o(t,e){return r(t,[.25,.5,.75],e)}function l(t,n){let r=t.length,l=e.deviation(t,n),a=o(t,n),u=(a[2]-a[0])/1.34;return l=Math.min(l,u)||l||Math.abs(a[0])||1,1.06*l*Math.pow(r,-.2)}t.random=Math.random;const a=Math.sqrt(2*Math.PI),u=Math.SQRT2;let f=NaN;function i(e,n){e=e||0,n=null==n?1:n;let r,o,l=0,a=0;if(f==f)l=f,f=NaN;else{do{l=2*t.random()-1,a=2*t.random()-1,r=l*l+a*a}while(0===r||r>1);o=Math.sqrt(-2*Math.log(r)/r),l*=o,f=a*o}return e+l*n}function s(t,e,n){const r=(t-(e||0))/(n=null==n?1:n);return Math.exp(-.5*r*r)/(n*a)}function c(t,e,n){let r,o=(t-(e=e||0))/(n=null==n?1:n),l=Math.abs(o);if(l>37)r=0;else{let t,e=Math.exp(-l*l/2);l<7.07106781186547?(t=.0352624965998911*l+.700383064443688,t=t*l+6.37396220353165,t=t*l+33.912866078383,t=t*l+112.079291497871,t=t*l+221.213596169931,t=t*l+220.206867912376,r=e*t,t=.0883883476483184*l+1.75566716318264,t=t*l+16.064177579207,t=t*l+86.7807322029461,t=t*l+296.564248779674,t=t*l+637.333633378831,t=t*l+793.826512519948,t=t*l+440.413735824752,r/=t):(t=l+.65,t=l+4/t,t=l+3/t,t=l+2/t,t=l+1/t,r=e/t/2.506628274631)}return o>0?1-r:r}function h(t,e,n){return t<0||t>1?NaN:(e||0)+(null==n?1:n)*u*function(t){let e,n=-Math.log((1-t)*(1+t));n<6.25?(n-=3.125,e=-364441206401782e-35,e=e*n-16850591381820166e-35,e=128584807152564e-32+e*n,e=11157877678025181e-33+e*n,e=e*n-1333171662854621e-31,e=20972767875968562e-33+e*n,e=6637638134358324e-30+e*n,e=e*n-4054566272975207e-29,e=e*n-8151934197605472e-29,e=26335093153082323e-28+e*n,e=e*n-12975133253453532e-27,e=e*n-5415412054294628e-26,e=1.0512122733215323e-9+e*n,e=e*n-4.112633980346984e-9,e=e*n-2.9070369957882005e-8,e=4.2347877827932404e-7+e*n,e=e*n-13654692000834679e-22,e=e*n-13882523362786469e-21,e=.00018673420803405714+e*n,e=e*n-.000740702534166267,e=e*n-.006033670871430149,e=.24015818242558962+e*n,e=1.6536545626831027+e*n):n<16?(n=Math.sqrt(n)-3.25,e=2.2137376921775787e-9,e=9.075656193888539e-8+e*n,e=e*n-2.7517406297064545e-7,e=1.8239629214389228e-8+e*n,e=15027403968909828e-22+e*n,e=e*n-4013867526981546e-21,e=29234449089955446e-22+e*n,e=12475304481671779e-21+e*n,e=e*n-47318229009055734e-21,e=6828485145957318e-20+e*n,e=24031110387097894e-21+e*n,e=e*n-.0003550375203628475,e=.0009532893797373805+e*n,e=e*n-.0016882755560235047,e=.002491442096107851+e*n,e=e*n-.003751208507569241,e=.005370914553590064+e*n,e=1.0052589676941592+e*n,e=3.0838856104922208+e*n):Number.isFinite(n)?(n=Math.sqrt(n)-5,e=-27109920616438573e-27,e=e*n-2.555641816996525e-10,e=1.5076572693500548e-9+e*n,e=e*n-3.789465440126737e-9,e=7.61570120807834e-9+e*n,e=e*n-1.496002662714924e-8,e=2.914795345090108e-8+e*n,e=e*n-6.771199775845234e-8,e=2.2900482228026655e-7+e*n,e=e*n-9.9298272942317e-7,e=4526062597223154e-21+e*n,e=e*n-1968177810553167e-20,e=7599527703001776e-20+e*n,e=e*n-.00021503011930044477,e=e*n-.00013871931833623122,e=1.0103004648645344+e*n,e=4.849906401408584+e*n):e=1/0;return e*t}(2*t-1)}function d(t,e){let n,r;const o={mean(t){return arguments.length?(n=t||0,o):n},stdev(t){return arguments.length?(r=null==t?1:t,o):r},sample:()=>i(n,r),pdf:t=>s(t,n,r),cdf:t=>c(t,n,r),icdf:t=>h(t,n,r)};return o.mean(t).stdev(e)}function p(t,e){return t=t||0,e=null==e?1:e,Math.exp(t+i()*e)}function m(t,e,n){if(t<=0)return 0;e=e||0,n=null==n?1:n;const r=(Math.log(t)-e)/n;return Math.exp(-.5*r*r)/(n*a*t)}function M(t,e,n){return c(Math.log(t),e,n)}function g(t,e,n){return Math.exp(h(t,e,n))}function b(e,n){return null==n&&(n=null==e?1:e,e=0),e+(n-e)*t.random()}function w(t,e,n){return null==n&&(n=null==e?1:e,e=0),t>=e&&t<=n?1/(n-e):0}function x(t,e,n){return null==n&&(n=null==e?1:e,e=0),t<e?0:t>n?1:(t-e)/(n-e)}function y(t,e,n){return null==n&&(n=null==e?1:e,e=0),t>=0&&t<=1?e+t*(n-e):NaN}function N(t,e,n,r){const o=r-t*t,l=Math.abs(o)<1e-24?0:(n-t*e)/o;return[e-l*t,l]}function q(t,e,n,r){t=t.filter(t=>{let r=e(t),o=n(t);return null!=r&&(r=+r)>=r&&null!=o&&(o=+o)>=o}),r&&t.sort((t,n)=>e(t)-e(n));const o=t.length,l=new Float64Array(o),a=new Float64Array(o);let u,f,i,s=0,c=0,h=0;for(i of t)l[s]=u=+e(i),a[s]=f=+n(i),++s,c+=(u-c)/s,h+=(f-h)/s;for(s=0;s<o;++s)l[s]-=c,a[s]-=h;return[l,a,c,h]}function v(t,e,n,r){let o,l,a=-1;for(let u of t)o=e(u),l=n(u),null!=o&&(o=+o)>=o&&null!=l&&(l=+l)>=l&&r(o,l,++a)}function A(t,e,n,r,o){let l=0,a=0;return v(t,e,n,(t,e)=>{const n=e-o(t),u=e-r;l+=n*n,a+=u*u}),1-l/a}function F(t,e,n){let r=0,o=0,l=0,a=0,u=0;v(t,e,n,(t,e)=>{++u,r+=(t-r)/u,o+=(e-o)/u,l+=(t*e-l)/u,a+=(t*t-a)/u});const f=N(r,o,l,a),i=t=>f[0]+f[1]*t;return{coef:f,predict:i,rSquared:A(t,e,n,o,i)}}function L(t,e,n){const[r,o,l,a]=q(t,e,n),u=r.length;let f,i,s,c,h=0,d=0,p=0,m=0,M=0;for(f=0;f<u;)i=r[f],s=o[f++],c=i*i,h+=(c-h)/f,d+=(c*i-d)/f,p+=(c*c-p)/f,m+=(i*s-m)/f,M+=(c*s-M)/f;const g=p-h*h,b=h*g-d*d,w=(M*h-m*d)/b,x=(m*g-M*d)/b,y=-w*h,N=t=>w*(t-=l)*t+x*t+y+a;return{coef:[y-x*l+w*l*l+a,x-2*w*l,w],predict:N,rSquared:A(t,e,n,a,N)}}function S(t,e,n,r){const o=Array(t);let l,a,u,f;for(l=0;l<t;++l)o[l]=0;for(l=t-1;l>=0;--l)for(u=e[l],f=1,o[l]+=u,a=1;a<=l;++a)f*=(l+1-a)/a,o[l-a]+=u*Math.pow(n,a)*f;return o[0]+=r,o}function E(t){return(t=1-t*t*t)*t*t}function P(t,e,n){let r=t[e],o=n[0],l=n[1]+1;if(!(l>=t.length))for(;e>o&&t[l]-r<=r-t[o];)n[0]=++o,n[1]=l,++l}const U=.1*Math.PI/180;function I(t,e,n){const r=Math.atan2(n[1]-t[1],n[0]-t[0]),o=Math.atan2(e[1]-t[1],e[0]-t[0]);return Math.abs(r-o)}t.bandwidthNRD=l,t.bin=function(t){let e,n,r,o,l,a,u,f,i=t.maxbins||20,s=t.base||10,c=Math.log(s),h=t.divide||[5,2],d=t.extent[0],p=t.extent[1],m=t.span||p-d||Math.abs(d)||1;if(t.step)e=t.step;else if(t.steps){for(l=m/i,a=0,u=t.steps.length;a<u&&t.steps[a]<l;++a);e=t.steps[Math.max(0,a-1)]}else{for(n=Math.ceil(Math.log(i)/c),r=t.minstep||0,e=Math.max(r,Math.pow(s,Math.round(Math.log(m)/c)-n));Math.ceil(m/e)>i;)e*=s;for(a=0,u=h.length;a<u;++a)l=e/h[a],l>=r&&m/l<=i&&(e=l)}return l=Math.log(e),o=l>=0?0:1+~~(-l/c),f=Math.pow(s,-o-1),(t.nice||void 0===t.nice)&&(l=Math.floor(d/e+f)*e,d=d<l?l-e:l,p=Math.ceil(p/e)*e),{start:d,stop:p===d?d+e:p,step:e}},t.bootstrapCI=function(r,o,l,a){if(!r.length)return[void 0,void 0];let u,f,i,s,c=Float64Array.from(n(r,a)),h=c.length,d=o;for(i=0,s=Array(d);i<d;++i){for(u=0,f=0;f<h;++f)u+=c[~~(t.random()*h)];s[i]=u/h}return s.sort(e.ascending),[e.quantile(s,l/2),e.quantile(s,1-l/2)]},t.cumulativeLogNormal=M,t.cumulativeNormal=c,t.cumulativeUniform=x,t.densityLogNormal=m,t.densityNormal=s,t.densityUniform=w,t.dotbin=function(t,e,n,r){r=r||(t=>t);let o,l=0,a=1,u=t.length,f=new Float64Array(u),i=r(t[0]),s=i,c=i+e;for(;a<u;++a){if(o=r(t[a]),o>=c){for(s=(i+s)/2;l<a;++l)f[l]=s;c=o+e,i=o}s=o}for(s=(i+s)/2;l<a;++l)f[l]=s;return n?function(t,e){let n,r,o=t.length,l=0,a=1;for(;t[l]===t[a];)++a;for(;a<o;){for(n=a+1;t[a]===t[n];)++n;if(t[a]-t[a-1]<e){for(r=a+(l+n-a-a>>1);r<a;)t[r++]=t[a];for(;r>a;)t[r--]=t[l]}l=a,a=n}return t}(f,e+e/4):f},t.quantileLogNormal=g,t.quantileNormal=h,t.quantileUniform=y,t.quantiles=r,t.quartiles=o,t.randomInteger=function(e,n){let r,o,l;null==n&&(n=e,e=0);const a={min(t){return arguments.length?(r=t||0,l=o-r,a):r},max(t){return arguments.length?(o=t||0,l=o-r,a):o},sample:()=>r+Math.floor(l*t.random()),pdf:t=>t===Math.floor(t)&&t>=r&&t<o?1/l:0,cdf(t){const e=Math.floor(t);return e<r?0:e>=o?1:(e-r+1)/l},icdf:t=>t>=0&&t<=1?r-1+Math.floor(t*l):NaN};return a.min(e).max(n)},t.randomKDE=function(e,n){const r=d();let o=0;const a={data(t){return arguments.length?(e=t,o=t?t.length:0,a.bandwidth(n)):e},bandwidth(t){return arguments.length?(!(n=t)&&e&&(n=l(e)),a):n},sample:()=>e[~~(t.random()*o)]+n*r.sample(),pdf(t){let l=0,a=0;for(;a<o;++a)l+=r.pdf((t-e[a])/n);return l/n/o},cdf(t){let l=0,a=0;for(;a<o;++a)l+=r.cdf((t-e[a])/n);return l/o},icdf(){throw Error("KDE icdf not supported.")}};return a.data(e)},t.randomLCG=function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},t.randomLogNormal=function(t,e){let n,r;const o={mean(t){return arguments.length?(n=t||0,o):n},stdev(t){return arguments.length?(r=null==t?1:t,o):r},sample:()=>p(n,r),pdf:t=>m(t,n,r),cdf:t=>M(t,n,r),icdf:t=>g(t,n,r)};return o.mean(t).stdev(e)},t.randomMixture=function(e,n){let r,o=0;const l={weights(t){return arguments.length?(r=function(t){let e,n=[],r=0;for(e=0;e<o;++e)r+=n[e]=null==t[e]?1:+t[e];for(e=0;e<o;++e)n[e]/=r;return n}(n=t||[]),l):n},distributions(t){return arguments.length?(t?(o=t.length,e=t):(o=0,e=[]),l.weights(n)):e},sample(){let n=t.random(),l=e[o-1],a=r[0],u=0;for(;u<o-1;a+=r[++u])if(n<a){l=e[u];break}return l.sample()},pdf(t){let n=0,l=0;for(;l<o;++l)n+=r[l]*e[l].pdf(t);return n},cdf(t){let n=0,l=0;for(;l<o;++l)n+=r[l]*e[l].cdf(t);return n},icdf(){throw Error("Mixture icdf not supported.")}};return l.distributions(e).weights(n)},t.randomNormal=d,t.randomUniform=function(t,e){let n,r;const o={min(t){return arguments.length?(n=t||0,o):n},max(t){return arguments.length?(r=null==t?1:t,o):r},sample:()=>b(n,r),pdf:t=>w(t,n,r),cdf:t=>x(t,n,r),icdf:t=>y(t,n,r)};return null==e&&(e=null==t?1:t,t=0),o.min(t).max(e)},t.regressionExp=function(t,e,n){const[r,o,l,a]=q(t,e,n);let u,f,i,s=0,c=0,h=0,d=0,p=0;v(t,e,n,(t,e)=>{u=r[p++],f=Math.log(e),i=u*e,s+=(e*f-s)/p,c+=(i-c)/p,h+=(i*f-h)/p,d+=(u*i-d)/p});const[m,M]=N(c/a,s/a,h/a,d/a),g=t=>Math.exp(m+M*(t-l));return{coef:[Math.exp(m-M*l),M],predict:g,rSquared:A(t,e,n,a,g)}},t.regressionLinear=F,t.regressionLoess=function(t,n,r,o){const[l,a,u,f]=q(t,n,r,!0),i=l.length,s=Math.max(2,~~(o*i)),c=new Float64Array(i),h=new Float64Array(i),d=new Float64Array(i).fill(1);for(let t=-1;++t<=2;){const n=[0,s-1];for(let t=0;t<i;++t){const e=l[t],r=n[0],o=n[1],u=e-l[r]>l[o]-e?r:o;let f=0,i=0,s=0,p=0,m=0,M=1/Math.abs(l[u]-e||1);for(let t=r;t<=o;++t){const n=l[t],r=a[t],o=E(Math.abs(e-n)*M)*d[t],u=n*o;f+=o,i+=u,s+=r*o,p+=r*u,m+=n*u}const[g,b]=N(i/f,s/f,p/f,m/f);c[t]=g+b*e,h[t]=Math.abs(a[t]-c[t]),P(l,t+1,n)}if(2===t)break;const r=e.median(h);if(Math.abs(r)<1e-12)break;for(let t,e,n=0;n<i;++n)t=h[n]/(6*r),d[n]=t>=1?1e-12:(e=1-t*t)*e}return function(t,e,n,r){const o=t.length,l=[];let a,u=0,f=0,i=[];for(;u<o;++u)a=t[u]+n,i[0]===a?i[1]+=(e[u]-i[1])/++f:(f=0,i[1]+=r,i=[a,e[u]],l.push(i));return i[1]+=r,l}(l,c,u,f)},t.regressionLog=function(t,e,n){let r=0,o=0,l=0,a=0,u=0;v(t,e,n,(t,e)=>{++u,t=Math.log(t),r+=(t-r)/u,o+=(e-o)/u,l+=(t*e-l)/u,a+=(t*t-a)/u});const f=N(r,o,l,a),i=t=>f[0]+f[1]*Math.log(t);return{coef:f,predict:i,rSquared:A(t,e,n,o,i)}},t.regressionPoly=function(t,e,n,r){if(1===r)return F(t,e,n);if(2===r)return L(t,e,n);const[o,l,a,u]=q(t,e,n),f=o.length,i=[],s=[],c=r+1;let h,d,p,m,M;for(h=0;h<c;++h){for(p=0,m=0;p<f;++p)m+=Math.pow(o[p],h)*l[p];for(i.push(m),M=new Float64Array(c),d=0;d<c;++d){for(p=0,m=0;p<f;++p)m+=Math.pow(o[p],h+d);M[d]=m}s.push(M)}s.push(i);const g=function(t){const e=t.length-1,n=[];let r,o,l,a,u;for(r=0;r<e;++r){for(a=r,o=r+1;o<e;++o)Math.abs(t[r][o])>Math.abs(t[r][a])&&(a=o);for(l=r;l<e+1;++l)u=t[l][r],t[l][r]=t[l][a],t[l][a]=u;for(o=r+1;o<e;++o)for(l=e;l>=r;l--)t[l][o]-=t[l][r]*t[r][o]/t[r][r]}for(o=e-1;o>=0;--o){for(u=0,l=o+1;l<e;++l)u+=t[l][o]*n[l];n[o]=(t[e][o]-u)/t[o][o]}return n}(s),b=t=>{t-=a;let e=u+g[0]+g[1]*t+g[2]*t*t;for(h=3;h<c;++h)e+=g[h]*Math.pow(t,h);return e};return{coef:S(c,g,-a,u),predict:b,rSquared:A(t,e,n,u,b)}},t.regressionPow=function(t,e,n){let r=0,o=0,l=0,a=0,u=0,f=0;v(t,e,n,(t,e)=>{const n=Math.log(t),i=Math.log(e);++f,r+=(n-r)/f,o+=(i-o)/f,l+=(n*i-l)/f,a+=(n*n-a)/f,u+=(e-u)/f});const i=N(r,o,l,a),s=t=>i[0]*Math.pow(t,i[1]);return i[0]=Math.exp(i[0]),{coef:i,predict:s,rSquared:A(t,e,n,u,s)}},t.regressionQuad=L,t.sampleCurve=function(t,e,n,r){n=n||25,r=Math.max(n,r||200);const o=e=>[e,t(e)],l=e[0],a=e[1],u=a-l,f=u/r,i=[o(l)],s=[];if(n===r){for(let t=1;t<r;++t)i.push(o(l+t/n*u));return i.push(o(a)),i}s.push(o(a));for(let t=n;--t>0;)s.push(o(l+t/n*u));let c=i[0],h=s[s.length-1];for(;h;){const t=o((c[0]+h[0])/2);t[0]-c[0]>=f&&I(c,t,h)>U?s.push(t):(c=h,i.push(h),s.pop()),h=s[s.length-1]}return i},t.sampleLogNormal=p,t.sampleNormal=i,t.sampleUniform=b,t.setRandom=function(e){t.random=e},Object.defineProperty(t,"__esModule",{value:!0})}));
{
"name": "vega-statistics",
"version": "1.7.6",
"version": "1.7.7",
"description": "Statistical routines and probability distributions.",

@@ -27,5 +27,5 @@ "keywords": [

"dependencies": {
"d3-array": "^2.4.0"
"d3-array": "^2.5.1"
},
"gitHead": "62565bbe084a422c4a0cbc6e19c6f7c45a3e5137"
"gitHead": "28db83352e43e321dfe55fc5cb6489b211e45662"
}

@@ -7,3 +7,3 @@ import quartiles from './quartiles';

export default function(array, f) {
var n = array.length,
let n = array.length,
v = deviation(array, f),

@@ -10,0 +10,0 @@ q = quartiles(array, f),

export default function(_) {
// determine range
var maxb = _.maxbins || 20,
let maxb = _.maxbins || 20,
base = _.base || 10,

@@ -5,0 +5,0 @@ logb = Math.log(base),

@@ -8,3 +8,3 @@ import numbers from './numbers';

var values = Float64Array.from(numbers(array, f)),
let values = Float64Array.from(numbers(array, f)),
n = values.length,

@@ -11,0 +11,0 @@ m = samples,

@@ -9,43 +9,39 @@ import {random} from './random';

var dist = {},
a, b, d;
let a, b, d;
dist.min = function(_) {
if (arguments.length) {
a = _ || 0;
d = b - a;
return dist;
} else {
return a;
const dist = {
min(_) {
if (arguments.length) {
a = _ || 0;
d = b - a;
return dist;
} else {
return a;
}
},
max(_) {
if (arguments.length) {
b = _ || 0;
d = b - a;
return dist;
} else {
return b;
}
},
sample() {
return a + Math.floor(d * random());
},
pdf(x) {
return (x === Math.floor(x) && x >= a && x < b) ? 1 / d : 0;
},
cdf(x) {
const v = Math.floor(x);
return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;
},
icdf(p) {
return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p * d) : NaN;
}
};
dist.max = function(_) {
if (arguments.length) {
b = _ || 0;
d = b - a;
return dist;
} else {
return b;
}
};
dist.sample = function() {
return a + Math.floor(d * random());
};
dist.pdf = function(x) {
return (x === Math.floor(x) && x >= a && x < b) ? 1 / d : 0;
};
dist.cdf = function(x) {
var v = Math.floor(x);
return v < a ? 0 : v >= b ? 1 : (v - a + 1) / d;
};
dist.icdf = function(p) {
return (p >= 0 && p <= 1) ? a - 1 + Math.floor(p * d) : NaN;
};
return dist.min(min).max(max);
}

@@ -5,48 +5,50 @@ import estimateBandwidth from './bandwidth';

// TODO: support for additional kernels?
export default function(support, bandwidth) {
var kernel = gaussian(),
dist = {},
n = 0;
const kernel = gaussian();
let n = 0;
dist.data = function(_) {
if (arguments.length) {
support = _;
n = _ ? _.length : 0;
return dist.bandwidth(bandwidth);
} else {
return support;
}
};
const dist = {
data(_) {
if (arguments.length) {
support = _;
n = _ ? _.length : 0;
return dist.bandwidth(bandwidth);
} else {
return support;
}
},
dist.bandwidth = function(_) {
if (!arguments.length) return bandwidth;
bandwidth = _;
if (!bandwidth && support) bandwidth = estimateBandwidth(support);
return dist;
};
bandwidth(_) {
if (!arguments.length) return bandwidth;
bandwidth = _;
if (!bandwidth && support) bandwidth = estimateBandwidth(support);
return dist;
},
dist.sample = function() {
return support[~~(random() * n)] + bandwidth * kernel.sample();
};
sample() {
return support[~~(random() * n)] + bandwidth * kernel.sample();
},
dist.pdf = function(x) {
for (var y=0, i=0; i<n; ++i) {
y += kernel.pdf((x - support[i]) / bandwidth);
}
return y / bandwidth / n;
};
pdf(x) {
let y = 0, i = 0;
for (; i<n; ++i) {
y += kernel.pdf((x - support[i]) / bandwidth);
}
return y / bandwidth / n;
},
dist.cdf = function(x) {
for (var y=0, i=0; i<n; ++i) {
y += kernel.cdf((x - support[i]) / bandwidth);
cdf(x) {
let y = 0, i = 0;
for (; i<n; ++i) {
y += kernel.cdf((x - support[i]) / bandwidth);
}
return y / n;
},
icdf() {
throw Error('KDE icdf not supported.');
}
return y / n;
};
dist.icdf = function() {
throw Error('KDE icdf not supported.');
};
return dist.data(support);
}

@@ -27,28 +27,28 @@ import {cumulativeNormal, quantileNormal, sampleNormal} from './normal';

export default function(mean, stdev) {
var mu,
sigma,
dist = {
mean: function(_) {
if (arguments.length) {
mu = _ || 0;
return dist;
} else {
return mu;
}
},
stdev: function(_) {
if (arguments.length) {
sigma = _ == null ? 1 : _;
return dist;
} else {
return sigma;
}
},
sample: () => sampleLogNormal(mu, sigma),
pdf: value => densityLogNormal(value, mu, sigma),
cdf: value => cumulativeLogNormal(value, mu, sigma),
icdf: p => quantileLogNormal(p, mu, sigma)
};
let mu, sigma;
const dist = {
mean(_) {
if (arguments.length) {
mu = _ || 0;
return dist;
} else {
return mu;
}
},
stdev(_) {
if (arguments.length) {
sigma = _ == null ? 1 : _;
return dist;
} else {
return sigma;
}
},
sample: () => sampleLogNormal(mu, sigma),
pdf: value => densityLogNormal(value, mu, sigma),
cdf: value => cumulativeLogNormal(value, mu, sigma),
icdf: p => quantileLogNormal(p, mu, sigma)
};
return dist.mean(mean).stdev(stdev);
}
import {random} from './random';
export default function(dists, weights) {
var dist = {}, m = 0, w;
let m = 0, w;
function normalize(x) {
var w = [], sum = 0, i;
let w = [], sum = 0, i;
for (i=0; i<m; ++i) { sum += (w[i] = (x[i]==null ? 1 : +x[i])); }

@@ -13,57 +13,61 @@ for (i=0; i<m; ++i) { w[i] /= sum; }

dist.weights = function(_) {
if (arguments.length) {
w = normalize(weights = (_ || []));
return dist;
}
return weights;
};
const dist = {
weights(_) {
if (arguments.length) {
w = normalize(weights = (_ || []));
return dist;
}
return weights;
},
dist.distributions = function(_) {
if (arguments.length) {
if (_) {
m = _.length;
dists = _;
} else {
m = 0;
dists = [];
distributions(_) {
if (arguments.length) {
if (_) {
m = _.length;
dists = _;
} else {
m = 0;
dists = [];
}
return dist.weights(weights);
}
return dist.weights(weights);
}
return dists;
};
return dists;
},
dist.sample = function() {
var r = random(),
d = dists[m-1],
v = w[0],
i = 0;
sample() {
let r = random(),
d = dists[m-1],
v = w[0],
i = 0;
// first select distribution
for (; i<m-1; v += w[++i]) {
if (r < v) { d = dists[i]; break; }
}
// then sample from it
return d.sample();
};
// first select distribution
for (; i<m-1; v += w[++i]) {
if (r < v) { d = dists[i]; break; }
}
// then sample from it
return d.sample();
},
dist.pdf = function(x) {
for (var p=0, i=0; i<m; ++i) {
p += w[i] * dists[i].pdf(x);
}
return p;
};
pdf(x) {
let p = 0, i = 0;
for (; i<m; ++i) {
p += w[i] * dists[i].pdf(x);
}
return p;
},
dist.cdf = function(x) {
for (var p=0, i=0; i<m; ++i) {
p += w[i] * dists[i].cdf(x);
cdf(x) {
let p = 0, i = 0;
for (; i<m; ++i) {
p += w[i] * dists[i].cdf(x);
}
return p;
},
icdf() {
throw Error('Mixture icdf not supported.');
}
return p;
};
dist.icdf = function() {
throw Error('Mixture icdf not supported.');
};
return dist.distributions(dists).weights(weights);
}

@@ -164,28 +164,28 @@ import {SQRT2, SQRT2PI} from './constants';

export default function(mean, stdev) {
var mu,
sigma,
dist = {
mean: function(_) {
if (arguments.length) {
mu = _ || 0;
return dist;
} else {
return mu;
}
},
stdev: function(_) {
if (arguments.length) {
sigma = _ == null ? 1 : _;
return dist;
} else {
return sigma;
}
},
sample: () => sampleNormal(mu, sigma),
pdf: value => densityNormal(value, mu, sigma),
cdf: value => cumulativeNormal(value, mu, sigma),
icdf: p => quantileNormal(p, mu, sigma)
};
let mu, sigma;
const dist = {
mean(_) {
if (arguments.length) {
mu = _ || 0;
return dist;
} else {
return mu;
}
},
stdev(_) {
if (arguments.length) {
sigma = _ == null ? 1 : _;
return dist;
} else {
return sigma;
}
},
sample: () => sampleNormal(mu, sigma),
pdf: value => densityNormal(value, mu, sigma),
cdf: value => cumulativeNormal(value, mu, sigma),
icdf: p => quantileNormal(p, mu, sigma)
};
return dist.mean(mean).stdev(stdev);
}

@@ -5,3 +5,3 @@ import numbers from './numbers';

export default function(array, p, f) {
var values = Float64Array.from(numbers(array, f));
const values = Float64Array.from(numbers(array, f));

@@ -8,0 +8,0 @@ // don't depend on return value from typed array sort call

@@ -36,26 +36,27 @@ import {random} from './random';

export default function(min, max) {
var a, b,
dist = {
min: function(_) {
if (arguments.length) {
a = _ || 0;
return dist;
} else {
return a;
}
},
max: function(_) {
if (arguments.length) {
b = _ == null ? 1 : _;
return dist;
} else {
return b;
}
},
sample: () => sampleUniform(a, b),
pdf: value => densityUniform(value, a, b),
cdf: value => cumulativeUniform(value, a, b),
icdf: p => quantileUniform(p, a, b)
};
let a, b;
const dist = {
min(_) {
if (arguments.length) {
a = _ || 0;
return dist;
} else {
return a;
}
},
max(_) {
if (arguments.length) {
b = _ == null ? 1 : _;
return dist;
} else {
return b;
}
},
sample: () => sampleUniform(a, b),
pdf: value => densityUniform(value, a, b),
cdf: value => cumulativeUniform(value, a, b),
icdf: p => quantileUniform(p, a, b)
};
if (max == null) {

@@ -62,0 +63,0 @@ max = (min == null ? 1 : min);

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc