У меня есть следующая функция PHP, которую я использую для рисования линии тренда.Однако иногда она изображает линию ниже всех точек на графике рассеяния.Есть ли ошибка в моей функции или есть лучший способ сделать это.Я думаю, что это может быть связано с тем, что с линией, которую он производит, он рассматривает все остатки (расстояния от точек разброса до линии) как положительные, независимо от того, находятся ли они выше или ниже линии.
function linear_regression($x, $y) {
$n = count($x);
$x_sum = array_sum($x); $y_sum = array_sum($y);
$xx_sum = 0; $xy_sum = 0;
for($i = 0; $i < $n; $i++) { $xy_sum+=($x[$i]*$y[$i]); $xx_sum+=($x[$i]*$x[$i]); }
$m = (($n * $xy_sum) - ($x_sum * $y_sum)) / (($n * $xx_sum) - ($x_sum * $x_sum)); $b = ($y_sum - ($m * $x_sum)) / $n; return array("m"=>$m, "b"=>$b);
}