[ PHP ] 平均 分散 標準偏差を計算する

Pocket

ここでは、平均 分散 標準偏差の計算を行うサンプルを掲載しています。なお、ここでの標準偏差の計算は母集団全体を扱っています。標本抽出での計算を行いたい場合には、コメントにもあるように若干修正する必要があります。

スポンサーリンク

偏差値と標準偏差

ここでの説明は割愛しますが、テストの偏差値と標準偏差は別物ですが同じようなものです。個人にスポットを当てているか全体にスポットを当てているかの違いです。いいえ、この例えは間違いなような気もします。いい例えが思いつきません。偏差値を求めるためには標準偏差を求める必要があります。つまり進化の過程です。すなわち標準偏差と偏差値の関係は、下図のようになるということかもしれません。

標準偏差と偏差値の関係

標準偏差と偏差値の関係

悪ふざけが過ぎました。反省します。

 

平均 分散 標準偏差を計算するサンプル

class calc
{
    /*
     * 平均値を求める
     */
    public static function average(array $values)
    {
        return (float) (array_sum($values) / count($values));
    }

    /*
     * 分散を求める
     * 分散 =((データ-平均値)の2乗)の総和 ÷ 個数
     */
    public static function variance(array $values)
    {
        // 平均値を求める
        $ave = self::average($values);

        $variance = 0.0;
        foreach ($values as $val) {
            $variance += pow($val - $ave, 2);
        }
        // 標本抽出の場合は count($values) ⇒ count($values) - 1
        return (float) ($variance / count($values));
    }

    /*
     * 標準偏差を求める
     */
    public static function standard_deviation(array $values)
    {
        // 分散を求める
        $variance = self::variance($values);

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

// 計算対象のデータ
$values = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

// 平均値を求める
var_dump(calc::average($values));
// float 5.5

// 分散を求める
var_dump(calc::variance($values));
// float 8.25

// 標準偏差を求める
var_dump(calc::standard_deviation($values));
// float 2.872281323269

PECL には標準偏差の計算を行う関数も用意されていますが、拡張ライブラリでの提供ですので標準で使用することができません。しかし、ここで紹介したサンプルよりも優れたサンプルが投稿されています。悪ふざけもありませんので、下記の参考リンクより確認ください。

参考

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *