Mercurial > hg > webaudioevaluationtool
comparison analysis/analysis.js @ 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 | 227ca4d00ab1 |
children | 6c819878ac85 |
comparison
equal
deleted
inserted
replaced
1274:f22a6240fb51 | 1275:b4a0244bf5ed |
---|---|
16 } | 16 } |
17 mean /= values.length; | 17 mean /= values.length; |
18 return mean; | 18 return mean; |
19 } | 19 } |
20 | 20 |
21 function percentile(values, n) { | 21 function percentile(values, p) { |
22 //http://web.stanford.edu/class/archive/anthsci/anthsci192/anthsci192.1064/handouts/calculating%20percentiles.pdf | |
22 values.sort( function(a,b) {return a - b;} ); | 23 values.sort( function(a,b) {return a - b;} ); |
23 // get ordinal rank | 24 // get ordinal rank |
24 var rank = Math.min(Math.floor(values.length*n/100), values.length-1); | 25 var index = values.length*p/100; |
25 return values[rank]; | 26 var k = Math.floor(index); |
27 if (k == index) { | |
28 return values[k]; | |
29 } else { | |
30 var f = index-k; | |
31 var x_int = (1-f)*values[k]+f*values[k+1]; | |
32 return x_int; | |
33 } | |
26 } | 34 } |
27 | 35 |
28 function arrayMin(array) { | 36 function arrayMin(array) { |
29 // Return the minimum value of an array | 37 // Return the minimum value of an array |
30 var min = array[0]; | 38 var min = array[0]; |
48 } | 56 } |
49 | 57 |
50 function boxplotRow(array) { | 58 function boxplotRow(array) { |
51 // Take an array of element values and return array of computed intervals | 59 // Take an array of element values and return array of computed intervals |
52 var result = { | 60 var result = { |
53 median : percentile(array,50), | 61 median : arrayMean(array), |
54 pct25 : percentile(array,25), | 62 pct25 : percentile(array,25), |
55 pct75 : percentile(array,75), | 63 pct75 : percentile(array,75), |
56 IQR : null, | 64 IQR : null, |
57 min: null, | 65 min: null, |
58 max: null, | 66 max: null, |