exponential
Exponential distribution.
Installation
$ npm install distributions-exponential
For use in the browser, use browserify.
Usage
To use the module,
var createDist = ;
To create an exponential distribution,
var dist = ;
The distribution is configurable and has the following methods...
dist.support()
Returns the distribution support, which is all positive real numbers and 0.
var support = dist;// returns [ 0, +inf ]
dist.rate( [value] )
This method is a setter/getter. If no value
is provided, returns the rate
. To set the rate
,
dist;
The default rate is 1.
dist.mean()
Returns the distribution mean
.
var mean = dist;// returns 1/rate
dist.variance()
Returns the distribution variance
.
var variance = dist;
dist.median()
Returns the distribution median
.
var median = dist;
dist.mode()
Returns the distribution mode
.
var mode = dist;// returns 0
dist.skewness()
Returns the distribution skewness
.
var skewness = dist;// returns 2
dist.ekurtosis()
Returns the distribution excess kurtosis
.
var excess = dist;// returns 6
dist.information()
Returns the Fisher information.
var info = dist;// equals dist.variance()
dist.entropy()
Returns the distribution's differential entropy.
var entropy = dist;
dist.pdf( [arr] )
If a vector is not provided, returns the probability density function (PDF). If a vector is provided, evaluates the PDF for each vector element.
var data = 0 1 10 100 1000 ;var pdf = dist;// returns [...]
dist.cdf( [arr] )
If a vector is not provided, returns the cumulative density function (CDF). If a vector is provided, evaluates the CDF for each vector element.
var data = 0 1 10 100 1000 ;var cdf = dist;// returns [...]
dist.inv( [arr] )
If a cumulative probability vector is not provided, returns the inverse cumulative distribution (quantile) function. If a cumulative probability vector is provided, evaluates the quantile function for each vector element.
var probs = 0025 05 0975 ;var quantiles = dist;// returns [...]
Note: all vector values must exist on the interval [0, 1]
.
Examples
var createDist = ;// Define the distribution parameters...var lambda = 01xLow = 0xHigh = 200;// Create a vector...var vec = 1000len = veclengthinc;inc = xHigh - xLow / len;for var i = 0; i < len; i++vec i = inc*i + xLow;// Create an exponential distribution and configure...var dist = ;// Evaluate the probability density function over the vector...var pdf = dist;var arr = 100 ;for var j = 0; j < arrlength; j++arr j = vecj pdfj ;console;// Evaluate the quantile function for canonical cumulative probability values...var quantiles = dist;console;
To run the example code from the top-level application directory,
$ node ./examples/index.js
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ open reports/coverage/lcov-report/index.html
License
Copyright
Copyright © 2014. Athan Reines.