65 lines
2.1 KiB
JavaScript
65 lines
2.1 KiB
JavaScript
|
var test = require('tape');
|
||
|
var ss = require('../');
|
||
|
|
||
|
test('quantile', function(t) {
|
||
|
// Data and results from
|
||
|
// [Wikipedia](http://en.wikipedia.org/wiki/Quantile#Quantiles_of_a_population)
|
||
|
test('can get proper quantiles of an even-length list', function(t) {
|
||
|
var even = [3, 6, 7, 8, 8, 10, 13, 15, 16, 20];
|
||
|
t.equal(ss.quantile(even, 0.25), 7);
|
||
|
t.equal(ss.quantile(even, 0.5), 9);
|
||
|
t.equal(ss.quantile(even, 0.75), 15);
|
||
|
t.end();
|
||
|
});
|
||
|
|
||
|
test('can get proper quantiles of an odd-length list', function(t) {
|
||
|
var odd = [3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20];
|
||
|
t.equal(ss.quantile(odd, 0.25), 7);
|
||
|
t.equal(ss.quantile(odd, 0.5), 9);
|
||
|
t.equal(ss.quantile(odd, 0.75), 15);
|
||
|
t.end();
|
||
|
});
|
||
|
|
||
|
test('the median quantile is equal to the median', function(t) {
|
||
|
var rand = [1, 4, 5, 8];
|
||
|
t.equal(ss.quantile(rand, 0.5), ss.median(rand));
|
||
|
var rand2 = [10, 50, 2, 4, 4, 5, 8];
|
||
|
t.equal(ss.quantile(rand2, 0.5), ss.median(rand2));
|
||
|
t.end();
|
||
|
});
|
||
|
|
||
|
test('a zero-length list produces null', function(t) {
|
||
|
t.equal(ss.quantile([], 0.5), null);
|
||
|
t.end();
|
||
|
});
|
||
|
|
||
|
test('test odd-value case', function(t) {
|
||
|
t.equal(ss.quantile([0, 1, 2, 3, 4], 0.2), 1);
|
||
|
t.end();
|
||
|
});
|
||
|
|
||
|
test('bad bounds produce null', function(t) {
|
||
|
t.equal(ss.quantile([1, 2, 3], 1.1), null);
|
||
|
t.equal(ss.quantile([1, 2, 3], -0.5), null);
|
||
|
t.end();
|
||
|
});
|
||
|
|
||
|
test('max quantile is equal to the max', function(t) {
|
||
|
t.equal(ss.quantile([1, 2, 3], 1), ss.max([1, 2, 3]));
|
||
|
t.end();
|
||
|
});
|
||
|
|
||
|
test('min quantile is equal to the min', function(t) {
|
||
|
t.equal(ss.quantile([1, 2, 3], 0), ss.min([1, 2, 3]));
|
||
|
t.end();
|
||
|
});
|
||
|
|
||
|
test('if quantile arg is an array, response is an array of quantiles', function(t) {
|
||
|
var odd = [3, 6, 7, 8, 8, 9, 10, 13, 15, 16, 20];
|
||
|
t.deepEqual(ss.quantile(odd, [0, 0.25, 0.5, 0.75, 1]), [3, 7, 9, 15, 20]);
|
||
|
t.deepEqual(ss.quantile(odd, [0.75, 0.5]), [15, 9]);
|
||
|
t.end();
|
||
|
});
|
||
|
t.end();
|
||
|
});
|