2010-11-29 101 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