用php计算正态分布概率

用php计算正态分布概率,php,probability,distribution,normal-distribution,Php,Probability,Distribution,Normal Distribution,我需要用这个表从给定的z值得到概率: 我相信应该有更好的方法在php上获取这些值,但我不知道如何计算它们。 任何帮助都将不胜感激。我相信,这张表是CDF的。我用表达式为它编码 近似值 代码未经测试 function sgn( $x ) { if ( $x < 0 ) return -1; return 1; } function erf( $x ) { $e = exp(-$x*$x); $e2 = exp(-$x*$x*2); $q = sqrt(pi

我需要用这个表从给定的z值得到概率:

我相信应该有更好的方法在php上获取这些值,但我不知道如何计算它们。
任何帮助都将不胜感激。

我相信,这张表是CDF的。我用表达式为它编码 近似值

代码未经测试

function sgn( $x ) {
  if ( $x < 0 )
    return -1;
  return 1;
}

function erf( $x ) {
  $e  = exp(-$x*$x);
  $e2 = exp(-$x*$x*2);

  $q = sqrt(pi())/2 + 31*$e/200 - 341*$e2/8000;

  return 2*sgn($x)*sqrt(1-$e)*$q/sqrt(pi());
}

function CDF( $x ) {
    return (1 + erf($x / sqrt(2))) / 2;
}

print_r(CDF(0));
print_r(CDF(0.1));
....    

欢迎要提问,请阅读和,以及如何创建和。我们非常愿意帮助您修复代码,但我们不为您编写代码。对不起。这不是因为我懒惰,而是因为我缺乏足够的数学知识来解决它。我只是想知道是否有人在我之前遇到过这个问题,因为它对于一般的统计目的似乎非常有用。很抱歉您是否考虑过通过
PHP
将数据输入
R
?非常感谢!。我刚刚测试过,我认为结果相当准确,尽管数值不完全相同。@LuisHP很高兴听到这个消息。值不一样是因为我对
erf()
函数只使用了简单的两项近似(Burmann级数)。您可以查看维基百科关于
erf()
的文章,并将近似值扩展到4个术语,这将改善结果。如果你对答案满意,请接受它
function erf( $x ) {
  $e = exp(-$x*$x);
  $t = 1.0 - $e;

  $s = 1. + $t*(-1./12. + $t*(-7./480. + $t*( -5./896. +$t * (-787./276480.))));

  return 2.*sgn($x)*sqrt($t)*$s/sqrt(pi());
}