time-to-botec

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

arcsine-test.js (5419B)


      1 var vows = require('vows');
      2 var assert = require('assert');
      3 var suite = vows.describe('jStat.distribution');
      4 
      5 require('../env.js');
      6 
      7 suite.addBatch({
      8   'arcsine pdf': {
      9     'topic': function() {
     10       return jStat;
     11     },
     12     'check pdf calculation': function(jStat) {
     13       // Checked against python scipy.stats.arcsine
     14       //>>> from scipy.stats import arcsine
     15       var tol = 0.0000001;
     16       //>>> arcsine.pdf(0, loc=0, scale=1)
     17       assert.epsilon(tol, jStat.arcsine.pdf(0, 0, 1), 0.0);
     18       //>>> arcsine.pdf(1, loc=0, scale=1)
     19       assert.epsilon(tol, jStat.arcsine.pdf(1, 0, 1), 0.0);
     20       //>>> arcsine.pdf(0.001, loc=0, scale=1)
     21       assert.epsilon(tol, jStat.arcsine.pdf(0.001, 0, 1), 10.070879119947094);
     22       //>>> arcsine.pdf(1 - 0.001, loc=0, scale=1)
     23       assert.epsilon(tol, jStat.arcsine.pdf(1 - 0.001, 0, 1), 10.07087911994709);
     24       //>>> arcsine.pdf(3, loc=2, scale=4)
     25       assert.epsilon(tol, jStat.arcsine.pdf(3, 2, 6), 0.1837762984739307);
     26       //>>> arcsine.pdf(4, loc=2, scale=4)
     27       assert.epsilon(tol, jStat.arcsine.pdf(4, 2, 6), 0.15915494309189535);
     28       //>>> arcsine.pdf(6, loc=2, scale=4)
     29       assert.epsilon(tol, jStat.arcsine.pdf(6, 2, 6), 0.0);
     30       //>>> arcsine.pdf(10, loc=2, scale=4)
     31       assert.epsilon(tol, jStat.arcsine.pdf(10, 2, 6), 0.0);
     32       //>>> arcsine.pdf(-10, loc=2, scale=4)
     33       assert.epsilon(tol, jStat.arcsine.pdf(-10, 2, 6), 0.0);
     34       //>>> arcsine.pdf(-2, loc=-2, scale=2)
     35       assert.epsilon(tol, jStat.arcsine.pdf(-2, -2, 0), 0.0);
     36       //>>> arcsine.pdf(-1, loc=-2, scale=2)
     37       assert.epsilon(tol, jStat.arcsine.pdf(-1, -2, 0), 0.31830988618379069);
     38       //>>> arcsine.pdf(0, loc=-2,scale=0)
     39       assert(isNaN(jStat.arcsine.pdf(0, -2, -2)));
     40       //>>> arcsine.pdf(0, loc=1,scale=0)
     41       assert(isNaN(jStat.arcsine.pdf(0, 1, 0)));
     42       //>>> arcsine.pdf(0, loc=2,scale=-2)
     43       assert(isNaN(jStat.arcsine.pdf(0, 2, 0)));
     44     },
     45 
     46     'check cdf calculation': function(jStat) {
     47       var tol = 0.0000001;
     48       //>>> arcsine.cdf(1, loc=0, scale=2)
     49       assert.epsilon(tol, jStat.arcsine.cdf(1, 0, 2), 0.50000000000000011);
     50       //>>> arcsine.cdf(2, loc=0, scale=2)
     51       assert.epsilon(tol, jStat.arcsine.cdf(2, 0, 2), 1.0);
     52       //>>> arcsine.cdf(0, loc=0, scale=2)
     53       assert.epsilon(tol, jStat.arcsine.cdf(0, 0, 2), 0.0);
     54       //>>> arcsine.cdf(0, loc=-1, scale=1)
     55       assert.epsilon(tol, jStat.arcsine.cdf(0, -1, 0), 1.0);
     56       //>>> arcsine.cdf(-3, loc=-1, scale=1)
     57       assert.epsilon(tol, jStat.arcsine.cdf(-3, -1, 0), 0.0);
     58       //>>> arcsine.cdf(3, loc=-1, scale=1)
     59       assert.epsilon(tol, jStat.arcsine.cdf(3, -1, 0), 1.0);
     60       //>>> arcsine.cdf(7, loc=5, scale=4)
     61       assert.epsilon(tol, jStat.arcsine.cdf(7, 5, 9), 0.50000000000000011);
     62       //>>> arcsine.cdf(8, loc=5, scale=4)
     63       assert.epsilon(tol, jStat.arcsine.cdf(8, 5, 9), 0.66666666666666663);
     64       //>>> arcsine.cdf(6, loc=5, scale=4)
     65       assert.epsilon(tol, jStat.arcsine.cdf(6, 5, 9), 0.33333333333333337);
     66       //>>> arcsine.cdf(5.1, loc=5, scale=4)
     67       assert.epsilon(tol, jStat.arcsine.cdf(5.1, 5, 9), 0.10108262410425969);
     68       //>>> arcsine.cdf(5.01, loc=5, scale=4)
     69       assert.epsilon(tol, jStat.arcsine.cdf(5.01, 5, 9), 0.031844266473320351);
     70     },
     71 
     72     'check variance calculation': function(jStat) {
     73       var tol = 0.0000001;
     74       //>>> arcsine.var(0, 1)
     75       assert.epsilon(tol, jStat.arcsine.variance(0, 1), 0.125);
     76       //>>> arcsine.var(0, 2)
     77       assert.epsilon(tol, jStat.arcsine.variance(0, 2), 0.5);
     78       //>>> arcsine.var(0, 10)
     79       assert.epsilon(tol, jStat.arcsine.variance(0, 10), 12.5);
     80       //>>> arcsine.var(2, 10)
     81       assert.epsilon(tol, jStat.arcsine.variance(2, 12), 12.5);
     82       //>>> arcsine.var(-10, 2)
     83       assert.epsilon(tol, jStat.arcsine.variance(-10, -8), 0.5);
     84       //>>> arcsine.var(-10, -2)
     85       assert(isNaN(jStat.arcsine.variance(-10, -12)));
     86       //>>> arcsine.var(2, 0)
     87       assert(isNaN(jStat.arcsine.variance(2, 2)));
     88     },
     89 
     90     'check median calculation': function(jStat) {
     91       var tol = 0.0000001;
     92       //>>> arcsine.median(0, -1)
     93       assert(isNaN(jStat.arcsine.median(0, -1)));
     94       //>>> arcsine.median(2, 4)
     95       assert.epsilon(tol, jStat.arcsine.median(2, 6), 3.9999999999999996);
     96 
     97     },
     98 
     99     'check mean calculation': function(jStat) {
    100       var tol = 0.0000001;
    101       //>>> arcsine.mean(0, -1)
    102       assert(isNaN(jStat.arcsine.mean(0, -1)));
    103       //>>> arcsine.mean(2, 4)
    104       assert.epsilon(tol, jStat.arcsine.mean(2, 6), 4.0);
    105     },
    106 
    107     'check inv calculation': function(jStat) {
    108       var tol = 0.0000001;
    109       assert.epsilon(tol, jStat.arcsine.inv(0.50000000000000011, 0, 2), 1);
    110       assert.epsilon(tol, jStat.arcsine.inv(1.0, 0, 2), 2);
    111       assert.epsilon(tol, jStat.arcsine.inv(0.0, 0, 2), 0);
    112       assert.epsilon(tol, jStat.arcsine.inv(1.0, -1, 0), 0);
    113 
    114       assert.epsilon(tol, jStat.arcsine.inv(0.0, -1, 0), -1); // boundary
    115       assert.epsilon(tol, jStat.arcsine.inv(1.0, -1, 0), 0); // boundary
    116 
    117       assert.epsilon(tol, jStat.arcsine.inv(0.50000000000000011, 5, 9), 7);
    118       assert.epsilon(tol, jStat.arcsine.inv(0.66666666666666663, 5, 9), 8);
    119       assert.epsilon(tol, jStat.arcsine.inv(0.33333333333333337, 5, 9), 6);
    120       assert.epsilon(tol, jStat.arcsine.inv(0.10108262410425969, 5, 9), 5.1);
    121       assert.epsilon(tol, jStat.arcsine.inv(0.031844266473320351, 5, 9), 5.01);
    122     },
    123 
    124   },
    125 });
    126 
    127 suite.export(module);