простая дисперсия & amp; стандартное отклонение для массива чисел

Я читал все о стандартном отклонении и дисперсии в PHP, нашел много примеров в сети здесь и там, но до сих пор ни один из них не дал мне такой же результат, как в Excel.

Скажи, что у меня есть:

  $array1 = array(5,46,37,21,8,55,1);

Я просто хочу, чтобы дисперсия и стандартное отклонение этих чисел в массиве …

Любая простая прямая подсказка?

0

Решение

Эта пошаговая процедура скопирована со страницы справки Google, хотя я проделал это огромное количество времени. Я легко забываю Чтобы рассчитать стандартное отклонение массива чисел:

  1. Вычислите Среднее (простое среднее число)
  2. Затем для каждого числа: вычтите среднее и возведите в квадрат результат.
  3. Затем определите среднее значение этих различий в квадрате.
  4. Возьмите квадратный корень из этого, и мы сделали!

Также обратите внимание: стандартное отклонение — это просто квадратный корень из дисперсии. …
(Таким образом, Шаг 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));

?>
0

Другие решения

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;
0

По вопросам рекламы [email protected]