List of usage examples for org.apache.commons.math.stat.descriptive DescriptiveStatistics getSum
public double getSum()
From source file:playground.artemc.pricing.SocialCostCalculator.java
private void calcStatistics() { // Get a DescriptiveStatistics instance DescriptiveStatistics tripStats = new DescriptiveStatistics(); DescriptiveStatistics tripStatsNormalized = new DescriptiveStatistics(); // Add the data from the array for (LegTrip legTrip : performedLegs) { double distance = 0.0; double cost = 0.0; for (LinkTrip linkTrip : legTrip.linkTrips) { double socialCosts = calcSocCosts(linkTrip.link_id, linkTrip.enterTime); if (socialCosts > 0.0) cost = cost + socialCosts; distance = legTrip.distance + network.getLinks().get(linkTrip.link_id).getLength(); }//from w ww.j a v a 2s .c o m legTrip.distance = distance; legTrip.cost = cost; tripStats.addValue(cost); /* * Normalize a legs social cost by dividing them by the leg travel time or leg distance. */ //double legTravelTime = legTrip.arrivalTime - legTrip.departureTime; if (cost > 0.0 && legTrip.distance > 0.0) tripStatsNormalized.addValue(cost / legTrip.distance); } // Compute some statistics double sum = tripStats.getSum(); double mean = tripStats.getMean(); double std = tripStats.getStandardDeviation(); double median = tripStats.getPercentile(50); double quantile25 = tripStats.getPercentile(25); double quantile75 = tripStats.getPercentile(75); double sumNormalized = tripStatsNormalized.getSum(); double meanNormalized = tripStatsNormalized.getMean(); double stdNormalized = tripStatsNormalized.getStandardDeviation(); double medianNormalized = tripStatsNormalized.getPercentile(50); double quantile25Normalized = tripStatsNormalized.getPercentile(25); double quantile75Normalized = tripStatsNormalized.getPercentile(75); log.info("Sum of all leg costs: " + sum); log.info("Mean leg costs: " + mean); log.info("Standard deviation: " + std); log.info("Median leg costs: " + median); log.info("25% quantile leg costs: " + quantile25); log.info("75% quantile leg costs: " + quantile75); log.info("Normalized sum of all leg costs: " + sumNormalized); log.info("Normalized mean leg costs: " + meanNormalized); log.info("Normalized standard deviation: " + stdNormalized); log.info("Normalized median leg costs: " + medianNormalized); log.info("Normalized 25% quantile leg costs: " + quantile25Normalized); log.info("Normalized 75% quantile leg costs: " + quantile75Normalized); meanSocialCosts.add(mean); medianSocialCosts.add(median); quantil25PctSocialCosts.add(quantile25); quantil75PctSocialCosts.add(quantile75); meanNormalizedSocialCosts.add(meanNormalized); medianNormalizedSocialCosts.add(medianNormalized); quantil25PctNormalizedSocialCosts.add(quantile25Normalized); quantil75PctNormalizedSocialCosts.add(quantile75Normalized); }
From source file:playground.christoph.socialcosts.SocialCostCalculator.java
private void calcStatistics() { // Get a DescriptiveStatistics instance DescriptiveStatistics stats = new DescriptiveStatistics(); DescriptiveStatistics statsNormalized = new DescriptiveStatistics(); // Add the data from the array for (LegTrip legTrip : performedLegs) { double costs = 0.0; for (LinkTrip linkTrip : legTrip.linkTrips) { double socialCosts = calcSocCosts(linkTrip.link_id, linkTrip.enterTime); if (socialCosts > 0.0) costs = costs + socialCosts; }//from w w w . j a v a 2s . c om stats.addValue(costs); /* * Normalize a legs social cost by dividing them by the leg travel time. * As a result we get something like social costs per traveled second. * Another option would be doing this on link level instead of leg level. */ double legTravelTime = legTrip.arrivalTime - legTrip.departureTime; if (costs > 0.0 && legTravelTime > 0.0) statsNormalized.addValue(costs / legTravelTime); } // Compute some statistics double sum = stats.getSum(); double mean = stats.getMean(); double std = stats.getStandardDeviation(); double median = stats.getPercentile(50); double quantile25 = stats.getPercentile(25); double quantile75 = stats.getPercentile(75); double sumNormalized = statsNormalized.getSum(); double meanNormalized = statsNormalized.getMean(); double stdNormalized = statsNormalized.getStandardDeviation(); double medianNormalized = statsNormalized.getPercentile(50); double quantile25Normalized = statsNormalized.getPercentile(25); double quantile75Normalized = statsNormalized.getPercentile(75); log.info("Sum of all leg costs: " + sum); log.info("Mean leg costs: " + mean); log.info("Standard deviation: " + std); log.info("Median leg costs: " + median); log.info("25% quantile leg costs: " + quantile25); log.info("75% quantile leg costs: " + quantile75); log.info("Normalized sum of all leg costs: " + sumNormalized); log.info("Normalized mean leg costs: " + meanNormalized); log.info("Normalized standard deviation: " + stdNormalized); log.info("Normalized median leg costs: " + medianNormalized); log.info("Normalized 25% quantile leg costs: " + quantile25Normalized); log.info("Normalized 75% quantile leg costs: " + quantile75Normalized); meanSocialCosts.add(mean); medianSocialCosts.add(median); quantil25PctSocialCosts.add(quantile25); quantil75PctSocialCosts.add(quantile75); meanNormalizedSocialCosts.add(meanNormalized); medianNormalizedSocialCosts.add(medianNormalized); quantil25PctNormalizedSocialCosts.add(quantile25Normalized); quantil75PctNormalizedSocialCosts.add(quantile75Normalized); }
From source file:playground.johannes.coopsim.analysis.TripCountTask.java
@Override public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) { Map<String, PlanElementConditionComposite<Leg>> conditions = Conditions.getLegConditions(trajectories); TripCount tripCount = new TripCount(); for (Entry<String, PlanElementConditionComposite<Leg>> entry : conditions.entrySet()) { tripCount.setCondition(entry.getValue()); DescriptiveStatistics stats = tripCount.statistics(trajectories); DescriptiveStatistics sum = new DescriptiveStatistics(); sum.addValue(stats.getSum()); results.put(String.format("%s.%s", KEY, entry.getKey()), sum); }/*from w w w. j av a 2 s.c o m*/ }
From source file:playground.johannes.gsv.synPop.sim3.HamiltonianLogger.java
@Override public void afterStep(Collection<ProxyPerson> population, Collection<ProxyPerson> mutations, boolean accepted) { if (iter.get() % logInterval == 0) { long iterNow = iter.get(); double[] values = new double[population.size()]; int i = 0; for (ProxyPerson person : population) { values[i] = h.evaluate(person); i++;/*from w ww . j a v a 2 s . co m*/ } DescriptiveStatistics stats = new DescriptiveStatistics(values); double sum = stats.getSum(); double avr = stats.getMean(); // double med = stats.getPercentile(50); double max = stats.getMax(); double min = stats.getMin(); StringBuilder builder = new StringBuilder(); builder.append("Statistics for "); builder.append(h.getClass().getSimpleName()); builder.append(String.format(Locale.US, ": Sum = %.4f, ", sum)); builder.append(String.format(Locale.US, ": Avr = %.4f, ", avr)); // builder.append(String.format(Locale.US, ": Med = %.4f, ", med)); builder.append(String.format(Locale.US, ": Max = %.4f, ", max)); builder.append(String.format(Locale.US, ": Min = %.4f", min)); logger.info(builder.toString()); if (writer != null) { try { writer.write(String.valueOf(iterNow)); writer.write(TAB); writer.write(String.valueOf(sum)); writer.write(TAB); writer.write(String.valueOf(avr)); writer.write(TAB); // writer.write(String.valueOf(med)); // writer.write(TAB); writer.write(String.valueOf(min)); writer.write(TAB); writer.write(String.valueOf(max)); writer.newLine(); writer.flush(); } catch (IOException e) { e.printStackTrace(); } } TDoubleDoubleHashMap hist = Histogram.createHistogram(stats, FixedSampleSizeDiscretizer.create(stats.getValues(), 1, 100), true); Histogram.normalize(hist); // String file = String.format("%s/%s.%s.txt", outdir, h.getClass().getSimpleName(), iterNow); String file = String.format("%s/%s", outdir, h.getClass().getSimpleName()); File afile = new File(file); afile.mkdirs(); try { TXTWriter.writeMap(hist, "value", "frequency", String.format("%s/%s.txt", file, iterNow)); } catch (IOException e) { e.printStackTrace(); } } iter.incrementAndGet(); }