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;
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++; } } }
<?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++;
{ $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); }