Exemplo n.º 1
0
 function Percentiles($a)
 {
     sort($a);
     $n = sizeof($a);
     $mid = floor($n / 2);
     if ($n % 2 != 0) {
         $median = $a[$mid];
         $lower = Median(array_slice($a, 0, $mid + 1));
         // include median in both quartiles
         $upper = Median(array_slice($a, $mid));
     } else {
         $median = ($a[$mid - 1] + $a[$mid]) / 2.0;
         $lower = Median(array_slice($a, 0, $mid));
         $upper = Median(array_slice($a, $mid));
     }
     $maxwhisker = ($upper - $lower) * 1.5;
     $xlower = $lower - $maxwhisker < $a[0] ? $a[0] : $lower - $maxwhisker;
     $xupper = $upper + $maxwhisker > $a[$n - 1] ? $a[$n - 1] : $upper + $maxwhisker;
     return array($a[0], $xlower, $lower, $median, $upper, $xupper, $a[$n - 1], $n);
 }
Exemplo n.º 2
0
function TimeSizeShapes($FileName, $Tests, $Langs, $Incl, $Excl, $HasHeading = TRUE)
{
    list($data, $time_mins, $gz_mins) = ValidRowsAndMins($FileName, $Tests, $Langs, $Incl, $Excl, $HasHeading);
    $shapes = array();
    $medians = array();
    foreach ($data as $k => $test) {
        if (sizeof($test) / sizeof($Tests) > 0.5) {
            $points = array();
            $xs = array();
            $ys = array();
            unset($minpoint);
            foreach ($test as $t => $v) {
                // wait until now to filter so sizeof($test) is consistent with FullWeightedData
                if ($Tests[$t][TEST_WEIGHT] > 0) {
                    // normalized source code size on X, normalized measured time on Y
                    $x = $v[DATA_GZ] / $gz_mins[$t];
                    $y = $v[DATA_TIME] / $time_mins[$t];
                    $points[] = array($x, $y);
                    $xs[] = $x;
                    // collect for median
                    $ys[] = $y;
                    // collect for median
                }
            }
            $shapes[$k] = $points;
            sort($xs);
            $xm = Median($xs);
            sort($ys);
            $ym = Median($ys);
            $medians[$k] = array($xm, $ym);
            // median
        }
    }
    return array($shapes, $medians);
}