Я читал все о стандартном отклонении и дисперсии в PHP, нашел много примеров в сети здесь и там, но до сих пор ни один из них не дал мне такой же результат, как в Excel.
Скажи, что у меня есть:
$array1 = array(5,46,37,21,8,55,1);
Я просто хочу, чтобы дисперсия и стандартное отклонение этих чисел в массиве …
Любая простая прямая подсказка?
Эта пошаговая процедура скопирована со страницы справки Google, хотя я проделал это огромное количество времени. Я легко забываю Чтобы рассчитать стандартное отклонение массива чисел:
Также обратите внимание: стандартное отклонение — это просто квадратный корень из дисперсии. …
(Таким образом, Шаг 3 — «Дисперсия», а Шаг 4 — «Стандартное отклонение»)
Вот ссылка, которая показывает, как именно это сделать в PHP.
[https://www.geeksforgeeks.org/php-program-find-standard-deviation-array/][1]Вот этот код скопирован на этот пост:
Чтобы вычислить стандартное отклонение, мы должны сначала рассчитать дисперсию. Дисперсия может быть рассчитана как сумма квадратов разностей между всеми числами и средними. Наконец, чтобы получить стандартное отклонение, мы будем использовать формулу √ (дисперсия / no_of_elements).
Ниже приведена реализация в PHP для расчета стандартного отклонения:
<?php
// function to calculate the standard deviation
// of array elements
function Stand_Deviation($arr)
{
$num_of_elements = count($arr);
$variance = 0.0;
// calculating mean using array_sum() method
$average = array_sum($arr)/$num_of_elements;
foreach($arr as $i)
{
// sum of squares of differences between
// all numbers and means.
$variance += pow(($i - $average), 2);
}
return (float)sqrt($variance/$num_of_elements);
}
// Input array
$arr = array(2, 3, 5, 6, 7);
print_r(Stand_Deviation($arr));
?>
https://www.mathsisfun.com/data/standard-deviation.html
class SomeClass
{
public $variance = 0.0;
public $deviation = 0.0;
public function run(array $array = [])
{
if (empty($array)) {
echo "Passed array can't be empty and must contain only numbers.";
die();
}
$this->variance = $this->getVariance($array);
$this->deviation = $this->getStdDeviation($this->variance);
}
/**
* Calculate variance.
* Note: If no huge number of items we will not use "Sample" variance (but n items instead: n-1 items)
*
* @param array $arrayOfNumbers
* @return float
*/
private function getVariance(array $arrayOfNumbers)
{
$variance = 0.0;
$totalElementsInArray = count($arrayOfNumbers);
// Calc Mean.
$averageValue = array_sum($arrayOfNumbers) / $totalElementsInArray;
foreach ($arrayOfNumbers as $item) {
$variance += pow(abs($item - $averageValue), 2);
}
return $variance;
}
/**
* Simple deviation.
*
* @param float $variance
* @return float
*/
private function getStdDeviation($variance)
{
return (float)sqrt($variance);
}
}
$stat = new SomeClass;
$stat->run([5,46,37,21,8,55,1]);
echo "\n\nRESULTS:\n";
echo "\nVariance: " . $stat->variance;
echo "\nDeviation: " . $stat->deviation;