Changelog
All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
7.8.8 (2025-03-07)
Bug Fixes
- Add missing types from types bundle file (#756) (20d7e44)
7.8.7 (2024-10-16)
7.8.6 (2024-10-16)
7.8.5 (2024-08-27)
7.8.4 (2024-08-15)
7.8.3 (2023-02-13)
7.8.2 (2023-01-15)
7.8.1 (2023-01-15)
Bug Fixes
7.8.0 (2022-10-26)
Features
7.7.6 (2022-08-12)
7.7.5 (2022-03-06)
7.7.4 (2022-03-01)
Bug Fixes
- Return NaN on sum with non-number inputs (#633) (6547df7)
7.7.3 (2022-01-13)
7.7.2 (2022-01-13)
7.7.1 (2022-01-13)
Bug Fixes
- add missing TypeScript typing for silhouetteMetric (#589) (d4ca159)
7.7.0 (2021-03-31)
Features
7.6.0 (2021-03-02)
Features
7.5.0 (2021-02-24)
Features
- Add logit and cumulativeStdLogisticProbability methods (7279632)
7.4.1 (2021-02-12)
Bug Fixes
- Add TypeScript bindings for silhouette. (#549) (119c09f)
7.4.0 (2020-12-14)
Features
- Add coefficient of variation (ead74c6)
7.3.2 (2020-10-31)
Bug Fixes
7.3.1 (2020-10-25)
Bug Fixes
7.3.0 (2020-09-08)
Features
- Add randomSource argument to permutationTest (#505) (f289fd1)
- Relative error and approximate equality (#506) (88e8794)
7.2.0 (2020-08-23)
Features
7.1.0 (2020-05-06)
Features
- meanSimple method that uses sumSimple for higher performance (8e82333)
7.0.9 (2020-04-20)
7.0.8 (2020-02-03)
Bug Fixes
7.0.7 (2019-11-18)
7.0.6 (2019-11-15)
7.0.5 (2019-07-10)
7.0.4 (2019-07-10)
7.0.3 (2019-07-10)
Bug Fixes
Tests
- Add --skipLibCheck to make tsc ignore node modules. (089f47a)
7.0.2 (2019-02-26)
7.0.1 (2019-02-07)
Bug Fixes
7.0.0 (2018-12-30)
Bug Fixes
- change umd name from simpleStatistics to ss (59b42c0)
- Fix flipped umd:main package entry (c9fe55b)
Chores
- Refactor from functions to classes, use Number.isInteger (d974a1a), closes #296
BREAKING CHANGES
6.1.1 (2018-09-24)
Bug Fixes
- permutationTest: Add TypeScript definition for permutationTest (e7fa9db), closes #298
- array quantile on certain kinds of input (#334) (e9d007e)
6.1.0 (2018-06-23)
Features
6.0.1 (2018-05-11)
6.0.0 (2018-04-30)
Bug Fixes
- Polyfill Number.isInteger function before committing to dropping IE11 (#297) (01cc37e), closes #296
build
- package.json: Remove bower and component.json compatibility (#294) (0593cb8), closes #293
Features
BREAKING CHANGES
- package.json: simple-statistics is no longer supported as a component module or a bower module.
All other forms of support - script tag, unpkg, npm - continue.
5.4.0 (2018-04-21)
Features
5.3.1 (2018-03-23)
Bug Fixes
- Someone simple-statistics dependend on itself... (12acd40)
5.3.0 (2018-03-23)
Features
5.2.1 (2017-12-20)
5.2.0 (2017-11-29)
Features
- package: Add unpkg field to package.json to support unpkg default entry point (#267) (c1afd51)
5.1.0 (2017-10-23)
Features
- Add TypeScript definition (688538b)
5.0.1 (2017-10-15)
Bug Fixes
5.0.0 (2017-09-26)
Features
BREAKING CHANGES
- simple-statistics now uses ES6 modules internally, and exposes a entry point for other modules to use it as an ES6 module.
This means:
- If you use Rollup or another library that supports the
jsnext:main or module fields of package.json, you'll likely automatically start using this feature. When you use simple-statistics as an ES6 module, import {min} from "simple-statistics" and other imports of only a few of its methods will automatically do 'tree-shaking' and only pull in the parts you use (if your bundling tool supports tree-shaking)
- Sub-requiring parts of simple-statistics, like
require('simple-statistics/min') is deprecated and will not work. Its components are now written with ES6 syntax.
4.1.1 (2017-08-05)
Bug Fixes
- expose BayesianClassifier & PerceptronModel instead of bayesian and perceptron (1d03671)
4.1.0 (2017-04-27)
Features
4.0.0 (2017-04-25)
Bug Fixes
Performance Improvements
- binomialDistribution: avoid expensive factorial calculations (#205) (525f9c0)
- core: Improve performance of min, max, sumNthPowerDeviations, variance, sampleVariance (#195) (9d2569a)
- distributions: return array instead of object (#209) (6c5df5f)
- poissonDistribution: avoid expensive factorial calculation (#206) (b34aceb)
- poissonDistribution: use Math.exp instead of Math.pow (#208) (6491dfa)
- sampleSkewness: Improve sampleSkewness performance (#197) (03d37eb)
- sum: Switch from Kahan to Kahan-Babuska algorithm (1b42d7f)
BREAKING CHANGES
- Removes .mixin(). Instead use simple-statistics in a functional style.
- distributions: The return value of bernoulliDistribution, binomialDistribution, and poissonDistribution is no longer an Object with number keys, it is now an Array of numbers.
3.0.0 (2017-04-06)
Breaking change: before this release, simple-statistics would return NaN
when provided with invalid input. After 3.0.0, simple-statistics will throw
exceptions when provided with invalid input. If you previously used isNaN to
test for these error cases, switch to using try and catch, or make sure
that valid input is given to simple-statistics.
Features
- mean: combineMeans, a method for combining calculated means (d9e3ebc)
- mean: subtractFromMean, a method to remove a value from the mean (afe76e9)
- variance: combineVariances, a method for combining pre-calculated variances of two dataset (68133f7)
2.5.0 (2017-02-24)
Features
- mean: addToMean, a method to update an mean with a new element (b6637b4)
2.4.0 (2017-02-22)
Bug Fixes
- build: Ignore conventional-changelog-core for Flow (4874868)
Features
- mode: Implement modeFast, an indexed mode implementation (#183) (59b7191)
2.3.0 (2017-02-17)
Features
- core: sampleWithReplacement (#174) (a8d05d1)
CHANGELOG
2.2.0
- Improved Ckmeans algorithm
from the updated R project
that dramatically increases performance.
- Adds
permutationHeap method for computing all permutations of an array.
- Adds
combinations for combinations without replacement
- Adds
combinationsReplacement for combinations with replacement
2.1.0
2.0.0
New features:
product: returns the product of a series of numbers
medianSorted: exposes the internal method of median
that only operates on sorted arrays and works in constant time
modeSorted: exposes the internal method of mode and works
in linear time.
Specifications:
- Adds Flow annotations to all methods, allowing
up-front typechecking if you use Flow in your application.
Changes:
- Invalid input now uniformly produces the value
NaN instead
of previously a mix of null and undefined.
- The method
sortedUniqueCount is now called uniqueCountSorted to
match the other sorted methods, medianSorted and modeSorted
Fixes:
equalIntervalBreaks was not exported by index.js, and now is.
1.0.1
Fixes:
- Fixes to ckmeans algorithm (thanks to @llimllib) (#125)
Housekeeping:
- Add keywords to package. Fixes #120
- Standardize indentation, add example for epsilon
- Browser testing with Sauce Labs
Bundle size optimizations:
- Add external sourcemaps for minified and unminified standalone bundles
- Use bundle-collapser for smaller bundles
- Indicate numericSort as an internal method.
1.0.0
Breaking Changes
- Removed the .m() and .b() shortcuts from the linear regression
class. Use
.mb().b and .mb().m instead.
- linearRegression is now a function, and linearRegressionLine is a separate
function.
UPGRADING
Linear Regression
Before:
var l = ss.linear_regression().data([[0, 0], [1, 1]]);
l.line()(0);
After:
var line = ss.linearRegressionLine(ss.linearRegression([[0, 0], [1, 1]]));
line(0);
Jenks -> ckmeans
The implementation of Jenks natural breaks was removed: an implementation
of Ckmeans, an improvement on its technique, is added. Ckmeans should
work better for nearly all Jenks usecases.
Before:
ss.jenks([1, 2, 4, 5, 7, 9, 10, 20], 3)
After:
ss.ckmeans([1, 2, 4, 5, 7, 9, 10, 20], 3))
[ [ 1,
2,
4,
5,
7,
9 ],
[ 10 ],
[ 20 ] ]
Instead of class breaks, ckmeans returns clustered data. Class breaks
can be derived by taking the first value from each cluster:
var breaks = ss.ckmeans([1, 2, 4, 5, 7, 9, 10, 20], 3)).map(function(cluster) {
return cluster[0];
});
BayesModel is now a class
PerceptronModel is now a class, and the weights and bias members
are accessable as properties rather than methods.
- All multi-word method names are now camelCase rather than underscore_cased:
this means that a method like
ss.r_squared is now accessible as ss.rSquared
New Features
- Ckmeans replaces Jenks
sortedUniqueCount provides an extremely fast method for counting
unique values of sorted arrays.
sumNthPowerDeviations is now exposed, providing a simple way to calculate
the fundamental aspect of measures like variance and skewness.
Non-Breaking Changes
- JSDoc documentation throughout
- Each function is now its own file, and simple-statistics
is assembled with CommonJS-style require() statements. simple-statistics can
still be used in a browser with browserify.
- The standard normal table is now calculated using the cumulative distribution
function, rather than hardcoded.
0.9.2
- Improved test coverage
- Switched linting from JSHint to eslint and fixed
style issues this uncovered.
0.9.1
- Fixes
.jenks corner cases.
0.9.0
- Adds
.sample for simple random sampling
- Adds
.shuffle and .shuffleInPlace for random permutations
- Adds
.chunk for splitting arrays into chunked subsets
0.8.1
- fixes a bug in
mode that favored the last new number
0.8.0
mixin can now take an array in order to mixin functions into a single array
instance rather than the global Array prototype.
0.7.0
- Adds
simple_statistics.harmonicMean thanks to jseppi
0.6.0
- Adds
simple_statistics.quantileSorted thanks to rluta
simple_statistics.quantile now accepts a sorted list of quantiles as a second argument
- Improved test coverage
0.5.0
- Adds
simple_statistics.cumulativeStdNormalProbability by doronlinder
- Adds
simple_statistics.zScore by doronlinder
- Adds
simple_statistics.standardNormalTable
0.4.0
- Adds
simple_statistics.median_absolute_deviation() by siculars
- Adds
simple_statistics.iqr() by siculars
- Adds
simple_statistics.skewness() by Doron Linder
- Lower-level accessors for linear regression allow users to do the line
equation themselves
0.3.0
- Adds
simple_statistics.jenks()
- Adds
simple_statistics.jenksMatrices()
- Improves test coverage and validation
0.2.0
- Adds
simple_statistics.quantile()
- Adds
simple_statistics.mixin()
- Adds
simple_statistics.geometricMean()
- Adds
simple_statistics.sampleVariance()
- Adds
simple_statistics.sampleCovariance()
0.1.0
- Adds
simple_statistics.tTest()
- Adds
simple_statistics.min()
- Adds
simple_statistics.max()