OLS 回归 JS 库
Library for OLS regression JS
我正在使用 backbone.js 框架创建 SPA,整个应用程序由一系列 CSV 驱动。 CSV 看起来像这样。
Day, Time, Place, Score
Tuesday, 9:00 pm, Omaha, 13
Monday, 8:15 pm, KC, 15
想法是将有一系列下拉菜单,甚至是拖放功能,人们可以在其中选择要 运行 回归的 csv 标题。显然分配因变量和自变量。
我一直没能找到能够按我想要的规模进行回归的 js 库。 CSV 可能大约有 300,000 行。我对 JS 比较陌生,不想从头开始写这个,如果有人有 OLS 回归的方法,我将不胜感激。
没有包含 OLS 回归的现有统计库,但我在这里找到了它的代码。 http://trentrichardson.com/2010/04/06/compute-linear-regressions-in-javascript/
代码如下:
function linearRegression(y,x){
var lr = {};
var n = y.length;
var sum_x = 0;
var sum_y = 0;
var sum_xy = 0;
var sum_xx = 0;
var sum_yy = 0;
for (var i = 0; i < y.length; i++) {
sum_x += x[i];
sum_y += y[i];
sum_xy += (x[i]*y[i]);
sum_xx += (x[i]*x[i]);
sum_yy += (y[i]*y[i]);
}
lr['slope'] = (n * sum_xy - sum_x * sum_y) / (n*sum_xx - sum_x * sum_x);
lr['intercept'] = (sum_y - lr.slope * sum_x)/n;
lr['r2'] = Math.pow((n*sum_xy - sum_x*sum_y)/Math.sqrt((n*sum_xx-sum_x*sum_x)*(n*sum_yy-sum_y*sum_y)),2);
return lr;
}
var known_y = [1, 2, 3, 4];
var known_x = [5.2, 5.7, 5.0, 4.2];
var lr = linearRegression(known_y, known_x);
// lr.slope
// lr.intercept
// lr.r2
这无疑是我找到的最好的,并且可以轻松构建到 Backbone.js 框架中。
你可以使用这个:
https://dirktoewe.github.io/nd4js/doc.html#nd.la.lstsq
工作正常。
我正在使用 backbone.js 框架创建 SPA,整个应用程序由一系列 CSV 驱动。 CSV 看起来像这样。
Day, Time, Place, Score
Tuesday, 9:00 pm, Omaha, 13
Monday, 8:15 pm, KC, 15
想法是将有一系列下拉菜单,甚至是拖放功能,人们可以在其中选择要 运行 回归的 csv 标题。显然分配因变量和自变量。
我一直没能找到能够按我想要的规模进行回归的 js 库。 CSV 可能大约有 300,000 行。我对 JS 比较陌生,不想从头开始写这个,如果有人有 OLS 回归的方法,我将不胜感激。
没有包含 OLS 回归的现有统计库,但我在这里找到了它的代码。 http://trentrichardson.com/2010/04/06/compute-linear-regressions-in-javascript/
代码如下:
function linearRegression(y,x){
var lr = {};
var n = y.length;
var sum_x = 0;
var sum_y = 0;
var sum_xy = 0;
var sum_xx = 0;
var sum_yy = 0;
for (var i = 0; i < y.length; i++) {
sum_x += x[i];
sum_y += y[i];
sum_xy += (x[i]*y[i]);
sum_xx += (x[i]*x[i]);
sum_yy += (y[i]*y[i]);
}
lr['slope'] = (n * sum_xy - sum_x * sum_y) / (n*sum_xx - sum_x * sum_x);
lr['intercept'] = (sum_y - lr.slope * sum_x)/n;
lr['r2'] = Math.pow((n*sum_xy - sum_x*sum_y)/Math.sqrt((n*sum_xx-sum_x*sum_x)*(n*sum_yy-sum_y*sum_y)),2);
return lr;
}
var known_y = [1, 2, 3, 4];
var known_x = [5.2, 5.7, 5.0, 4.2];
var lr = linearRegression(known_y, known_x);
// lr.slope
// lr.intercept
// lr.r2
这无疑是我找到的最好的,并且可以轻松构建到 Backbone.js 框架中。
你可以使用这个: https://dirktoewe.github.io/nd4js/doc.html#nd.la.lstsq
工作正常。