regression.js is a JavaScript library containing a collection of least-squares fitting methods for finding a trend in a set of data. It currently contains methods for linear, exponential, logarithmic, power and polynomial trends.
The library can be installed from both bower
and npm
.
Most regressions require only two parameters - the regression method (linear, exponential, logarithmic, power or polynomial) and a data source. A third parameter can be used to define the degree of a polynomial when a polynomial regression is required. The regression method name is case-insensitive.
All models return an object with the following properties:
equation
: an array containing the coefficients of the equationstring
: A string representation of the equationpoints
: an array containing the predicted datar2
: the coefficient of determination(R2)bic
: the bayesian information criteriapredict
: a function of the form f(x) that can be used to invoke a regression model on a value
equation: [gradient, y-intercept]
in the form y = mx + c
var data = [[0,1],[32, 67] .... [12, 79]];
var result = regression('linear', data);
var slope = result.equation[0];
var yIntercept = result.equation[1];
equation: [gradient]
in the form
var data = [[0,1],[32, 67] .... [12, 79]];
var result = regression('linearThroughOrigin', data);
equation: [a0, ... , an]
in the form
var data = [[0,1],[32, 67] .... [12, 79]];
var result = regression('polynomial', data, 4);
Not exactly a regression. Uses the last value to fill the blanks when forecasting.
This compares the bic parameters of multiple models to determine the one that fits the data best.
var data = [[0,1],[32, 67] .... [12, 79]];
var models = [{type: 'linear' }, {type: 'polynomial', order: 2}, {type: 'exponential' }];
var result = regression('auto',data, models);
If models is undefined regression.js will check linear, quadratic, cubic, quartic, exponential, and logarithmic models and returns whichever appears to most accurately model the data.
var data = [[0,1],[32, 67] .... [12, 79]];
var result = regression('auto',data);
var data = [[0,1], [32, null] .... [12, 79]];
In any regression, if you use a null
value for data, regression-js will fill it using the trend.
Install packages: npm install
The project is built and controlled with grunt.
To prepare for release, run the default task, which:
- Lints the source and tests with ESLint
- Minifies the javascript in to the
build/
directory
To run tests, grunt test
.