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.
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.
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.
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)
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);// 0
After:
var line = ss.linearRegressionLine(ss.linearRegression([[0,0],[1,1]]));line(0);// 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.
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