如何在PHP中生成累积正态分布

时间:2010-11-29 14:41:07

标签: php math

有谁能告诉我如何在PHP中获得等效的Excel(NORMDIST(TRUE))函数?

我已尝试过PECL统计数据包(stats_dens_normal),但这似乎产生概率质量函数(相当于在Excel中使用NORMDIST,累积设置为FALSE)。

总而言之,我想使用PHP来获得相当于Excel的NORMDIST(x,mean,standard_dev TRUE)。

感谢任何帮助!

1 个答案:

答案 0 :(得分:11)

这里有一个用于近似累积正态分布的php方法:

http://abtester.com/calculator/

该方法将zscore作为输入。我的结果与excel的NORMDIST类似。

function cumnormdist($x)
{
  $b1 =  0.319381530;
  $b2 = -0.356563782;
  $b3 =  1.781477937;
  $b4 = -1.821255978;
  $b5 =  1.330274429;
  $p  =  0.2316419;
  $c  =  0.39894228;

  if($x >= 0.0) {
      $t = 1.0 / ( 1.0 + $p * $x );
      return (1.0 - $c * exp( -$x * $x / 2.0 ) * $t *
      ( $t *( $t * ( $t * ( $t * $b5 + $b4 ) + $b3 ) + $b2 ) + $b1 ));
  }
  else {
      $t = 1.0 / ( 1.0 - $p * $x );
      return ( $c * exp( -$x * $x / 2.0 ) * $t *
      ( $t *( $t * ( $t * ( $t * $b5 + $b4 ) + $b3 ) + $b2 ) + $b1 ));
    }
}