UNPKG

@antv/t8

Version:

T8 is a text visualization solution for unstructured data within the AntV technology stack, and it is a declarative T8 markdown syntax that can be used to describe the content of data interpretation reports.

41 lines (38 loc) 1.16 kB
'use strict'; /** * use least square method to fit a line to the points * @param points points to fit * @returns {k, b} the slope and intercept of the line */ function linearRegression(points) { if (!points || points.length < 2) { throw new Error('Points array must contain at least two points for linear regression.'); } var n = points.length; var sumX = 0; var sumY = 0; for (var _i = 0, points_1 = points; _i < points_1.length; _i++) { var p = points_1[_i]; sumX += p.x; sumY += p.y; } var meanX = sumX / n; var meanY = sumY / n; var numerator = 0; var denominator = 0; for (var _a = 0, points_2 = points; _a < points_2.length; _a++) { var p = points_2[_a]; var diffX = p.x - meanX; var diffY = p.y - meanY; numerator += diffX * diffY; denominator += diffX * diffX; } if (denominator === 0) { return { k: 0, b: meanY }; } var k = numerator / denominator; var b = meanY - k * meanX; return { k: k, b: b }; } exports.linearRegression = linearRegression; //# sourceMappingURL=linearRegression.js.map