php 5.2.13中的stats_standard_deviation

时间:2014-02-19 15:33:49

标签: php

我正在使用PHP版本5.2.13和Kohana框架v2.3.4,我想计算标准偏差。

我在PHP手册中找到了一个函数:stats_standard_deviation

问题在于,当我尝试时,我收到此错误:

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

这是我正在使用的代码:

 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);

}

所有帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:2)

这是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);
}

答案 1 :(得分:0)

正如评论所说,您的系统中未安装PECL软件包,请here进行安装。

但是,如果您无法安装,或者您不想安装它,则可以使用此功能

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);
}

standard deviation formula之后。