search for in the

 Last updated: Fri, 14 Jun 2013

# stats_standard_deviation

(PECL stats >= 1.0.0)

stats_standard_deviationReturns the standard deviation

### Description

float stats_standard_deviation ( array `\$a` [, bool `\$sample` = false ] )
Warning

This function is currently not documented; only its argument list is available.

`a`

`sample`

### Return Values

 Last updated: Fri, 14 Jun 2013

User Contributed Notes stats_standard_deviation - [4 notes]
Pascal Woerde
2 years ago
``` If you want one function for the population and sample, you can use this function: <?php function standard_deviation(\$aValues, \$bSample = false) {     \$fMean = array_sum(\$aValues) / count(\$aValues);     \$fVariance = 0.0;     foreach (\$aValues as \$i)     {         \$fVariance += pow(\$i - \$fMean, 2);     }     \$fVariance /= ( \$bSample ? count(\$aValues) - 1 : count(\$aValues) );     return (float) sqrt(\$fVariance); } ```
tripollite at gmail dot com
11 months ago
``` Function to calculate square of value - mean <?php function sd_square(\$x, \$mean) { return pow(\$x - \$mean,2); } ?> Function to calculate standard deviation (uses sd_square)    <?php 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)) ); } ?> works better if you don't add +1 to the count standard deviation of a constant must be 0 ( http://en.wikipedia.org/wiki/Standard_deviation ) different way : <?php class Tmath{     public static function variance(\$data, \$round = 2)     {         if( count(\$data) == 0 )             return NULL;         \$total_ecart = 0;         \$moyenne = self::moyenne(\$data, 10*\$round);         if( \$moyenne == 0)             return 0;         foreach( \$data as \$element)         {             \$total_ecart += pow(\$element, 2);         }         return round(\$total_ecart/count(\$data) - pow(\$moyenne,2),\$round);     }     public static function ecartType(\$data, \$round = 2)     {         return round(sqrt(self::variance(\$data,10*\$round)),2);     }     public static function moyenne(\$data, \$round = 2)     {         if( count(\$data) == 0 )             return NULL;         return round(array_sum(\$data)/count(\$data),\$round) ;     } } ?> ```
pmcdougl at gac dot edu
1 year ago
``` It should be known that this function also casts all of the values of the array to floats. If you pass an array of integers, they will come out as an array of floats. \$data = array(2,3,3,3,3,2,5); var_dump(\$data); \$standardDeviation = stats_standard_deviation(\$data); var_dump(\$data); Prints: array   0 => int 2   1 => int 3   2 => int 3   3 => int 3   4 => int 3   5 => int 2   6 => int 5 array   0 => float 2   1 => float 3   2 => float 3   3 => float 3   4 => float 3   5 => float 5   6 => float 2 ```
Sharon
3 years ago
``` If you don't have the stat package you can use these functions: <?php // 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) ); }  ?> ```