用php计算正态分布概率
我需要用这个表从给定的z值得到概率: 我相信应该有更好的方法在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
任何帮助都将不胜感激。我相信,这张表是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());
}