quantiles-test.js (2703B)
1 var vows = require('vows'); 2 var assert = require('assert'); 3 var suite = vows.describe('jStat.quantiles'); 4 5 require('../env.js'); 6 7 var tol = 0.0000001; 8 9 suite.addBatch({ 10 'quantiles': { 11 'topic': function() { 12 return jStat; 13 }, 14 'return basic quantiles': function(jStat) { 15 assert.deepEqual(jStat.quantiles([1, 2, 3, 4, 5, 6], 16 [0.25, 0.5, 0.75]), 17 [1.9375, 3.5, 5.0625]); 18 }, 19 'quantiles from instance': function(jStat) { 20 assert.deepEqual(jStat([1, 2, 3, 4, 5, 6]).quantiles([0.25, 0.5, 0.75]), 21 [1.9375, 3.5, 5.0625]); 22 }, 23 'quantiles matrix cols': function(jStat) { 24 assert.deepEqual( 25 jStat([[1, 2], [3, 4], [5, 6]]).quantiles([0.25, 0.5, 0.75]), 26 [[1.375, 3, 4.625], [2.375, 4, 5.625]]); 27 }, 28 'quantiles normal dist': function(jStat) { 29 var arr = [-2.57313203, 9.84802638, 6.13625057, 8.41780777, 30 1.06749265, 2.1530631, 4.46082094, 8.26291053, 31 -9.28064583, 0.13434825]; 32 33 var quantiles = [0.1, 0.3, 0.5, 0.8]; 34 var results = jStat(arr).quantiles(quantiles); 35 var expected = [-6.59764031, 0.55426323, 3.30694202, 8.35197644]; 36 var i; 37 38 for (i = 0; i < quantiles.length; i++) { 39 assert.epsilon(tol, results[i], expected[i]); 40 } 41 }, 42 'quantiles gamma dist': function(jStat) { 43 var arr = [6.20504472, 7.18983495, 6.29331634, 7.72493799, 44 6.44628893, 7.73877221, 8.26542627, 7.00870595, 45 6.72238426, 7.09363385, 6.60325838, 5.90180641, 46 5.79957376, 13.07687722, 6.65942804, 6.75392592, 47 6.41813748, 7.97086739, 9.36773336]; 48 49 var quantiles = [0.83, 0.1, 0.3, 0.5, 0.8]; 50 var results = jStat(arr).quantiles(quantiles, 0.4, 0.4); 51 var expected = [8.06983917, 5.99884267, 52 6.47140404, 6.75392592, 7.91516455]; 53 54 for (var i=0; i < quantiles.length; i++) 55 assert.epsilon(tol, results[i], expected[i]); 56 } 57 }, 58 '#quantiles vector': { 59 'topic': function() { 60 jStat([1, 2, 3, 4, 5, 6]).quantiles([0.25, 0.5, 0.75], this.callback); 61 }, 62 'quantiles callback': function(val, stat) { 63 assert.deepEqual(val, [1.9375, 3.5, 5.0625]); 64 } 65 }, 66 '#quantiles matrix cols': { 67 'topic': function() { 68 jStat([[1, 2], [3, 4], [5, 6]]).quantiles([0.25, 0.5, 0.75], 69 this.callback); 70 }, 71 'quantiles matrix cols callback': function(val, stat) { 72 assert.deepEqual(val, [[1.375, 3, 4.625], [2.375, 4, 5.625]]); 73 } 74 } 75 }); 76 77 suite.export(module);