Sarajevo, Bosnia and Herzegovina

Mean, Variance, Standard deviation, Skewness and kurtosis in PHP

/**
* Calculate standard deviation of array, by definition it is square root of variance
* @param (array) $aValues
* @return float
*/
function standard_deviation($aValues, $bSample = false)
{
$fVariance = variance($aValues, $bSample);
return (float) sqrt($fVariance);
}
/**
* Calculate Skewness and Kurtosis, two parameters are sent by reference, so be carefull
* @param (array) $array, (reference float) &$skew, (reference float) &$kurt
*/
function skewnessandkurtosis($array, &$skew, &$kurt) {
$skew = "N/A";
$kurt = "N/A";
$amount = count($array);
if ($amount > 2) {
for ($i = 0, $m2 =0,$m3=0,$m4=0; $i < $amount; $i++) {
$array [$i] -= average($array);
$m2 += pow($array[$i], 2);
$m3 += pow($array[$i], 3);
$m4 += pow($array[$i], 4);
}
$m2 /= $amount;
$m3 /= $amount;
$m4 /= $amount;
$skew = $m3 / pow($m2, 1.5);
$skew *= sqrt($amount*($amount-1))/ ($amount-2);
if ($amount > 3) {
$kurt = ($m4/ pow($m2, 2))-3;
$kurt = (($amount+1)*$kurt)+6;
$kurt *= ($amount-1)/(($amount-2)*($amount-3));
}
}
}

?>

Happy PHP-ing 🙂