downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

stats_stat_binomial_coef> <stats_skew
[edit] Last updated: Fri, 26 Apr 2013

view this page in

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.

Parameters

a

sample

Return Values



stats_stat_binomial_coef> <stats_skew
[edit] Last updated: Fri, 26 Apr 2013
 
add a note add a note User Contributed Notes stats_standard_deviation - [4 notes]
up
1
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);
}
up
0
tripollite at gmail dot com
10 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) ;
    }
}
?>
up
0
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
up
0
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) );
}

 
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites