Skip to content

Instantly share code, notes, and snippets.

@xpaco
Last active September 27, 2020 12:42
Show Gist options
  • Select an option

  • Save xpaco/eac3037c46bf96daf4c75f3f02900fd5 to your computer and use it in GitHub Desktop.

Select an option

Save xpaco/eac3037c46bf96daf4c75f3f02900fd5 to your computer and use it in GitHub Desktop.
Вычисление среднего значения из ряда чисел с выделением (и удалением) аномальных значений
private function averageNormaly(array $numbers)
{
$n = count($numbers);
$average = 0;
foreach ($numbers as $number) {
$average += $number['value'];
}
$average = $average / $n;
//От каждого значения выборки отнимаем среднее арифметическое.
//Каждую полученную разницу возводим в квадрат.
//Суммируем полученные значения квадратов разниц
$standardDeviation = 0;
foreach ($numbers as $number) {
$x = $numbers['value'] - $average;
$x = $x * $x;
$standardDeviation += $x;
}
$nn = $n - 1;
$standardDeviation = $standardDeviation / $nn;
$standardDeviation = sqrt($standardDeviation);
$up = $average + $standardDeviation;
$down = $average - $standardDeviation;
$averageNormal = 0;
$xn = 0;
// Считаем среднее арифметическое без чисел выпавших из стандартного отклонения
foreach ($numbers as $number) {
if ($number['value'] <= $up AND $number['value'] >= $down) {
$averageNormal += $number['value'];
$xn++;
}
}
$averageNormal = $averageNormal / $xn;
return $averageNormal;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment