SunshinePHP 2016

# stats_stat_percentile

(PECL stats >= 1.0.0)

stats_stat_percentileNot documented

### Descrizione

float stats_stat_percentile ( float `\$df` , float `\$xnonc` )
Avviso

Questa funzione, al momento non è documentata; è disponibile soltanto la lista degli argomenti.

`df`

`xnonc`

### Valori restituiti

``` I have looked at the code available in the Math package for percentile. I compared the result obtained with percentile from Excel and found that it doesnt match. So i wrote my own percentile function and verified the result with the Excel's percentile. For those of you who need the percentile calculation of Excel in php.. <?php function mypercentile(\$data,\$percentile){     if( 0 < \$percentile && \$percentile < 1 ) {         \$p = \$percentile;     }else if( 1 < \$percentile && \$percentile <= 100 ) {         \$p = \$percentile * .01;     }else {         return "";     }     \$count = count(\$data);     \$allindex = (\$count-1)*\$p;     \$intvalindex = intval(\$allindex);     \$floatval = \$allindex - \$intvalindex;     sort(\$data);     if(!is_float(\$floatval)){         \$result = \$data[\$intvalindex];     }else {         if(\$count > \$intvalindex+1)             \$result = \$floatval*(\$data[\$intvalindex+1] - \$data[\$intvalindex]) + \$data[\$intvalindex];         else             \$result = \$data[\$intvalindex];     }     return \$result; } ?> The above code may not be elegant.. but it solves my problem.. yuvaraj ```
``` If you are looking to infer the percentile from a z-score, you can use this function. It's far from precise but does the job on most circumstances. The error function ( erf() )is based on the approximation on wikipedia: http://en.wikipedia.org/wiki/Error_function <?php function erf(\$x) {         \$pi = 3.1415927;         \$a = (8*(\$pi - 3))/(3*\$pi*(4 - \$pi));         \$x2 = \$x * \$x;         \$ax2 = \$a * \$x2;         \$num = (4/\$pi) + \$ax2;         \$denom = 1 + \$ax2;         \$inner = (-\$x2)*\$num/\$denom;         \$erf2 = 1 - exp(\$inner);         return sqrt(\$erf2); } function cdf(\$n) {         if(\$n < 0)         {                 return (1 - erf(\$n / sqrt(2)))/2;         }         else         {                 return (1 + erf(\$n / sqrt(2)))/2;         } } // EXAMPLE \$sample = 90; \$avg = 75; \$stddev = 12; \$zscore = (\$sample - \$avg) / \$stddev; print 'Percentile: ' . cdf(\$zscore) * 100 . "\n"; ?> Where \$n is the z-score The function cdf() returns the approximed cumulative standard normal distribution ([0..1]) [EDIT BY danbrown AT php DOT net: Contains a bugfix provided by (Ed) on 24-FEB-2010 which fixes the definition of \$a in erf() with the note that it is "out by a factor of -1" in the original code.] ```