Mon*_*ing 0 php math statistics
有没有人将逆卡方分布作为PHP函数?我基本上需要等价.excel函数CHIINV但可用于PHP.
或者任何人都可以在PHP中编写此函数?非常感谢任何人.
从微软站点获取的excel函数信息:CHIINV(p,df)是CHIDIST(x,df)的反函数.对于任何特定的x,CHIDIST(x,df)返回具有df自由度的卡方分布随机变量大于或等于x的概率.
实际上我在这里做了工作:
function AChiSq($p,$n) {
$v=0.5;
$dv=0.5;
$x=0;
while($dv>1e-15) {
$x=1/$v-1;
$dv=$dv/2;
if (ChiSq($x,$n)>$p) {
$v=$v-$dv;
}
else {
$v=$v+$dv;
}
}
return $x;
}
function Norm($z) {
$q=$z*$z;
if (abs($z)>7)
return (1-1/$q+3/($q*$q))*exp(-$q/2)/(abs($z)*sqrt($PiD2));
else
return ChiSq($q,1);
}
function ChiSq($x,$n) {
if ($x>1000 || $n>1000) {
$q=Norm((pow($x/$n,1/3)+2/(9*$n)-1)/sqrt(2/(9*$n)))/2;
if ($x>$n)
return $q;
else
return 1-$q;
}
$p=exp(-0.5*$x);
if(($n%2)==1) { $p=$p*sqrt(2*$x/$Pi); }
$k=$n;
while($k>=2) {
$p=$p*$x/$k;
$k=$k-2;
}
$t=$p;
$a=$n;
while($t>1e-15*$p) {
$a=$a+2;
$t=$t*$x/$a;
$p=$p+$t;
}
return 1-$p;
}
function calppm($conf,$fails,$total)
{
$E5 = $conf/100;
$F5 = $fails;
$G5 = $total;
$I5 = AChiSq((1-$E5),(2*($F5+1)))*1000000/(2*$G5);
return round($I5);
}
//echo calppm(60,0,50000); //18
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |