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