- ×
JavaScript Statistical Library
Filed under dataShow AlljStat - JavaScript Statistical Library
jStat provides native javascript implementations of statistical functions. Full details are available in the docs. jStat provides more functions than most libraries, including the weibull, cauchy, poisson, hypergeometric, and beta distributions. For most distributions, jStat provides the pdf, cdf, inverse, mean, mode, variance, and a sample function, allowing for more complex calculations.
NOTICE: The previous case sensitive
jStat
module will no longer be updated. Instead use the all lowercasejstat
when doing annpm install
or similar.Using jStat in a Browser
jStat can be used in the browser. The
jStat
object will be added to the window. For example:<script src="components/jstat.js"></script> <!-- include jStat, from the CDN or otherwise --> <script> ... var jstat = this.jStat(dataset); // jStat will be added to the window ... data[i]['cum'] = jstat.normal(jstat.mean(), jstat.stdev()).cdf(data[i].x); ... </script>
CDN
The library is hosted on jsDelivr using the following url:
//cdn.jsdelivr.net/npm/jstat@latest/dist/jstat.min.js
Note that
'latest'
can be replaced with any released verion of jStat.Module Loaders
Currently jStat is exposed as
j$
andjStat
inside an object, rather than exported directly. This may confuse some module loaders, however should be easily remedied with the correct configuration.NodeJS & NPM
To install via npm:
npm install --save jstat
When loading under Node be sure to reference the child object.
var { jStat } = require('jstat').
RequireJS Shim
For RequireJS not only
exports
but alsoinit
function must be specified.requirejs.config({ paths: { 'jstat': 'path/to/jstat/dist/jstat.min' }, shim: { jstat: { exports: ['j$', 'jStat'], init: function () { return { j$: j$, jStat: jStat }; } } } });
Build Prerequisites
In order to build jStat, you need to have GNU make 3.8 or later, Node.js 0.2 or later, and git 1.7 or later. (Earlier versions might work OK, but are not tested.)
Windows users have two options:
- Install msysgit (Full installer for official Git), GNU make for Windows, and a binary version of Node.js. Make sure all three packages are installed to the same location (by default, this is C:\Program Files\Git).
- Install Cygwin (make sure you install the git, make, and which packages), then either follow the Node.js build instructions or install the binary version of Node.js.
Mac OS users should install Xcode (comes on your Mac OS install DVD, or downloadable from Apple's Xcode site) and http://mxcl.github.com/homebrew/. Once Homebrew is installed, run
brew install git
to install git, andbrew install node
to install Node.js.Linux/BSD users should use their appropriate package managers to install make, git, and node, or build from source if you swing that way.
Building jStat
First, clone a copy of the jStat git repo by running
git clone git://github.com/jstat/jstat.git
.To download all necessary libraries run
npm install
.Then, to get a complete, minified version of jStat and all documentation, simply
cd
to thejstat
directory and typemake
. If you don't have Node installed and/or want to make a basic, uncompressed, unlinted version of jstat, usemake jstat
instead ofmake
.The built version of jStat will be put in the
dist/
subdirectory.Generate just the documentation by running
make doc
. Documentation will be placed indist/docs
by default.To remove all built files, run
make clean
.Running Tests
Execute all tests by running
make test
.Or if you wish to run a specific test,
cd
totest/<subdir>
and runnode <some_test>-test.js
.Get the Code
Both the minified and unminified source are located in the
dist/
directory. For those who don't want to build it themselves.Contribute
jStat is now going to follow most of the v8 JavaScript guidelines. There will be plenty of source that uses the old style, but we're going to work away from that.
Also, we'll be going through and reimplementing a good portion of the code to run faster. Hopefully it won't take too long to get the project on one basic standard.
When submitting pull requests, no need to check in
dist/*.js
. They'll be recompiled for distribution anyway.Join the Community
We always like discussion of how to improve jStat. Join us at our mailing list and let us know what you'd like to see. Also come ask questions in the #jstat channel on irc.freenode.net.