Пример #1
0
    if ($i == 0) {
        $lowVal = $row["rain"];
        $lowYear = $row["year"];
    }
    if ($i == $rowcount - 1) {
        $hiVal = $row["rain"];
        $hiYear = $row["year"];
    }
    if (array_key_exists($row["rain"], $data)) {
        $data[$row["rain"]] += 1;
    } else {
        $data[$row["rain"]] = 1;
    }
    $rdata[] = floatval($row["rain"]);
}
$stddev = standard_deviation($rdata);
$xdata = array();
$ydata = array();
$running = $rowcount;
$h5 = -99;
$hm = -99;
$h95 = -99;
$i = 0;
for ($r = $lowVal; $r <= $hiVal; $r = $r + 0.01) {
    $xdata[] = sprintf("%.2f", $r);
    $s = sprintf("%.2f", $r);
    if (array_key_exists($s, $data)) {
        $running -= $data[$s];
    }
    $c = $running / $rowcount * 100.0;
    $ydata[] = $c;
Пример #2
0
function calculateOverallStatistics(&$rra, &$samples)
{
    global $percent, $stddev, $ds_min, $ds_max, $var_kills, $std_kills;
    $rra_num = 0;
    if (sizeof($rra)) {
        foreach ($rra as $dses) {
            $ds_num = 0;
            if (sizeof($dses)) {
                foreach ($dses as $ds) {
                    if (isset($samples[$rra_num][$ds_num])) {
                        $rra[$rra_num][$ds_num]["standard_deviation"] = standard_deviation($samples[$rra_num][$ds_num]);
                        if ($rra[$rra_num][$ds_num]["standard_deviation"] == "NAN") {
                            $rra[$rra_num][$ds_num]["standard_deviation"] = 0;
                        }
                        $rra[$rra_num][$ds_num]["average"] = $rra[$rra_num][$ds_num]["sumofsamples"] / $rra[$rra_num][$ds_num]["numsamples"];
                        $rra[$rra_num][$ds_num]["min_cutoff"] = $rra[$rra_num][$ds_num]["average"] - $stddev * $rra[$rra_num][$ds_num]["standard_deviation"];
                        if ($rra[$rra_num][$ds_num]["min_cutoff"] < $ds_min[$ds_num]) {
                            $rra[$rra_num][$ds_num]["min_cutoff"] = $ds_min[$ds_num];
                        }
                        $rra[$rra_num][$ds_num]["max_cutoff"] = $rra[$rra_num][$ds_num]["average"] + $stddev * $rra[$rra_num][$ds_num]["standard_deviation"];
                        if ($rra[$rra_num][$ds_num]["max_cutoff"] > $ds_max[$ds_num]) {
                            $rra[$rra_num][$ds_num]["max_cutoff"] = $ds_max[$ds_num];
                        }
                        $rra[$rra_num][$ds_num]["numnksamples"] = 0;
                        $rra[$rra_num][$ds_num]["sumnksamples"] = 0;
                        $rra[$rra_num][$ds_num]["avgnksamples"] = 0;
                        /* go through values and find cutoffs */
                        $rra[$rra_num][$ds_num]["stddev_killed"] = 0;
                        $rra[$rra_num][$ds_num]["variance_killed"] = 0;
                        if (sizeof($samples[$rra_num][$ds_num])) {
                            foreach ($samples[$rra_num][$ds_num] as $sample) {
                                if ($sample > $rra[$rra_num][$ds_num]["max_cutoff"] || $sample < $rra[$rra_num][$ds_num]["min_cutoff"]) {
                                    debug(sprintf("Std Kill: Value '%.4e', StandardDev '%.4e', StdDevLimit '%.4e'", $sample, $rra[$rra_num][$ds_num]["standard_deviation"], $rra[$rra_num][$ds_num]["max_cutoff"] * (1 + $percent)));
                                    $rra[$rra_num][$ds_num]["stddev_killed"]++;
                                    $std_kills = true;
                                } else {
                                    $rra[$rra_num][$ds_num]["numnksamples"]++;
                                    $rra[$rra_num][$ds_num]["sumnksamples"] += $sample;
                                }
                                if ($rra[$rra_num][$ds_num]["variance_avg"] == "NAN") {
                                    /* not enought samples to calculate */
                                } else {
                                    if ($sample > $rra[$rra_num][$ds_num]["variance_avg"] * (1 + $percent)) {
                                        /* kill based upon variance */
                                        debug(sprintf("Var Kill: Value '%.4e', VarianceDev '%.4e', VarianceLimit '%.4e'", $sample, $rra[$rra_num][$ds_num]["variance_avg"], $rra[$rra_num][$ds_num]["variance_avg"] * (1 + $percent)));
                                        $rra[$rra_num][$ds_num]["variance_killed"]++;
                                        $var_kills = true;
                                    }
                                }
                            }
                        }
                        if ($rra[$rra_num][$ds_num]["numnksamples"] > 0) {
                            $rra[$rra_num][$ds_num]["avgnksamples"] = $rra[$rra_num][$ds_num]["sumnksamples"] / $rra[$rra_num][$ds_num]["numnksamples"];
                        }
                    } else {
                        $rra[$rra_num][$ds_num]["standard_deviation"] = "N/A";
                        $rra[$rra_num][$ds_num]["average"] = "N/A";
                        $rra[$rra_num][$ds_num]["min_cutoff"] = "N/A";
                        $rra[$rra_num][$ds_num]["max_cutoff"] = "N/A";
                        $rra[$rra_num][$ds_num]["numnksamples"] = "N/A";
                        $rra[$rra_num][$ds_num]["sumnksamples"] = "N/A";
                        $rra[$rra_num][$ds_num]["avgnksamples"] = "N/A";
                        $rra[$rra_num][$ds_num]["stddev_killed"] = "N/A";
                        $rra[$rra_num][$ds_num]["variance_killed"] = "N/A";
                        $rra[$rra_num][$ds_num]["stddev_killed"] = "N/A";
                        $rra[$rra_num][$ds_num]["numnksamples"] = "N/A";
                        $rra[$rra_num][$ds_num]["sumnksamples"] = "N/A";
                        $rra[$rra_num][$ds_num]["variance_killed"] = "N/A";
                        $rra[$rra_num][$ds_num]["avgnksamples"] = "N/A";
                    }
                    $ds_num++;
                }
            }
            $rra_num++;
        }
    }
}
Пример #3
0
<?php

include "_db.php";
$q = mysql_query("Select * from barang_keluar");
$sd = array();
while ($rw = mysql_fetch_array($q)) {
    $sd[] = $rw['jumlah'];
}
echo standard_deviation($sd);
function standard_deviation($aValues)
{
    $fMean = array_sum($aValues) / count($aValues);
    //print_r($fMean);
    $fVariance = 0.0;
    foreach ($aValues as $i) {
        $fVariance += pow($i - $fMean, 2);
    }
    $size = count($aValues) - 1;
    return (double) sqrt($fVariance) / sqrt($size);
}
     echo '<br /><a href="' . $RootPath . '/index.php">' . _('Back to the menu') . '</a>';
     if ($debug == 1) {
         echo '<br />' . $SQL;
     }
     include 'includes/footer.inc';
     exit;
 }
 $OnOrdRow = DB_fetch_array($OnOrdResult);
 $LeftOvers = $pdf->addTextWrap($Left_Margin, $YPos, 60, $FontSize, $InventoryPlan['stockid'], 'left');
 $LeftOvers = $pdf->addTextWrap(100, $YPos, 150, 6, $InventoryPlan['description'], 'left');
 $AverageOfLast4Months = $SalesRow['4mthtotal'] / 4;
 $LeftOvers = $pdf->addTextWrap(251, $YPos, 50, $FontSize, locale_number_format($AverageOfLast4Months, 1), 'right');
 $MaxMthSales = Max($SalesRow['prd1'], $SalesRow['prd2'], $SalesRow['prd3'], $SalesRow['prd4']);
 $LeftOvers = $pdf->addTextWrap(309, $YPos, 50, $FontSize, locale_number_format($MaxMthSales, 0), 'right');
 $Quantities = array($SalesRow['prd1'], $SalesRow['prd2'], $SalesRow['prd3'], $SalesRow['prd4']);
 $StandardDeviation = standard_deviation($Quantities);
 $LeftOvers = $pdf->addTextWrap(359, $YPos, 50, $FontSize, locale_number_format($StandardDeviation, 2), 'right');
 $LeftOvers = $pdf->addTextWrap(409, $YPos, 50, $FontSize, locale_number_format($InventoryPlan['monthsleadtime'], 1), 'right');
 $RequiredStockInSupplyChain = $AverageOfLast4Months * ($_POST['NumberMonthsHolding'] + $InventoryPlan['monthsleadtime']);
 $LeftOvers = $pdf->addTextWrap(456, $YPos, 50, $FontSize, locale_number_format($RequiredStockInSupplyChain, 0), 'right');
 $LeftOvers = $pdf->addTextWrap(597, $YPos, 40, $FontSize, locale_number_format($InventoryPlan['qoh'], 0), 'right');
 $LeftOvers = $pdf->addTextWrap(638, $YPos, 40, $FontSize, locale_number_format($TotalDemand, 0), 'right');
 $LeftOvers = $pdf->addTextWrap(679, $YPos, 40, $FontSize, locale_number_format($OnOrdRow['qtyonorder'], 0), 'right');
 $SuggestedTopUpOrder = $RequiredStockInSupplyChain - $InventoryPlan['qoh'] + $TotalDemand - $OnOrdRow['qtyonorder'];
 if ($SuggestedTopUpOrder <= 0) {
     $LeftOvers = $pdf->addTextWrap(730, $YPos, 40, $FontSize, _('Nil'), 'center');
 } else {
     $LeftOvers = $pdf->addTextWrap(720, $YPos, 40, $FontSize, locale_number_format($SuggestedTopUpOrder, 0), 'right');
 }
 if ($YPos < $Bottom_Margin + $line_height) {
     $PageNumber++;
Пример #5
0
{
    $sum = 0;
    $len = count($nums);
    for ($i = 0; $i < $len; $i++) {
        $sum += $nums[$i];
    }
    return $sum / $len;
}
function variance($nums)
{
    $v = 0;
    $average = average($nums);
    $len = count($nums);
    for ($i = 0; $i < $len; $i++) {
        $v += pow($nums[$i] - $average, 2);
    }
    return $v / $len;
}
function standard_deviation($nums)
{
    return sqrt(variance($nums));
}
while (true) {
    fscanf(STDIN, "%d", $noitem);
    if ($noitem == 0) {
        break;
    }
    $nums = array_map("intval", explode(" ", trim(fgets(STDIN))));
    $standard_deviation = standard_deviation($nums);
    printf("%.6f\n", $standard_deviation);
}