stats_standard_deviation in php 5.2.13

Refresh

November 2018

Views

1.7k time

2

I am using PHP version 5.2.13 with Kohana framework v2.3.4 and I want to calculate the standard deviation.

I found a function in the PHP manual: stats_standard_deviation

The problem is that when I try I get this error:

Fatal error: Call to undefined function stats_standard_deviation() in /folder/test.php on line 1799

This is the code I am using:

 function std_dev ($attr, $test1,$test2,$test3,$test4,$test5,$test6) {
    $items[] = array();

    if (isset($test1) && $test1->$attr != 9 && $test1->$attr != 0) {
        $items[] = $test1->$attr;
    }
    if (isset($test2) && $test2->$attr != 9  && $test2->$attr != 0) {
        $items[] = $test2->$attr;
    }
    if (isset($test3) && $test3->$attr != 9 && $test3->$attr != 0) {
        $items[] = $test3->$attr;
    }
    if (isset($test4) && $test4->$attr != 9 && $test4->$attr != 0) {
        $items[] = $test4->$attr;
    }
    if (isset($test5) && $test5->$attr != 9 && $test5->$attr != 0) {
        $items[] = $test5->$attr;
    }
    if (isset($test6) && $test6->$attr != 9 && $test6->$attr != 0) {
        $items[] = $test6->$attr;
    }

    $standard_deviation = stats_standard_deviation($items);

    return round($standard_deviation,2);

}

All help will be appreciated.

Thanks!

2 answers

1

Как сказано в комментариях сказали, пакет PECL не установлен в вашей системе, смотрите здесь , чтобы установить.

Но, если вы не можете установить, или вы не хотите, чтобы установить его, вы можете использовать эту функцию

function std_deviation($arr){
    $arrsize=count($arr);
    $mu=array_sum($arr)/$arr_size;
    $ans=0;
    foreach($arr as $elem){
        $ans+=pow(($elem-$mu),2);
    }
    return $ans/$arr_size;
}

что следует стандартной формуле отклонения .

0

Это правильная реализация Std Dev. Он представляет один и тот же результат по сравнению с Excel.

function std_deviation ($arr)
{
    $arr_size = count($arr);
    $mu = array_sum ($arr) / $arr_size;
    $ans = 0;
    foreach ($arr as $elem) {
        $ans += pow(($elem - $mu), 2);
    }
    return sqrt($ans / $arr_size);
}