PHP 计算Cpk以及标准差

2018-12-17  本文已影响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的值了。

上一篇 下一篇

猜你喜欢

热点阅读