Mini javascript statistics library for nodejs or the browser.
No production dependencies.
- Standard Deviation
- Mean
- Median (sorts before calculating)
- Median Absolute Deviation (MAD)
- Outlier Detection & Filtering using Iglewicz and Hoaglin's method (MAD) - Use this if the order of your data does not matter.
- Outlier Detection & Filtering using Median Differencing (Default method) - Use this if the order of your data matters. This looks at the difference between adjacent points best for time series data.
$ npm install stats-analysis
var stats = require("./stats-analysis") // include statistics library
<script src="https://unpkg.com/stats-analysis"></script>
window.stats
var arr = [-2, 1, 2, 3, 3, 4, 15]
//standard deviation
stats.stdev(arr).toFixed(2) * 1 // Round to 2dp and convert to number
> 4.98
//mean
stats.mean(arr).toFixed(2) * 1
> 3.57
//median
stats.median(arr)
> 2
//median absolute deviation
stats.MAD(arr)
> 1
// Outlier detection. Returns indexes of outliers
stats.indexOfOutliers(arr) // Default theshold of 3
> [6]
stats.indexOfOutliers(arr, 6) // Supply higher threshold to allow more outliers.
// Outlier filtering. Returns array with outliers removed.
stats.filterOutliers(arr)
> [-2, 1, 2, 3, 3, 4]
To use different outlier methods:
stats.filterOutliers(arr, stats.outlierMethod.medianDiff)
stats.filterOutliers(arr, stats.outlierMethod.medianDiff, 6) // Different threshold
stats.filterOutliers(arr, stats.outlierMethod.MAD) // Default
stats.indexOfOutliers(arr, stats.outlierMethod.medianDiff)
stats.indexOfOutliers(arr, stats.outlierMethod.medianDiff, 6) // Different threshold
stats.indexOfOutliers(arr, stats.outlierMethod.MAD) // Default
Mocha is used as the testing framework.
Istanbul and codecov used for code coverage.
Commands:
$ npm install // Grab mocha
$ npm run lint // Ensure code consistency with standard
$ npm test // Run tests
$ npm run cov // Run code coverage. (Ensure 100%)
Engineering statistics handbook:
http://www.itl.nist.gov/div898/handbook/index.htm
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Make changes and ensure tests and code coverage all pass.
- Commit your changes:
git commit -m 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
MIT