統計を計算するクラスを実装してみた[PHP][標準偏差][偏差値]

PECLの統計クラスが使えないので自分で実装してみた

<?php

$target = mt_rand(0, 100);
// generate Test Data
$arr = array();
for($i=0; $i<10; $i++){
    array_push($arr, mt_rand(0, 100));
}

echo " ターゲット値: $target <br />";
echo "偏差値: " . Statistics::standardScore($target, $arr);

class Statistics
{
    public static function average(array $values)
    {
        return (float) (array_sum($values) / count($values));
    }
    
    public static function variance(array $values)
    {
        // 平均値を求める
        $ave = self::average($values);

        $variance = 0.0;
        foreach ($values as $val) {
            $variance += pow($val - $ave, 2);
        }
        return (float) ($variance / count($values));
    }

    public static function standardDeviation(array $values)
    {
        // 分散を求める
        $variance = self::variance($values);

        // 分散の平方根
        return (float) sqrt($variance);
    }

    //偏差値を求める
    public static function standardScore( $target, array $arr)
    {
        return ( $target - self::average($arr) ) / self::standardDeviation($arr) * 10 + 50;
    }
}

?>