(function(){function h(a,b){var c=b+1;while(c===0)c++;return c}function g(a,b,c,d){var e=d,f=d,g=h(b,f);if(g-a<a-a){var i=h(b,e);d=i,d=g}}function f(a){return(a=1-a*a*a)*a*a}function e(a){var b=a.length,c=0;while(++c>=a)return!1;return!0}function d(a){var b=a.length,c=-1;while(++c))return!1;return!0}function c(a,b,c,d){var e=[],f=a+c,g=b.length,h=-1;while(++h=(a*b+c*d)/f;return e}function b(b,c){var d=c.length;if(b>d)return null;var e=[],f=,g={},h=0,i=0,j,k,l;while(i<b){if(h===d)return null;var m=Math.floor(Math.random()*d);if(m in g)continue;g=1,h++,k=c,l=!0;for(j=0;j)){l=!1;break}l&&(e=k,f=m,i++)}return e}function a(a,b){if(!a||!b||a.length!==b.length)return!1;var c=a.length,d=-1;while(++d!==b)return!1;return!0}science.stats={},science.stats.bandwidth={nrd0:function(a){var b=Math.sqrt(science.stats.variance(a));(lo=Math.min(b,science.stats.iqr(a)/1.34))||(lo=b)||(lo=Math.abs(a))||(lo=1);return.9*lo*Math.pow(a.length,-0.2)},nrd:function(a){var b=science.stats.iqr(a)/1.34;return 1.06*Math.min(Math.sqrt(science.stats.variance(a)),b)*Math.pow(a.length,-0.2)}},science.stats.distance={euclidean:function(a,b){var c=a.length,d=-1,e=0,f;while(++d-b,e+=f*f;return Math.sqrt(e)},manhattan:function(a,b){var c=a.length,d=-1,e=0;while(++d-b);return e},minkowski:function(a){return function(b,c){var d=b.length,e=-1,f=0;while(++e-c),a);return Math.pow(f,1/a)}},chebyshev:function(a,b){var c=a.length,d=-1,e=0,f;while(++d-b),f>e&&(e=f);return e},hamming:function(a,b){var c=a.length,d=-1,e=0;while(++d!==b&&e++;return e},jaccard:function(a,b){var c=a.length,d=-1,e=0;while(++d===b&&e++;return e/c},braycurtis:function(a,b){var c=a.length,d=-1,e=0,f=0,g,h;while(++d,h=b,e+=Math.abs(g-h),f+=Math.abs(g+h);return e/f}},science.stats.erf=function(a){var b=.254829592,c=-0.284496736,d=1.421413741,e=-1.453152027,f=1.061405429,g=.3275911,h=a<0?-1:1;a<0&&(h=-1,a=-a);var i=1/(1+g*a);return h*(1-((((f*i+e)*i+d)*i+c)*i+b)*i*Math.exp(-a*a))},science.stats.phi=function(a){return.5*(1+science.stats.erf(a/Math.SQRT2))},science.stats.kernel={uniform:function(a){return a<=1&&a>=-1?.5:0},triangular:function(a){return a<=1&&a>=-1?1-Math.abs(a):0},epanechnikov:function(a){return a<=1&&a>=-1?.75*(1-a*a):0},quartic:function(a){if(a<=1&&a>=-1){var b=1-a*a;return.9375*b*b}return 0},triweight:function(a){if(a<=1&&a>=-1){var b=1-a*a;return 35/32*b*b*b}return 0},gaussian:function(a){return 1/Math.sqrt(2*Math.PI)*Math.exp(-0.5*a*a)},cosine:function(a){return a<=1&&a>=-1?Math.PI/4*Math.cos(Math.PI/2*a):0}},science.stats.kde=function(){function d(d,e){var f=c.call(this,b);return d.map(function©{var d=-1,e=0,g=b.length;while(++d)/f);return})}var a=science.stats.kernel.gaussian,b=[],c=science.stats.bandwidth.nrd;d.kernel=function(b){if(!arguments.length)return a;a=b;return d},d.sample=function(a){if(!arguments.length)return b;b=a;return d},d.bandwidth=function(a){if(!arguments.length)return c;c=science.functor(a);return d};return d},science.stats.kmeans=function(){function f(f){var g=f.length,h=[],i=,j=1,l=0,m=b(e,f),n,o,p,q,r,s,t;while(j&&l<d){p=-1;while(++p=0;o=-1;while(++o<g){q=f,s=Infinity,p=-1;while(++p,q),r=t]++}n=[],o=-1;while(++o,r=n;if(r==null)n=f.slice();else{p=-1;while(++p+=f[p]}}p=-1;while(++p<e){q=n,r=1/i,o=-1;while(++o*=r}j=0,p=-1;while(++p,m)){j=1;break}m=n,l++}return{assignments:h,centroids:m}}var c=science.stats.distance.euclidean,d=1e3,e=1;f.k=function(a){if(!arguments.length)return e;e=a;return f},f.distance=function(a){if(!arguments.length)return c;c=a;return f};return f},science.stats.hcluster=function(){function d(d){var e=d.length,f=[],g=,h=[],i=,j,k,l,m,n,o,p,q;p=-1;while(++p<e){f=0,h=[],q=-1;while(++q[q]=p===q?Infinity:a(d,d),h[f]>h[q]&&(f=q)}p=-1;while(++p=[],i[0]={left:null,right:null,dist:0,centroid:d,size:1,depth:0},g=1;for(n=0;n<e-1;n++){j=0;for(p=0;p[f]<h[f]&&(j=p);k=f,l=i[0],m=i[0],newCluster={left:l,right:m,dist:h[k],centroid:c(l.size,l.centroid,m.size,m.centroid),size:l.size+m.size,depth:1+Math.max(l.depth,m.depth)},i.splice(0,0,newCluster),g+=g;for(q=0;q<e;q++)switch(b){case“single”:h[q]>h[q]&&(h[j]=h[q]=h[q]);break;case“complete”:h[q][q]&&(h[j]=h[q]=h[q]);break;case“average”:h[j]=h[q]=(g*h[q]+g*h[q])/(g+g)}h[j]=Infinity;for(p=0;p[k]=h[p]=Infinity;for(q=0;q==k&&(f=j),h[q][f]&&(f=q);o=newCluster}return o}var a=science.stats.distance.euclidean,b=“simple”;d.distance=function(b){if(!arguments.length)return a;a=b;return d};return d},science.stats.iqr=function(a){var b=science.stats.quantiles(a,);return b-b},science.stats.loess=function(){function h(h,i,j){var k=h.length,l;if(k!==i.length)throw{error:“Mismatched array lengths”};if(k==0)throw{error:“At least one point required.”};if(arguments.length<3){j=[],l=-1;while(++l=1}d(h),d(i),d(j),e(h);if(k==1)return[i];if(k==2)return[i,i];var m=Math.floor(a*k);if(m<2)throw{error:“Bandwidth too small.”};var n=[],o=,p=[];l=-1;while(++l=0,o=0,p=1;var q=-1;while(++q<=b){var r=,s;l=-1;while(++l<k){s=h,l>0&&g(h,j,l,r);var t=r,u=r,v=h-h>h-h?t:u,w=0,x=0,y=0,z=0,A=0,B=Math.abs(1/(h-s));for(var C=t;C<=u;++C){var D=h,E=i,F=C*j,H=D*G;w+=G,x+=H,y+=D*H,z+=E*G,A+=E*H}var I=x/w,J=z/w,K=A/w,L=y/w,M=Math.sqrt(Math.abs(L-I*I))=M*s+N,o=Math.abs(i-n)}if(q===b)break;var O=o.slice();O.sort();var P=O;if(Math.abs(P)<c)break;var Q,G;l=-1;while(++l/(6*P),p=Q>=1?0:(G=1-Q*Q)*G}return n}var a=.3,b=2,c=1e-12;h.bandwidth=function(b){if(!arguments.length)return b;a=b;return h},h.robustnessIterations=function(a){if(!arguments.length)return a;b=a;return h},h.accuracy=function(a){if(!arguments.length)return a;c=a;return h};return h},science.stats.mean=function(a){var b=a.length;if(b===0)return NaN;var c=0,d=-1;while(++d-c)/(d+1);return c},science.stats.median=function(a){return science.stats.quantiles(a,)[0]},science.stats.mode=function(a){a=a.slice().sort(science.ascending);var b,c=a.length,d=-1,e=d,f=null,g=0,h,i;while(++d)!==f&&((h=d-e)>g&&(g=h,b=f),f=i,e=d);return b},science.stats.quantiles=function(a,b){a=a.slice().sort(science.ascending);var c=a.length-1;return b.map(function(b){if(b===0)return a;if(b===1)return a;var d=1+b*c,e=Math.floor(d),f=d-e,g=a;return f===0?g:g+f*(a-g)})},science.stats.variance=function(a){var b=a.length;if(b<1)return NaN;if(b===1)return 0;var c=science.stats.mean(a),d=-1,e=0;while(++d<b){var f=a-c;e+=f*f}return e/(b-1)}})()