/**
* 简单线性回归算法
* @param array y轴数据
* @param array x轴数据
* @returns array(slope,intercept,r2)
*/
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;
};
b=slope,a=intercept
y=a+bx
原文:http://my.oschina.net/leeldy/blog/499313