Mercurial > hg > webaudioevaluationtool
changeset 1275:b4a0244bf5ed
Analysis: Percentile calculation interpolates. Use mean, not 50th percentile for box plot.
author | Nicholas Jillings <n.g.r.jillings@se14.qmul.ac.uk> |
---|---|
date | Thu, 24 Mar 2016 13:01:52 +0000 |
parents | f22a6240fb51 |
children | a411eb98f2b3 |
files | analysis/analysis.js |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/analysis/analysis.js Thu Mar 24 12:29:39 2016 +0000 +++ b/analysis/analysis.js Thu Mar 24 13:01:52 2016 +0000 @@ -18,11 +18,19 @@ return mean; } -function percentile(values, n) { +function percentile(values, p) { + //http://web.stanford.edu/class/archive/anthsci/anthsci192/anthsci192.1064/handouts/calculating%20percentiles.pdf values.sort( function(a,b) {return a - b;} ); // get ordinal rank - var rank = Math.min(Math.floor(values.length*n/100), values.length-1); - return values[rank]; + var index = values.length*p/100; + var k = Math.floor(index); + if (k == index) { + return values[k]; + } else { + var f = index-k; + var x_int = (1-f)*values[k]+f*values[k+1]; + return x_int; + } } function arrayMin(array) { @@ -50,7 +58,7 @@ function boxplotRow(array) { // Take an array of element values and return array of computed intervals var result = { - median : percentile(array,50), + median : arrayMean(array), pct25 : percentile(array,25), pct75 : percentile(array,75), IQR : null,