Z-Scores (стандартное отклонение и среднее значение) в PHP
Я пытаюсь вычислить Z-баллы, используя PHP. По сути, я ищу наиболее эффективный способ вычисления среднего и стандартного отклонения набора данных (массив PHP). Любые предложения о том, как это сделать в PHP?
Я пытаюсь сделать это с наименьшим числом шагов.
Ответы
Ответ 1
чтобы вычислить среднее значение, которое вы можете сделать:
$mean = array_sum($array)/count($array)
стандартное отклонение выглядит так:
// Function to calculate square of value - mean
function sd_square($x, $mean) { return pow($x - $mean,2); }
// Function to calculate standard deviation (uses sd_square)
function sd($array) {
// square root of sum of squares devided by N-1
return sqrt(array_sum(array_map("sd_square", $array, array_fill(0,count($array), (array_sum($array) / count($array)) ) ) ) / (count($array)-1) );
}
прямо эта страница
Ответ 2
Как использовать встроенный пакет статистики, например stats_standard_deviation и stats_harmonic_mean. Я не могу найти функцию для стандартных средств, но если вы знаете что-нибудь о статистике, я уверен, что вы можете что-то понять, используя встроенные функции.
Ответ 3
function standard_deviation($aValues)
{
$fMean = array_sum($aValues) / count($aValues);
//print_r($fMean);
$fVariance = 0.0;
foreach ($aValues as $i)
{
$fVariance += pow($i - $fMean, 2);
}
$size = count($aValues) - 1;
return (float) sqrt($fVariance)/sqrt($size);
}
Ответ 4
Это тот же код std dev со страниц php, который упоминался в верхнем ответе, но немного модернизированный, без магии в одну строку и отдельной вспомогательной функции:
function calculateStdDev(array $array): float
{
$size = count($array);
$mean = array_sum($array) / $size;
$squares = array_map(function ($x) use ($mean) {
return pow($x - $mean, 2);
}, $array);
return sqrt(array_sum($squares) / ($size - 1));
}