如何用js拟合直线

489 阅读1分钟

在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的函数来执行最小二乘法。该函数需要两个参数:xy,分别表示X和Y坐标的数组。函数将返回一个对象,其中包含拟合线的斜率、截距和R平方值。

要使用该函数,只需将X和Y坐标作为数组传递给该函数。在上面的示例中,我们使用了一组简单的数据,但您可以使用任何数据集来拟合直线。

希望这可以帮助您开始使用JavaScript拟合直线!