time-to-botec

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

tukey-test.js (2171B)


      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   'tukey cdf': {
      9     'topic': function() {
     10       return jStat;
     11     },
     12     'check cdf calculation': function(jStat) {
     13       var tol = 0.0000001;
     14       // Answers obtained from R's ptukey()
     15       var q = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
     16       var k2v2 = [0.0000000, 0.4472266, 0.7071328, 0.8320894, 0.8944794, 0.9285421, 0.9487620, 0.9616160, 0.9702482, 0.9763065];
     17       var k2v100 = [0.0000000, 0.5188553, 0.8395949, 0.9636331, 0.9943478, 0.9993817, 0.9999506, 0.9999970, 0.9999999, 1.0000000];
     18       var k100v100 = [0.000000e+00, 0.000000e+00, 0.000000e+00, 5.654157e-05, 5.078565e-02, 5.034959e-01, 9.022779e-01, 9.906062e-01, 9.994254e-01, 9.999738e-01];
     19       var k100v500 = [0.000000e+00, 0.000000e+00, 0.000000e+00, 7.227379e-06, 3.438621e-02, 5.170646e-01, 9.304461e-01, 9.960479e-01, 9.998819e-01, 9.999979e-01];
     20       for (var i = 0; i < q.length; ++i) {
     21         assert.epsilon(tol, jStat.tukey.cdf(q[i], 2, 2), k2v2[i]);
     22         assert.epsilon(tol, jStat.tukey.cdf(q[i], 2, 100), k2v100[i]);
     23         assert.epsilon(tol, jStat.tukey.cdf(q[i], 100, 100), k100v100[i]);
     24         assert.epsilon(tol, jStat.tukey.cdf(q[i], 100, 500), k100v500[i]);
     25       }
     26     }
     27   },
     28   'tukey inv': {
     29     'topic': function() {
     30       return jStat;
     31     },
     32     'check inv calculation': function(jStat) {
     33       var tol = 0.0001;
     34       // Answers obtained from R's qtukey()
     35       var p = [0.9, 0.95, 0.997, 0.9995];
     36       var k2v2 = [4.128183, 6.079637, 24.226336, 40.514830];
     37       var k2v100 = [2.347926, 2.805759, 4.302286, 5.088820];
     38       var k100v100 = [5.988671, 6.312643, 7.424273, 8.046847];
     39       var k100v500 = [5.848500, 6.130686, 7.084854, 7.607542];
     40       for (var i = 0; i < p.length; ++i) {
     41         assert.epsilon(tol, jStat.tukey.inv(p[i], 2, 2), k2v2[i]);
     42         assert.epsilon(tol, jStat.tukey.inv(p[i], 2, 100), k2v100[i]);
     43         assert.epsilon(tol, jStat.tukey.inv(p[i], 100, 100), k100v100[i]);
     44         assert.epsilon(tol, jStat.tukey.inv(p[i], 100, 500), k100v500[i]);
     45       }
     46     }
     47   }
     48 });
     49 
     50 suite.export(module);