美文网首页
PHP 计算Cpk以及标准差

PHP 计算Cpk以及标准差

作者: 坏小子还不投降 | 来源:发表于2018-12-17 22:32 被阅读0次

    Cpk 计算公式

    Min ((USL-average)/3s, (average-LSL)/3s)

    USL: 规格上限

    LSL: 规格下限

    average: 样本平均值

    s: 样本标准差

    例子如下:

     <?php
      // php版本要5.4以上,不然不支持下面的数组声明方式
      $list = [21.3,21.4,21.6,15.6,18.6,17,16,19,20,11,22,21.2,21.3,21.4,21.6,15.6,18.6,17];
      $length = count($list);
      $average = array_sum($list)/$length;  // 平均值
      $high = 22;  // 最大值
      $low = 11;  // 最小值
      /**
         * 获取一组数据的标准差
         * @param  [int] $avg        // $list的平均值
         * @param  string $list  // 所要计算标准差的数据
         * @return [object]       [返回标准差]
     */
      function getVariance($avg, $list)
      {
          $total_var = 0;
          foreach ($list as $lv){
           $total_var += pow( ($lv - $avg), 2 );
          }
          return sqrt( $total_var / (count($list)-1));
      }
      $stdev = getVariance($average, $list);  // 标准差
      $cpu = number_format(($high-$average)/(3*$stdev),8);  // cpu
      $cpl = ($average - $low)/(3*$stdev);  // cpl
      $cpk = min($cpu, $cpl);    // cpk
      echo $stdev.'---'.$cpu.'---'.$cpl.'----'.$cpk;
    

    总结

    这次要做的功能模块涉及到了计算cpk,计算cpk的难点在于标准差的计算。开始打算通过phpExcel插件调用excel自带的函数计算标准差,但是没有找到操作的办法,只能对数据样本遍历进行计算标准差,得出标准差之后再套用cpk的公式就可以求出cpk的值了。

    相关文章

      网友评论

          本文标题:PHP 计算Cpk以及标准差

          本文链接:https://www.haomeiwen.com/subject/wfwbhqtx.html