@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
JavaScript
;
/**
* 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