Skip to content

Instantly share code, notes, and snippets.

@mwdchang
Last active November 1, 2016 02:05
Show Gist options
  • Save mwdchang/12fcb0714f745664a4617e90bfe38a47 to your computer and use it in GitHub Desktop.
Save mwdchang/12fcb0714f745664a4617e90bfe38a47 to your computer and use it in GitHub Desktop.
Pearson correlation coefficient function
// Based on: https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient
static PCC(x, y) {
let n = x.length;
let sum_xy = 0;
let sum_x2 = 0;
let sum_y2 = 0;
let meanx = 0, meany = 0;
for (let i=0; i < n; i++) {
sum_xy += x[i]*y[i];
sum_x2 += x[i]*x[i];
sum_y2 += y[i]*y[i];
meanx += x[i];
meany += y[i];
}
meanx /= n;
meany /= n;
let n_meanx2 = n * (meanx*meanx);
let n_meany2 = n * (meany*meany);
let xdenom = 0;
let ydenom = 0;
xdenom = Math.sqrt(sum_x2 - n_meanx2);
ydenom = Math.sqrt(sum_y2 - n_meany2);
if (xdenom === 0 || ydenom === 0) return 0;
return (sum_xy - n * meanx * meany) / (xdenom * ydenom);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment