time-to-botec

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

laplace-test.js (2803B)


      1 var vows = require('vows');
      2 var assert = require('assert');
      3 var suite = vows.describe('jStat.distribution');
      4 
      5 require('../env.js');
      6 
      7 var tol = 0.0000001;
      8 
      9 suite.addBatch({
     10     'laplace pdf': {
     11         'topic': function () {
     12             return jStat;
     13         },
     14         'check pdf calculation': function(jStat) {
     15             var pdf = jStat.laplace.pdf;
     16 
     17             assert.epsilon(tol, pdf(0, 0, 1), 0.5);
     18             assert.epsilon(tol, pdf(2, 0, 1), 0.5 * Math.exp(-2));
     19 
     20             //Mean parameter
     21             assert.epsilon(tol, pdf(0, 1, 1), 0.5 * Math.exp(-1));
     22             assert.epsilon(tol, pdf(0, 3, 1), 0.5 * Math.exp(-3));
     23             assert.epsilon(tol, pdf(0, -3, 1), 0.5 * Math.exp(-3));
     24 
     25             //Shape parameter
     26             assert.epsilon(tol, pdf(0, 0, 5), 0.1);
     27 
     28             //Zero for invalid parameters
     29             assert.epsilon(tol, pdf(0, 0, 0), 0);
     30             assert.epsilon(tol, pdf(0, 0, -3), 0);
     31 
     32             //Large values
     33             assert.epsilon(tol, pdf(0, 400, 500), 0.001 * Math.exp(-0.8));
     34         },
     35         'check cdf calculation': function(jStat) {
     36             var cdf = jStat.laplace.cdf;
     37 
     38             assert.epsilon(tol, cdf(0, 0, 1), 0.5);
     39             assert.epsilon(tol, cdf(1, 0, 1), 1 - (0.5 * Math.exp(-1)));
     40 
     41             //Mean parameter
     42             assert.epsilon(tol, cdf(0, 2, 1), 0.5 * Math.exp(-2));
     43             assert.epsilon(tol, cdf(3, 2, 1), 1 - (0.5 * Math.exp(-1)));
     44 
     45             //Shape parameter
     46             assert.epsilon(tol, cdf(0, 0, 3), 0.5);
     47             assert.epsilon(tol, cdf(3, 0, 3), 1 - (0.5 * Math.exp(-1)));
     48             assert.epsilon(tol, cdf(-2, 0, 4), 0.5 * Math.exp(-0.5));
     49 
     50             //Zero returned for invalid parameters
     51             assert.epsilon(tol, cdf(1, 1, 0), 0);
     52             assert.epsilon(tol, cdf(1, 1, -2), 0);
     53         },
     54         'mean': function(jStat) {
     55             var mean = jStat.laplace.mean;
     56 
     57             assert.epsilon(tol, mean(0, 2), 0);
     58             assert.epsilon(tol, mean(1, 2), 1);
     59             assert.epsilon(tol, mean(-5, 3), -5);
     60         },
     61         'median': function(jStat) {
     62             var median = jStat.laplace.median;
     63 
     64             assert.epsilon(tol, median(0, 2), 0);
     65             assert.epsilon(tol, median(1, 2), 1);
     66             assert.epsilon(tol, median(-5, 3), -5);
     67         },
     68         'mode': function(jStat) {
     69             var mode = jStat.laplace.mode;
     70 
     71             assert.epsilon(tol, mode(0, 2), 0);
     72             assert.epsilon(tol, mode(1, 2), 1);
     73             assert.epsilon(tol, mode(-5, 3), -5);
     74         },
     75         'variance': function(jStat) {
     76             var variance = jStat.laplace.variance;
     77 
     78             assert.epsilon(tol, variance(0, 2), 2 * 2 * 2);
     79             assert.epsilon(tol, variance(0, 0.25), 2 * 0.25 * 0.25);
     80         }
     81     }
     82 });
     83 
     84 suite.export(module);