time-to-botec

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

vector.md (21325B)


      1 ## Vector Functionality
      2 
      3 ### sum()
      4 
      5 **sum( array )**
      6 
      7 Returns the sum of the `array` vector.
      8 
      9     jStat.sum([1,2,3]) === 6
     10 
     11 **fn.sum( [bool][, callback] )**
     12 
     13 Returns the sum of a vector or matrix columns.
     14 
     15     jStat( 1, 5, 5 ).sum() === 15
     16     jStat([[1,2],[3,4]]).sum() === [ 4, 6 ]
     17 
     18 If callback is passed then will pass result as first argument.
     19 
     20     jStat( 1, 5, 5 ).sum(function( result ) {
     21         // result === 15
     22     });
     23 
     24 If pass boolean true as first argument, then return sum of entire matrix.
     25 
     26     jStat([[1,2],[3,4]]).sum( true ) === 10
     27 
     28 And the two can be combined.
     29 
     30     jStat([[1,2],[3,4]]).sum(true, function( result ) {
     31         // result === 10
     32     });
     33 
     34 ### sumsqrd()
     35 
     36 **sumsqrd( array )**
     37 
     38 Returns the sum squared of the `array` vector.
     39 
     40     jStat.sumsqrd([1,2,3]) === 14
     41 
     42 **fn.sumsqrd( [bool][, callback] )**
     43 
     44 Returns the sum squared of a vector or matrix columns.
     45 
     46     jStat( 1, 5, 5 ).sumsqrd() === 55
     47     jStat([[1,2],[3,4]]).sumsqrd() === [ 10, 20 ]
     48 
     49 If callback is passed then will pass result as first argument.
     50 
     51     jStat( 1, 5, 5 ).sumsqrd(function( result ) {
     52         // result === 55
     53     });
     54 
     55 If pass boolean true as first argument, then return sum squared of entire matrix.
     56 
     57     jStat([[1,2],[3,4]]).sumsqrd( true ) === 650
     58 
     59 And the two can be combined.
     60 
     61     jStat([[1,2],[3,4]]).sumsqrd(true,function( result ) {
     62         // result === 650
     63     });
     64 
     65 ### sumsqerr()
     66 
     67 **sumsqerr( array )**
     68 
     69 Returns the sum of squared errors of prediction of the `array` vector.
     70 
     71     jStat.sumsqerr([1,2,3]) === 2
     72 
     73 **fn.sumsqerr( [bool][, callback] )**
     74 
     75 Returns the sum of squared errors of prediction of a vector or matrix columns.
     76 
     77     jStat( 1, 5, 5 ).sumsqerr() === 10
     78     jStat([[1,2],[3,4]]).sumsqerr() === [ 2, 2 ]
     79 
     80 If callback is passed then will pass result as first argument.
     81 
     82     jStat( 1, 5, 5 ).sumsqerr(function( result ) {
     83         // result === 55
     84     });
     85 
     86 If pass boolean true as first argument, then return sum of squared errors of entire matrix.
     87 
     88     jStat([[1,2],[3,4]]).sumsqerr( true ) === 0
     89 
     90 And the two can be combined.
     91 
     92     jStat([[1,2],[3,4]]).sumsqerr(true,function( result ) {
     93         // result === 0
     94     });
     95 
     96 ### sumrow()
     97 
     98 **sumrow( array )**
     99 
    100 Returns the sum of the `array` vector in row-based order.
    101 
    102     jStat.sumrow([1,2,3]) === 6
    103 
    104 **fn.sumrow( [bool][, callback] )**
    105 
    106 Returns the sum of a vector or matrix rows.
    107 
    108     jStat( 1, 5, 5 ).sumrow() === 15
    109     jStat([[1,2],[3,4]]).sumrow() === [ 3, 7 ]
    110 
    111 If callback is passed then will pass result as first argument.
    112 
    113     jStat( 1, 5, 5 ).sumrow(function( result ) {
    114         // result === 15
    115     });
    116 
    117 If pass boolean true as first argument, then return sum of entire matrix.
    118 
    119     jStat([[1,2],[3,4]]).sumrow( true ) === 10
    120 
    121 And the two can be combined.
    122 
    123     jStat([[1,2],[3,4]]).sumrow(true,function( result ) {
    124         // result === 10
    125     });
    126 
    127 
    128 ### product()
    129 
    130 **product( array )**
    131 
    132 Returns the product of the `array` vector.
    133 
    134     jStat.product([1,2,3]) === 6
    135 
    136 **fn.product( [bool][, callback] )**
    137 
    138 Returns the product of a vector or matrix columns.
    139 
    140     jStat( 1, 5, 5 ).product() === 120
    141     jStat([[1,2],[3,4]]).product() === [ 3, 8 ]
    142 
    143 If callback is passed then will pass result as first argument.
    144 
    145     jStat( 1, 5, 5 ).product(function( result ) {
    146         // result === 120
    147     });
    148 
    149 If pass boolean true as first argument, then return sumsqerr of entire matrix.
    150 
    151     jStat([[1,2],[3,4]]).product( true ) === 24
    152 
    153 And the two can be combined.
    154 
    155     jStat([[1,2],[3,4]]).product(true,function( result ) {
    156         // result === 24
    157     });
    158 
    159 ### min()
    160 
    161 **min( array )**
    162 
    163 Returns the minimum value of the `array` vector.
    164 
    165     jStat.min([1,2,3]) === 1
    166 
    167 **fn.min( [bool][, callback] )**
    168 
    169 Returns the minimum value of a vector or matrix columns.
    170 
    171     jStat( 1, 5, 5 ).min() === 1
    172     jStat([[1,2],[3,4]]).min() === [ 1, 2 ]
    173 
    174 If callback is passed then will pass result as first argument.
    175 
    176     jStat( 1, 5, 5 ).min(function( result ) {
    177         // result === 1
    178     });
    179 
    180 If pass boolean true as first argument, then return minimum of entire matrix.
    181 
    182     jStat([[1,2],[3,4]]).min( true ) === 1
    183 
    184 And the two can be combined.
    185 
    186     jStat([[1,2],[3,4]]).min(true,function( result ) {
    187         // result === 1
    188     });
    189 
    190 ### max()
    191 
    192 **max( array )**
    193 
    194 Returns the maximum value of the `array` vector.
    195 
    196     jStat.max([1,2,3]) === 3
    197 
    198 **fn.max( [bool][, callback] )**
    199 
    200 Returns the maximum value of a vector or matrix columns.
    201 
    202     jStat( 1, 5, 5 ).max() === 5
    203     jStat([[1,2],[3,4]]).max() === [ 3, 4 ]
    204 
    205 If callback is passed then will pass result as first argument.
    206 
    207     jStat( 1, 5, 5 ).max(function( result ) {
    208         // result === 5
    209     });
    210 
    211 If pass boolean true as first argument, then return maximum of entire matrix.
    212 
    213     jStat([[1,2],[3,4]]).max( true ) === 4
    214 
    215 And the two can be combined.
    216 
    217     jStat([[1,2],[3,4]]).max(true,function( result ) {
    218         // result === 4
    219     });
    220 
    221 ### mean()
    222 
    223 **mean( array )**
    224 
    225 Returns the mean of the `array` vector.
    226 
    227     jStat.mean([1,2,3]) === 2
    228 
    229 **fn.max( [bool,][callback] )**
    230 
    231 Returns the max of a vector or matrix columns.
    232 
    233     jStat( 1, 5, 5 ).mean() === 3
    234     jStat([[1,2],[3,4]]).mean() === [ 2, 3 ]
    235 
    236 If callback is passed then will pass result as first argument.
    237 
    238     jStat( 1, 5, 5 ).mean(function( result ) {
    239         // result === 3
    240     });
    241 
    242 If pass boolean true as first argument, then return mean of entire matrix.
    243 
    244     jStat([[1,2],[3,4]]).mean( true ) === 2.5
    245 
    246 And the two can be combined.
    247 
    248     jStat([[1,2],[3,4]]).mean(true,function( result ) {
    249         // result === 2.5
    250     });
    251 
    252 ### meansqerr()
    253 
    254 **meansqerr( array )**
    255 
    256 Returns the mean squared error of the `array` vector.
    257 
    258     jStat.meansqerr([1,2,3]) === 0.66666...
    259 
    260 **fn.meansqerr( [bool][, callback] )**
    261 
    262 Returns the mean squared error of a vector or matrix columns.
    263 
    264     jStat( 1, 5, 5 ).meansqerr() === 2
    265     jStat([[1,2],[3,4]]).meansqerr() === [ 1, 1 ]
    266 
    267 If callback is passed then will pass result as first argument.
    268 
    269     jStat( 1, 5, 5 ).meansqerr(function( result ) {
    270         // result === 2
    271     });
    272 
    273 If pass boolean true as first argument, then return mean squared error of entire matrix.
    274 
    275     jStat([[1,2],[3,4]]).meansqerr( true ) === 0
    276 
    277 And the two can be combined.
    278 
    279     jStat([[1,2],[3,4]]).meansqerr(true,function( result ) {
    280         // result === 0
    281     });
    282 
    283 ### geomean()
    284 
    285 **geomean( array )**
    286 
    287 Returns the geometric mean of the `array` vector.
    288 
    289     jStat.geomean([4,1,1/32]) === 0.5
    290 
    291 **fn.geomean( [bool][, callback] )**
    292 
    293 Returns the geometric mean of a vector or matrix columns.
    294 
    295     jStat([4,1,1\32]).geomean() === 0.5
    296     jStat([[1,2],[3,4]]).geomean() === [ 1.732..., 2.828... ]
    297 
    298 If callback is passed then will pass result as first argument.
    299 
    300     jStat([4,1,1\32]).geomean(function( result ) {
    301         // result === 0.5
    302     });
    303 
    304 If pass boolean true as first argument, then return geometric mean of entire matrix.
    305 
    306     jStat([[1,2],[3,4]]).geomean( true ) === 2.213...
    307 
    308 And the two can be combined.
    309 
    310     jStat([[1,2],[3,4]]).geomean(true,function( result ) {
    311         // result === 2.213...
    312     });
    313 
    314 ### median()
    315 
    316 **median( array )**
    317 
    318 Returns the median of the `array` vector.
    319 
    320     jStat.median([1,2,3]) === 2
    321 
    322 **fn.median( [bool][, callback] )**
    323 
    324 Returns the median of a vector or matrix columns.
    325 
    326     jStat( 1, 5, 5 ).median() === 3
    327     jStat([[1,2],[3,4]]).median() === [ 2, 3 ]
    328 
    329 If callback is passed then will pass result as first argument.
    330 
    331     jStat( 1, 5, 5 ).median(function( result ) {
    332         // result === 3
    333     });
    334 
    335 If pass boolean true as first argument, then return median of entire matrix.
    336 
    337     jStat([[1,2],[3,4]]).median( true ) === 2.5
    338 
    339 And the two can be combined.
    340 
    341     jStat([[1,2],[3,4]]).median(true,function( result ) {
    342         // result === 2.5
    343     });
    344 
    345 ### cumsum()
    346 
    347 **cumsum( array )**
    348 
    349 Returns an array of partial sums in the sequence.
    350 
    351     jStat.cumsum([1,2,3]) === [1,3,6]
    352 
    353 **fn.cumsum( [bool][, callback] )**
    354 
    355 Returns an array of partial sums for a vector or matrix columns.
    356 
    357     jStat( 1, 5, 5 ).cumsum() === [1,3,6,10,15]
    358     jStat([[1,2],[3,4]]).cumsum() === [[1,4],[2,6]]
    359 
    360 If callback is passed then will pass result as first argument.
    361 
    362     jStat( 1, 5, 5 ).cumsum(function( result ) {
    363         // result === [1,3,6,10,15]
    364     });
    365 
    366 If pass boolean true as first argument, then return cumulative sums of the matrix.
    367 
    368     jStat([[1,2],[3,4]]).cumsum( true ) === [[1,3],[3,7]]
    369 
    370 And the two can be combined.
    371 
    372     jStat([[1,2],[3,4]]).cumsum(true,function( result ) {
    373         // result === ...
    374     });
    375 
    376 ### cumprod()
    377 
    378 **cumprod( array )**
    379 
    380 Returns an array of partial products in the sequence.
    381 
    382     jStat.cumprod([2,3,4]) === [2,6,24]
    383 
    384 **fn.cumprod( [bool][, callback] )**
    385 
    386 Returns an array of partial products for a vector or matrix columns.
    387 
    388     jStat( 1, 5, 5 ).cumprod() === [1,2,6,24,120]
    389     jStat([[1,2],[3,4]]).cumprod() === [[1,3],[2,8]]
    390 
    391 If callback is passed then will pass result as first argument.
    392 
    393     jStat( 1, 5, 5 ).cumprod(function( result ) {
    394         // result === [1,2,6,24,120]
    395     });
    396 
    397 If pass boolean true as first argument, then return cumulative products of the matrix.
    398 
    399     jStat([[1,2],[3,4]]).cumprod( true ) === [[1,2],[3,12]]
    400 
    401 And the two can be combined.
    402 
    403     jStat([[1,2],[3,4]]).cumprod(true,function( result ) {
    404         // result === ...
    405     });
    406 
    407 ### diff()
    408 
    409 **diff( array )**
    410 
    411 Returns an array of the successive differences of the array.
    412 
    413     jStat.diff([1,2,2,3]) === [1,0,1]
    414 
    415 **fn.diff( [bool][, callback] )**
    416 
    417 Returns an array of successive differences for a vector or matrix columns.
    418 
    419     jStat([1,2,2,3]).diff() === [1,0,1]
    420     jStat([[1,2],[3,4],[1,4]]).diff() === [[2,-2],[2,0]]
    421 
    422 If callback is passed then will pass result as first argument.
    423 
    424     jStat([[1,2],[3,4],[1,4]]).diff(function( result ) {
    425         // result === [[2,-2],[2,0]]
    426     });
    427 
    428 If pass boolean true as first argument, then return successive difference for the whole matrix.
    429 
    430     jStat([[1,2],[3,4],[1,4]]).diff(true) === [0,2]
    431 
    432 And the two can be combined.
    433 
    434     jStat([[1,2],[3,4],[1,4]]).diff(true,function( result ) {
    435         // result === [0,2]
    436     });
    437 
    438 ### rank()
    439 
    440 **rank( array )**
    441 
    442 Returns an array of the ranks of the array.
    443 
    444     jStat.rank([1, 2, 2, 3]) === [1, 2.5, 2.5, 4]
    445 
    446 **fn.rank( [bool][, callback] )**
    447 
    448 Returns an array of ranks for a vector or matrix columns.
    449 
    450     jStat([1, 2, 2, 3]).rank() === [1, 2.5, 2.5, 4]
    451     jStat([[1, 2], [3, 4], [1, 4]]).rank() === [[1.5, 3, 1.5], [1, 2.5, 2.5]]
    452 
    453 If callback is passed then will pass result as first argument.
    454 
    455     jStat([[1, 2], [3, 4], [1, 4]]).rank(function( result ) {
    456         // result === [[1.5, 3, 1.5], [1, 2.5, 2.5]]
    457     });
    458 
    459 If pass boolean true as first argument, then return rank for the whole matrix.
    460 
    461     jStat([[1, 2], [3, 4], [1, 4]]).rank(true) === [2, 5, 2, 5, 2, 5]
    462 
    463 And the two can be combined.
    464 
    465     jStat([[1, 2], [3, 4], [1, 4]]).rank(true, function( result ) {
    466         // result === [2, 5, 2, 5, 2, 5]
    467     });
    468 
    469 ### mode()
    470 
    471 **mode( array )**
    472 
    473 Returns the mode of the `array` vector.
    474 If there are multiple modes then `mode()` will return all of them.
    475 
    476     jStat.mode([1,2,2,3]) === 2
    477     jStat.mode([1,2,3]) === [1,2,3]
    478 
    479 **fn.mode( [bool][, callback] )**
    480 
    481 Returns the mode for a vector or matrix columns.
    482 
    483     jStat([1,2,2,3]).mode() === 2
    484     jStat([[1,2],[3,4],[1,4]]).mode() === [1,4]
    485 
    486 If callback is passed then will pass result as first argument.
    487 
    488     jStat( 1, 5, 5 ).mode(function( result ) {
    489         // result === false
    490     });
    491 
    492 If pass boolean true as first argument, then the matrix will be treated as one
    493 dimensional.
    494 
    495     jStat([[5,4],[5, 2], [5,2]]).mode( true ) === 5
    496 
    497 ### range()
    498 
    499 **range( array )**
    500 
    501 Returns the range of the `array` vector.
    502 
    503     jStat.range([1,2,3]) === 2
    504 
    505 **fn.range( [bool][, callback] )**
    506 
    507 Returns the range for a vector or matrix columns.
    508 
    509     jStat([1,2,3]).range() === 2
    510     jStat([[1,2],[3,4]]).range() === [2,2]
    511 
    512 If callback is passed then will pass result as first argument.
    513 
    514     jStat( 1, 5, 5 ).range(function( result ) {
    515         // result === 4
    516     });
    517 
    518 If pass boolean true as first argument, then return range of the matrix.
    519 
    520     jStat([[1,2],[3,5]]).range( true ) === true
    521 
    522 And the two can be combined.
    523 
    524     jStat([[1,2],[3,5]]).range(true,function( result ) {
    525         // result === 1
    526     });
    527 
    528 ### variance()
    529 
    530 **variance( array[, flag] )**
    531 
    532 Returns the variance of the `array` vector.
    533 By default, the population variance is calculated.
    534 Passing `true` to `flag` indicates to compute the sample variance instead.
    535 
    536     jStat.variance([1,2,3,4]) === 1.25
    537     jStat.variance([1,2,3,4],true) === 1.66666...
    538 
    539 **fn.variance( [bool][, callback] )**
    540 
    541 Returns the variance for a vector or matrix columns.
    542 
    543 **Note:** Cannot pass flag to indicate between population or sample for matrices.
    544 There is a feature request for this on [Issue #51](https://github.com/jstat/jstat/issues/51).
    545 
    546     jStat([1,2,3,4]).variance() === 1.25
    547     jStat([[1,2],[3,4]]).variance() === [1,1]
    548 
    549 If callback is passed then will pass result as first argument.
    550 
    551     jStat( 1, 5, 5 ).variance(function( result ) {
    552         // result === 2
    553     });
    554 
    555 If pass boolean true as first argument, then return variance of the matrix.
    556 
    557     jStat([[1,2],[3,5]]).variance( true ) === 0.140625
    558 
    559 And the two can be combined.
    560 
    561     jStat([[1,2],[3,5]]).variance(true,function( result ) {
    562         // result === 0.140625
    563     });
    564 
    565 ### pooledvariance()
    566 
    567 **pooledvariance( arrays )**
    568 
    569 Returns the pooled (sample) variance of an array of vectors.
    570 Assumes the population variance of the vectors are the same.
    571 
    572     jStat.pooledvariance([[1,2],[3,4]]) === 0.5
    573 
    574 ### deviation()
    575 
    576 **deviation( array )**
    577 
    578 Returns the deviation of the `array` vector.
    579 
    580     jStat.deviation([1,2,3,4]) === [-1.5, -0.5, 0.5, 1.5]
    581 
    582 **fn.deviation( [bool][, callback] )**
    583 
    584 Returns the deviation for a vector or matrix columns.
    585 
    586     jStat([1,2,3,4]).deviation() === [-1.5, -0.5, 0.5, 1.5]
    587     jStat([[1,2],[3,4]]).deviation() === [[-1,1],[-1,1]]
    588 
    589 If callback is passed then will pass result as first argument.
    590 
    591     jStat( 1, 4, 4 ).deviation(function( result ) {
    592         // result === [-1.5, -0.5, 0.5, 1.5]
    593     });
    594 
    595 If pass boolean true as first argument, then return variance of the matrix.
    596 
    597     jStat([[1,2],[3,5]]).deviation( true ) === [-0.5, 0.5, -1, 1]
    598 
    599 And the two can be combined.
    600 
    601     jStat([[1,2],[3,5]]).deviation(true,function( result ) {
    602         // result === [-0.5, 0.5, -1, 1]
    603     });
    604 
    605 ### stdev()
    606 
    607 **stdev( array[, flag] )**
    608 
    609 Returns the standard deviation of the `array` vector.
    610 By default, the population standard deviation is returned.
    611 Passing `true` to `flag` returns the sample standard deviation.
    612 
    613 The 'sample' standard deviation is also called the 'corrected standard deviation', and is an unbiased estimator of the population standard deviation.
    614 The population standard deviation is also the 'uncorrected standard deviation', and is a biased but minimum-mean-squared-error estimator.
    615 
    616     jStat.stdev([1,2,3,4]) === 1.118...
    617     jStat.stdev([1,2,3,4],true) === 1.290...
    618 
    619 **fn.stdev( [bool][, callback] )**
    620 
    621 Returns the standard deviation for a vector or matrix columns.
    622 
    623 **Note:** Cannot pass `flag` to indicate between population or sample for matrices.
    624 There is a feature request for this on [Issue #51](https://github.com/jstat/jstat/issues/51).
    625 
    626     jStat([1,2,3,4]).stdev() === 1.118...
    627     jStat([1,2,3,4]).stdev(true) === 1.290...
    628     jStat([[1,2],[3,4]]).stdev() === [1,1]
    629 
    630 If callback is passed then will pass result as first argument.
    631 
    632     jStat( 1, 4, 4 ).stdev(function( result ) {
    633         // result === 1.118...
    634     });
    635     jStat( 1, 4, 4 ).stdev(true,function( result ) {
    636         // result === 1.290...
    637     });
    638 
    639 If pass boolean true as first argument, then return variance of the matrix.
    640 
    641     jStat([[1,2],[3,5]]).stdev( true ) === 0.25
    642 
    643 And the two can be combined.
    644 
    645     jStat([[1,2],[3,5]]).stdev(true,function( result ) {
    646         // result === 0.25
    647     });
    648 
    649 ### pooledstdev()
    650 
    651 **pooledstdev( arrays )**
    652 
    653 Returns the pooled (sample) standard deviation of an array of vectors.
    654 Assumes the population standard deviation of the vectors are the same.
    655 
    656     jStat.pooledstdev([[1,2],[3,4]]) === 0.707...
    657 
    658 ### meandev()
    659 
    660 **meandev( array )**
    661 
    662 Returns the mean absolute deviation of the `array` vector.
    663 
    664     jStat.meandev([1,2,3,4]) === 1
    665 
    666 **fn.meandev( [bool][, callback] )**
    667 
    668 Returns the mean absolute deviation for a vector or matrix columns.
    669 
    670     jStat([1,2,3,4]).meandev() === 1
    671     jStat([[1,2],[3,4]]).meandev() === [1,1]
    672 
    673 If callback is passed then will pass result as first argument.
    674 
    675     jStat( 1, 4, 4 ).meandev(function( result ) {
    676         // result === 1
    677     });
    678 
    679 If pass boolean true as first argument, then return mean absolute deviation of the matrix.
    680 
    681     jStat([[1,2],[3,5]]).meandev( true ) === 0.25
    682 
    683 And the two can be combined.
    684 
    685     jStat([[1,2],[3,5]]).meandev(true,function( result ) {
    686         // result === 0.25
    687     });
    688 
    689 ### meddev()
    690 
    691 **meddev( array )**
    692 
    693 Returns the median absolute deviation of the `array` vector.
    694 
    695     jStat.meddev([1,2,3,4]) === 1
    696 
    697 **fn.meddev( [bool][, callback] )**
    698 
    699 Returns the median absolute deviation for a vector or matrix columns.
    700 
    701     jStat([1,2,3,4]).meddev() === 1
    702     jStat([[1,2],[3,4]]).meddev() === [1,1]
    703 
    704 If callback is passed then will pass result as first argument.
    705 
    706     jStat( 1, 4, 4 ).meddev(function( result ) {
    707         // result === 1
    708     });
    709 
    710 If pass boolean true as first argument, then return median absolute deviation of the matrix.
    711 
    712     jStat([[1,2],[3,5]]).meddev( true ) === 0.25
    713 
    714 And the two can be combined.
    715 
    716     jStat([[1,2],[3,5]]).meddev(true,function( result ) {
    717         // result === 0.25
    718     });
    719 
    720 ### skewness()
    721 
    722 **skewness( array )**
    723 
    724 Returns the skewness of the `array` vector (third standardized moment).
    725 
    726     jStat.skewness([1,2,2,3,5]) === 0.75003...
    727 
    728 ### kurtosis()
    729 
    730 **kurtosis( array )**
    731 
    732 Returns the excess kurtosis of the `array` vector (fourth standardized moment - 3).
    733 
    734     jStat.kurtosis([1,2,3,4]) === -0.63610...
    735 
    736 ### coeffvar()
    737 
    738 **coeffvar( array )**
    739 
    740 Returns the coefficient of variation of the `array` vector.
    741 
    742     jStat.coeffvar([1,2,3,4]) === 0.447...
    743 
    744 **fn.coeffvar( [bool][, callback] )**
    745 
    746 Returns the coefficient of variation for a vector or matrix columns.
    747 
    748     jStat([1,2,3,4]).coeffvar() === 0.447...
    749     jStat([[1,2],[3,4]]).coeffvar() === [0.5,0.333...]
    750 
    751 If callback is passed then will pass result as first argument.
    752 
    753     jStat( 1, 4, 4 ).coeffvar(function( result ) {
    754         // result === 0.447...
    755     });
    756 
    757 If pass boolean true as first argument, then return coefficient of variation of the matrix.
    758 
    759     jStat([[1,2],[3,5]]).coeffvar( true ) === 0.142...
    760 
    761 And the two can be combined.
    762 
    763     jStat([[1,2],[3,5]]).coeffvar(true,function( result ) {
    764         // result === 0.142...
    765     });
    766 
    767 ### quartiles()
    768 
    769 **quartiles( array )**
    770 
    771 Returns the quartiles of the `array` vector.
    772 
    773     jStat.quartiles( jStat.seq(1,100,100)) === [25,50,75]
    774 
    775 **fn.quartiles( [callback] )**
    776 
    777 Returns the quartiles for a vector or matrix columns.
    778 
    779     jStat(1,100,100).quartiles() === [25,50,75]
    780     jStat(1,100,100,function( x ) {
    781         return [x,x];
    782     }).quartiles() === [[25,50,75],[25,50,75]]
    783 
    784 If callback is passed then will pass result as first argument.
    785 
    786     jStat(1,100,100).quartiles(function( result ) {
    787         // result === [25,50,75]
    788     });
    789 
    790 ### quantiles()
    791 
    792 **quantiles( dataArray, quantilesArray[, alphap[, betap]] )**
    793 
    794 Like quartiles, but calculate and return arbitrary quantiles of the `dataArray` vector
    795 or matrix (column-by-column).
    796 
    797     jStat.quantiles([1, 2, 3, 4, 5, 6],
    798                     [0.25, 0.5, 0.75]) === [1.9375, 3.5, 5.0625]
    799 
    800 Optional parameters alphap and betap govern the quantile estimation method.
    801 For more details see the Wikipedia page on quantiles or scipy.stats.mstats.mquantiles
    802 documentation.
    803 
    804 ### percentile()
    805 
    806 **percentile( dataArray, k, [exclusive] )**
    807 
    808 Returns the k-th percentile of values in the `dataArray` range, where k is in the range 0..1, exclusive.
    809 Passing true for the exclusive parameter excludes both endpoints of the range.
    810 
    811      jStat.percentile([1, 2, 3, 4], 0.3) === 1.9;
    812      jStat.percentile([1, 2, 3, 4], 0.3, true) === 1.5;
    813 
    814 ### percentileOfScore()
    815 
    816 **percentileOfScore( dataArray, score[, kind] )**
    817 
    818 The percentile rank of score in a given array. Returns the percentage
    819 of all values in `dataArray` that are less than (if `kind == 'strict'`) or
    820 less or equal than (if `kind == 'weak'`) score. Default is `'weak'`.
    821 
    822      jStat.percentileOfScore([1, 2, 3, 4, 5, 6], 3), 0.5, 'weak') === 0.5;
    823 
    824 ### histogram()
    825 
    826 **histogram( dataArray[, numBins] )**
    827 
    828 The histogram data defined as the number of `dataArray` elements found in
    829 equally sized bins across the range of `dataArray`. Default number
    830 of bins is 4.
    831 
    832      jStat.histogram([100, 101, 102, 230, 304, 305, 400], 3) === [3, 1, 3];
    833 
    834 ### covariance()
    835 
    836 **covariance( array1, array2 )**
    837 
    838 Returns the covariance of the `array1` and `array2` vectors.
    839 
    840     var seq = jStat.seq( 0, 10, 11 );
    841     jStat.covariance( seq, seq ) === 11;
    842 
    843 ### corrcoeff()
    844 
    845 **corrcoeff( array1, array2 )**
    846 
    847 Returns the population correlation coefficient of the `array1` and `array2` vectors (Pearson's Rho).
    848 
    849     var seq = jStat.seq( 0, 10, 11 );
    850     jStat.corrcoeff( seq, seq ) === 1;
    851 
    852 
    853 **spearmancoeff( array1, array2 )**
    854 
    855 Returns the rank correlation coefficient of the `array1` and `array2` vectors (Spearman's Rho).
    856 
    857     jStat.spearmancoeff([1, 2, 3, 4], [5, 6, 9, 7]) == 0.8;
    858     jStat.spearmancoeff([1, 2, 2, 4], [5, 2, 5, 7]) == 0.5;