z的分数(标准偏差和平均值)在PHP中

问题描述:

我想用PHP计算Z分数。从本质上讲,我正在寻找计算数据集(PHP数组)的平均值和标准偏差的最有效方法。有关如何在PHP中执行此操作的任何建议?z的分数(标准偏差和平均值)在PHP中

我想在最小的步数中做到这一点。

计算平均值,你可以这样做:

$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)); 
} 

马上this page

+1

PHP stats_standard_deviation()函数执行C++代码,运行速度比用PHP代码编写的等效函数快得多。 – geofflee 2016-08-11 06:48:41

+0

stats_standard_deviation中的php“built”会返回与您提供的'sd()'函数不同的值。我使用Excel STDDEV进行了检查,它与您的匹配,但有趣的是,stats_standard_deviation似乎返回了95%的置信度......并不完全符合Excel CONFIDENCE函数返回的结果,但非常接近。 – Hank 2012-10-09 12:51:42

+0

这是因为stats_standard_deviation()默认计算**总体**标准偏差,而Excel STDEV则计算**样本**标准差。要获得相同的结果,您必须使用Excel STDEVP或使用$ sample = true调用stats_standard_deviation()。要理解为什么样本与人口之间存在差异,请参阅[贝塞尔更正](https://en.wikipedia.org/wiki/Bessel%27s_correction)。 – geofflee 2016-08-11 06:47:03

如何使用内置的统计数据包像stats_standard_deviationstats_harmonic_mean。我找不到标准方法的功能,但如果您知道有关统计的任何信息,我相信您可以使用内置函数找出问题。

+1

然后有一个upvote :-)鉴于这是最好的答案(“最小步数”和(可能)“最有效的方式”)。 (也许有人不满意说_built-in_;你必须做“sudo pecl install stats”,然后编辑php.ini) – 2011-11-04 08:35:45

+0

@DarrenCook哈,谢谢! – rockerest 2011-11-05 02:20:16

+0

@DarrenCook我不知道这个问题是否有作曲家更新。我与pear/pecl的痛点是作为重新分配的应用程序开发人员,您永远不知道客户何时/是否可以使用pear。作曲家帮助改变:-)只需0.02美元。 PS - Upvote为你摇滚乐 – 2014-04-17 20:44:32

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); 
}