<?php
//Arithmetic Mean
function mean( $set )
{
$n = count( $set );
$sum = array_sum( $set );
return $sum/$n;
}
//Median
function median( $set )
{
$n = count($set);
if( $n % 2 )
{
return $set[ ($n-1)/2 ];
}
else
{
//Mean of two middle values
return mean( Array($set[$n/2 - 1], $set[$n/2]) );
}
}
//Mode / Modal Score
function mode( $set )
{
$n = count($set);
$frequencies = Array();
foreach( $set as $number )
{
if( isset($frequencies[$number]) )
{ $frequencies[$number] ++; }
else
{ $frequencies[$number] = 1; }
}
arsort($frequencies);
reset( $frequencies );
if( current($frequencies) == 1 && $n != 1 )
{ return null; }
else
{ return key($frequencies); }
}
//Geometric Mean
function geometric_mean( $set )
{
$n = count($set);
$product = array_product($set);
return pow( $product, 1/$n );
}
//Basic Range
function stat_range( $set )
{
$n = count( $set );
if( $n == 1 )
{
return 0;
}
else
{
return end( $set ) - reset( $set );
}
}
//Sample Variance
function sample_variance( $set )
{
$n = count( $set );
if( $n == 1 )
{
return 0;
}
else
{
$numerator = 0;
$mean = mean( $set );
foreach( $set as $number )
{
$numerator += pow( $number-$mean, 2 );
}
return $numerator / ($n-1);
}
}
//Standard Deviation of a sample
function standard_deviation( $set )
{
return sqrt( sample_variance( $set ) );
}
//Coefficient of Variation
function coefficient_of_variation( $set )
{
$mean = mean($set);
if( $mean == 0 )
{
return null;
}
else
{
return ( standard_deviation($set)/$mean ) * 100;
}
}