在JavaScript中,可以使用最小二乘法来拟合一条直线。以下是一个简单的示例代码:
function linearRegression(x, y) {
var n = y.length;
var slope, intercept;
var sumX = 0, sumY = 0, sumXY = 0, sumXX = 0, sumYY = 0;
for (var i = 0; i < n; i++) {
sumX += x[i];
sumY += y[i];
sumXY += x[i] * y[i];
sumXX += x[i] * x[i];
sumYY += y[i] * y[i];
}
slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);
intercept = (sumY - slope * sumX) / n;
return {
slope: slope,
intercept: intercept,
r2: Math.pow((n * sumXY - sumX * sumY) / Math.sqrt((n * sumXX - sumX * sumX) * (n * sumYY - sumY * sumY)), 2)
};
}
// 用例
var x = [1, 2, 3, 4, 5];
var y = [1.5, 2.5, 3.5, 4.5, 5.5];
var regression = linearRegression(x, y);
console.log("斜率: " + regression.slope);
console.log("截距: " + regression.intercept);
console.log("R平方: " + regression.r2);
在上面的代码中,我们定义了一个名为linearRegression的函数来执行最小二乘法。该函数需要两个参数:x和y,分别表示X和Y坐标的数组。函数将返回一个对象,其中包含拟合线的斜率、截距和R平方值。
要使用该函数,只需将X和Y坐标作为数组传递给该函数。在上面的示例中,我们使用了一组简单的数据,但您可以使用任何数据集来拟合直线。
希望这可以帮助您开始使用JavaScript拟合直线!