/** * 简单线性回归算法 * @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
时间: 2024-10-20 13:00:30