time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

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);