distributions-exponential

2.0.1 • Public • Published

exponential

NPM version Build Status Coverage Status Dependencies

Exponential distribution.

Installation

$ npm install distributions-exponential

For use in the browser, use browserify.

Usage

To use the module,

var createDist = require( 'distributions-exponential' );

To create an exponential distribution,

var dist = createDist();

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.support();
// 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.rate( 100 );

The default rate is 1.

dist.mean()

Returns the distribution mean.

var mean = dist.mean();
// returns 1/rate

dist.variance()

Returns the distribution variance.

var variance = dist.variance();

dist.median()

Returns the distribution median.

var median = dist.median();

dist.mode()

Returns the distribution mode.

var mode = dist.mode();
// returns 0

dist.skewness()

Returns the distribution skewness.

var skewness = dist.skewness();
// returns 2

dist.ekurtosis()

Returns the distribution excess kurtosis.

var excess = dist.ekurtosis();
// returns 6

dist.information()

Returns the Fisher information.

var info = dist.information();
// equals dist.variance()

dist.entropy()

Returns the distribution's differential entropy.

var entropy = dist.entropy();

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.pdf( data );
// 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.cdf( data );
// 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 = [ 0.025, 0.5, 0.975 ];
 
var quantiles = dist.inv( probs );
// returns [...]

Note: all vector values must exist on the interval [0, 1].

Examples

var createDist = require( 'distributions-exponential' );
 
// Define the distribution parameters...
var lambda = 0.1,
    xLow = 0,
    xHigh = 200;
 
// Create a vector...
var vec = new Array( 1000 ),
    len = vec.length,
    inc;
 
inc = ( xHigh - xLow ) / len;
 
for ( var i = 0; i < len; i++ ) {
    vec[ i ] = inc*+ xLow;
}
 
// Create an exponential distribution and configure...
var dist = createDist().rate( lambda );
 
// Evaluate the probability density function over the vector...
var pdf = dist.pdf( vec );
 
var arr = new Array( 100 );
for ( var j = 0; j < arr.length; j++ ) {
    arr[ j ] = [ vec[j], pdf[j] ];
}
console.log( arr );
 
// Evaluate the quantile function for canonical cumulative probability values...
var quantiles = dist.inv( [ 0.025, 0.5, 0.975 ] );
 
console.log( quantiles );

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

MIT license.


Copyright

Copyright © 2014. Athan Reines.

Package Sidebar

Install

npm i distributions-exponential

Weekly Downloads

10

Version

2.0.1

License

none

Last publish

Collaborators

  • kgryte