2010-11-29 100 views
3

任何人都可以告诉我如何在PHP中获得Excel(NORMDIST(TRUE))函数的等价物吗?如何在PHP中生成累积正态分布

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

总之,我想用PHP来获得Excel的NORMDIST(x,mean,standard_dev TRUE)的等价物。

感谢任何帮助!

+0

我不打算在这里发布整个PHP代码,因为它是相当大的;但看看[PHPExcel](http://www.phpexcel.net)中的functions.php文件,它实现了NORMDIST(累计和非累计) – 2010-11-29 15:38:03

回答

9

还有这里近似累积正态分布一个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)); 
    } 
} 
+0

完美!有几个原因导致我无法在我的服务器上获得PECL统计信息包,并且这完全可以取代stats_cdf_normal($ x,0,1,1) – David 2016-02-20 21:19:09