数字数组的简单方差和标准差



我一直在阅读有关 PHP 标准差和方差的所有内容,在这里和那里找到了很多在线示例,但仍然没有一个给我与 Excel 相同的结果。

假设我有:

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

我只想要数组中这些数字的方差和标准偏差......

有什么简单直接的线索吗?

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 "nnRESULTS:n";
echo "nVariance: " . $stat->variance;
echo "nDeviation: " . $stat->deviation;

这个逐步的过程是从Google帮助页面复制的,尽管我已经做了无数次。 我很容易忘记。要计算数字数组的标准偏差:

  1. 计算平均值(数字的简单平均值(
  2. 然后对于每个数字:减去平均值并平方结果。
  3. 然后计算出这些平方差的平均值。
  4. 取它的平方根,我们就完成了!

另请注意:标准差只是方差的平方根。 (所以第 3 步是"方差",第 4 步是"标准差"(

这是一个链接,确切地显示了如何在PHP中做到这一点。

[https://www.geeksforgeeks.org/php-程序查找标准偏差数组/][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));
?>