lordvlad
6/22/2015 - 1:08 PM

js stats

js stats

function sum(a){ var s = 0, i = 0, l = a.length; for (;i<l;i++) s+= f(a[i], i, a); return s;}
function sq(a){return a*a}

// https://controls.engin.umich.edu/wiki/index.php/Basic_statistics:_mean,_median,_average,_standard_deviation,_z-scores,_and_p-value#Mean_and_Weighted_Average
function mean(a){var s = 0, i = 0, l = a.length; for (;i<l;i++) s+=a[i]; return s / l;}
function wMean(w, a){ var z = 0, n = 0, i = 0, l = a.length; for (;i<l;i++){n+=w[i];z+=a[i]*w[i];};return z / n;}

// https://controls.engin.umich.edu/wiki/index.php/Basic_statistics:_mean,_median,_average,_standard_deviation,_z-scores,_and_p-value#Median
function median(a){var l = a.length, b = arr.slice().sort(); return l % 2 === 0 ? ((b[l /2 - 1] + b[l / 2]) / 2) : b[l / 2];}

// https://controls.engin.umich.edu/wiki/index.php/Basic_statistics:_mean,_median,_average,_standard_deviation,_z-scores,_and_p-value#Mode
function mode(a){ var m={}, r = null, i = 0, l = a.length; for (;i<l;i++){m[a[i]] = m[a[i]] || 0; m[a[i]]++; if (r===null) {r=a[i]}else if (m[a[i]]>m[r]){r=a[i]};} return r;}

// https://controls.engin.umich.edu/wiki/index.php/Basic_statistics:_mean,_median,_average,_standard_deviation,_z-scores,_and_p-value#Standard_Deviation_and_Weighted_Standard_Deviation
function stdv(a){ var s = 0, i = 0, l = a.length, b = mean(a); for (;i<l;i++) s+= sq(a[i]-b); return Math.sqrt(s/(l-1))}
// array of stdvs
function aStdv(a){ var s = [], i = 0, l = a.length, b = mean(a); for (;i<l;i++) s[i] = sq(a[i]-b); return s}
// biased stdv
function bStdv(a){ var s = 0, i = 0, l = a.length, b = mean(a); for(;i<l;i++) s+= sq(a[i]-b); return Math.sqrt(s/l)}
// weighted mean and stdv
function wMeanStdv(s, a) {var _s = [], ss = 0, i = 0, l = s.length; for (;i<l;i++) ss += (_s[i] = 1/sq(s[i])); return [ wMean(_s, a), 1/Math.sqrt(ss) ];}

function zScores(a){
  var _a = 0, _s = 0, i = 0, m = 0, s = 0, l = a.length, z = new Array(a.length); 
  for (i=0;i<l;i++) _a+=a[i];  m = _a / l;
  for (i=0;i<l;i++) _s+=sq(a[i]-m);  s = Math.sqrt(_s/(l-1));
  for (i=0;i<l;i++) z[i] = (a[i]-m)/s;
  return z;
}