UNPKG

@stdlib/stats-incr-pcorrdistmat

Version:

Compute a sample Pearson product-moment correlation distance matrix incrementally.

6 lines (5 loc) 2.18 kB
"use strict";var I=function(i,o){return function(){return o||i((o={exports:{}}).exports,o),o.exports}};var S=I(function(K,P){ var L=require('@stdlib/assert-is-positive-integer/dist').isPrimitive,z=require('@stdlib/assert-is-square-matrix/dist'),b=require('@stdlib/assert-is-vector-like/dist'),E=require('@stdlib/array-float64/dist'),x=require('@stdlib/error-tools-fmtprodmsg/dist'),M=require('@stdlib/math-base-special-sqrt/dist'),B=require('@stdlib/ndarray-ctor/dist'),F=require('@stdlib/ndarray-base-ctor/dist'),T=require('@stdlib/ndarray-base-numel/dist');function A(i,o){var e,s,c,u;return o?u=F:u=B,s=new E(i*i),c=[i,i],e=[i,1],u("float64",s,c,e,0,"row-major")}function D(i){var o,e,s;return e=new E(i),s=[i],o=[1],F("float64",e,s,o,0,"row-major")}function G(i,o){var e,s,c,u,q,l,h,v;if(v=0,L(i))e=i,s=A(e,!1);else if(z(i))e=i.shape[0],s=i;else throw new TypeError(x('1JdDe',i));if(h=new E(e),c=new E(e),u=new E(e),l=A(e,!0),arguments.length>1){if(!b(o))throw new TypeError(x('1JdDc',o));if(T(o.shape)!==e)throw new Error(x('1Jd9f',e,T(o.shape)));return q=o,C}return q=D(e),k;function k(d){var w,g,m,p,a,t,y,f,j,V,r,n;if(arguments.length===0)return v===0?null:s;if(!b(d))throw new TypeError(x('1JdDd',d));if(d.shape[0]!==e)throw new Error(x('1Jd9g',e,d.shape[0]));if(j=v,v+=1,V=j/v,w=j||1,v===1)for(r=0;r<e;r++)for(y=d.get(r),f=q.get(r),t=y-f,f+=t/v,q.set(r,f),h[r]=t,c[r]+=t*(y-f),u[r]=M(c[r]/w),g=V*h[r],n=0;n<=r;n++)m=l.get(r,n)+g*h[n],l.set(r,n,m),l.set(n,r,m);else for(r=0;r<e;r++)for(y=d.get(r),f=q.get(r),t=y-f,f+=t/v,q.set(r,f),h[r]=t,c[r]+=t*(y-f),u[r]=M(c[r]/w),g=V*h[r],a=u[r],n=0;n<r;n++)m=l.get(r,n)+g*h[n],l.set(r,n,m),l.set(n,r,m),p=1-m/w/(a*u[n]),s.set(r,n,p),s.set(n,r,p);return s}function C(d){var w,g,m,p,a,t;if(arguments.length===0)return v===0?null:s;if(!b(d))throw new TypeError(x('1JdDd',d));if(d.shape[0]!==e)throw new Error(x('1Jd9h',e,d.shape[0]));for(v+=1,a=0;a<e;a++)for(p=d.get(a)-q.get(a),h[a]=p,c[a]+=p*p,u[a]=M(c[a]/v),m=u[a],t=0;t<a;t++)g=l.get(a,t)+p*h[t],l.set(a,t,g),l.set(t,a,g),w=1-g/v/(m*u[t]),s.set(a,t,w),s.set(t,a,w);return s}}P.exports=G });var H=S();module.exports=H; /** @license Apache-2.0 */ //# sourceMappingURL=index.js.map