List of usage examples for org.apache.commons.math.stat.descriptive DescriptiveStatistics DescriptiveStatistics
public DescriptiveStatistics()
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());//from w w w. j a v a 2 s .co m results.put(String.format("%s.%s", KEY, entry.getKey()), sum); } }
From source file:playground.johannes.coopsim.analysis.TripDistanceMeanLeisure.java
@Override public DescriptiveStatistics statistics(Set<? extends Trajectory> trajectories) { DescriptiveStatistics stats = new DescriptiveStatistics(); for (Trajectory trajectory : trajectories) { double d_sum = 0; int cnt = 0; for (int i = 2; i < trajectory.getElements().size(); i += 2) { Activity destination = (Activity) trajectory.getElements().get(i); if (destination.getType().equals("visit") || destination.getType().equals("gastro") || destination.getType().equals("culture")) { Id id = destination.getFacilityId(); Coord dest = facilities.getFacilities().get(id).getCoord(); Activity origin = (Activity) trajectory.getElements().get(i - 2); id = origin.getFacilityId(); ActivityFacility fac = facilities.getFacilities().get(id); Coord source = fac.getCoord(); if (!destination.getFacilityId().equals(origin.getFacilityId())) { try { double d = calculator.distance(MatsimCoordUtils.coordToPoint(source), MatsimCoordUtils.coordToPoint(dest)); if (d > 0) { d_sum += d;//from w w w .j av a2 s .c o m cnt++; } } catch (IllegalArgumentException e) { e.printStackTrace(); } } } } if (cnt > 0) { stats.addValue(d_sum / (double) cnt); } } return stats; }
From source file:playground.johannes.coopsim.analysis.TripDistanceTaskLeisure.java
@Override public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) { DescriptiveStatistics stats = new TripDistanceMeanLeisure(facilities, calculator).statistics(trajectories); String key = "d_trip_leisure"; results.put(key, stats);//from w ww .j a v a 2 s . co m try { writeHistograms(stats, key, 50, 50); double[] values = stats.getValues(); LinearDiscretizer lin = new LinearDiscretizer(500.0); DescriptiveStatistics linStats = new DescriptiveStatistics(); for (double d : values) linStats.addValue(lin.discretize(d)); // TrajectoryAnalyzerTask.overwriteStratification(50, 1); writeHistograms(linStats, key + ".lin", 50, 50); // TrajectoryAnalyzerTask.overwriteStratification(30, 1); } catch (IOException e) { e.printStackTrace(); } }
From source file:playground.johannes.coopsim.eval.ActivityEvaluator2.java
public static void startLogging() { stats = new DescriptiveStatistics(); isLogging = true; }
From source file:playground.johannes.coopsim.eval.JointActivityEvaluator.java
public static void startLogging() { stats = new DescriptiveStatistics(); visitStats = new DescriptiveStatistics(); cultureStats = new DescriptiveStatistics(); gastroStats = new DescriptiveStatistics(); isLogging = true;//from w ww .ja va 2 s. c o m }
From source file:playground.johannes.gsv.analysis.CountsCompareAnalyzer.java
@Override public void notifyAfterMobsim(AfterMobsimEvent event) { Network network = event.getControler().getScenario().getNetwork(); DescriptiveStatistics error = new DescriptiveStatistics(); DescriptiveStatistics errorAbs = new DescriptiveStatistics(); DescriptivePiStatistics errorWeighted = new WSMStatsFactory().newInstance(); TDoubleArrayList errorVals = new TDoubleArrayList(); TDoubleArrayList caps = new TDoubleArrayList(); TDoubleArrayList speeds = new TDoubleArrayList(); for (Count count : counts.getCounts().values()) { if (!count.getLocId().toString().startsWith(ODCalibrator.VIRTUAL_ID_PREFIX)) { double obsVal = 0; for (int i = 1; i < 25; i++) { obsVal += count.getVolume(i).getValue(); }// ww w . j a va 2 s .com if (obsVal > 0) { double simVal = calculator.getOccupancy(count.getLocId()); simVal *= factor; double err = (simVal - obsVal) / obsVal; error.addValue(err); errorAbs.addValue(Math.abs(err)); errorWeighted.addValue(Math.abs(err), 1 / obsVal); Link link = network.getLinks().get(count.getLocId()); errorVals.add(Math.abs(err)); caps.add(link.getCapacity()); speeds.add(link.getFreespeed()); } } } logger.info(String.format("Relative counts error: mean = %s, var = %s, stderr = %s, min = %s, max = %s", error.getMean(), error.getVariance(), error.getStandardDeviation(), error.getMin(), error.getMax())); logger.info(String.format( "Absolute relative counts error: mean = %s, var = %s, stderr = %s, min = %s, max = %s", errorAbs.getMean(), errorAbs.getVariance(), errorAbs.getStandardDeviation(), errorAbs.getMin(), errorAbs.getMax())); logger.info(String.format( "Absolute weigthed relative counts error: mean = %s, var = %s, stderr = %s, min = %s, max = %s", errorWeighted.getMean(), errorWeighted.getVariance(), errorWeighted.getStandardDeviation(), errorWeighted.getMin(), errorWeighted.getMax())); String outdir = event.getControler().getControlerIO().getIterationPath(event.getIteration()); try { TDoubleDoubleHashMap map = Correlations.mean(caps.toNativeArray(), errorVals.toNativeArray()); TXTWriter.writeMap(map, "capacity", "counts", String.format("%s/countsError.capacity.txt", outdir)); map = Correlations.mean(speeds.toNativeArray(), errorVals.toNativeArray()); TXTWriter.writeMap(map, "speed", "counts", String.format("%s/countsError.speed.txt", outdir)); TXTWriter.writeMap(Histogram.createHistogram(error, new LinearDiscretizer(0.1), false), "Error", "Frequency", String.format("%s/countsError.hist.txt", outdir)); TXTWriter.writeMap(Histogram.createHistogram(errorAbs, new LinearDiscretizer(0.1), false), "Error (absolute)", "Frequency", String.format("%s/countsErrorAbs.hist.txt", outdir)); TXTWriter.writeMap(Histogram.createHistogram(errorWeighted, new LinearDiscretizer(0.1), true), "Error (weighted)", "Frequency", String.format("%s/countsErrorWeighted.hist.txt", outdir)); CountsCompare2GeoJSON.write(calculator, counts, factor, network, outdir); NetworkLoad2GeoJSON.write(event.getControler().getScenario().getNetwork(), calculator, factor, outdir + "/network.json"); } catch (IOException e) { e.printStackTrace(); } String rootOutDir = event.getControler().getControlerIO().getOutputPath(); boolean append = false; if (event.getIteration() > 0) { append = true; } writeErrorFile(error, String.format("%s/countsError.txt", rootOutDir), append); writeErrorFile(errorAbs, String.format("%s/countsAbsError.txt", rootOutDir), append); }
From source file:playground.johannes.gsv.analysis.ScoreTask.java
@Override public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) { int nullScores = 0; DescriptiveStatistics stats = new DescriptiveStatistics(); for (Trajectory t : trajectories) { Double score = t.getPerson().getSelectedPlan().getScore(); if (score == null) { nullScores++;/*from w ww . ja va 2 s. c o m*/ } else { stats.addValue(score); } } if (nullScores > 0) { logger.info(String.format("%s unscored plans.", nullScores)); } results.put(KEY, stats); try { writeHistograms(stats, KEY, 200, 50); } catch (IOException e) { e.printStackTrace(); } }
From source file:playground.johannes.gsv.analysis.SpeedFactorTask.java
@Override public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) { Set<String> modes = new HashSet<String>(); for (Trajectory t : trajectories) { for (int i = 1; i < t.getElements().size(); i += 2) { modes.add(((Leg) t.getElements().get(i)).getMode()); }/*from w w w .j av a 2 s.com*/ } modes.add(null); TripDistanceMean dist = new TripDistanceMean(facilities); TripDuration durs = new TripDuration(); for (String mode : modes) { if (mode == null) { dist.setCondition(DefaultCondition.getInstance()); durs.setCondition(DefaultCondition.getInstance()); } else { LegModeCondition condition = new LegModeCondition(mode); dist.setCondition(condition); durs.setCondition(condition); } TObjectDoubleHashMap<Trajectory> distances = dist.values(trajectories); TObjectDoubleHashMap<Trajectory> durations = durs.values(trajectories); TDoubleArrayList distArray = new TDoubleArrayList(distances.size()); TDoubleArrayList durArray = new TDoubleArrayList(durations.size()); double distSum = 0; double durSum = 0; TObjectDoubleIterator<Trajectory> it = distances.iterator(); for (int i = 0; i < distances.size(); i++) { it.advance(); distArray.add(it.value()); distSum += it.value(); double dur = durations.get(it.key()); durArray.add(dur); durSum += dur; } if (mode == null) mode = "all"; String key = String.format("%s.%s", KEY, mode); double factor = distSum / durSum; DescriptiveStatistics stats = new DescriptiveStatistics(); stats.addValue(factor); results.put(key, stats); if (outputDirectoryNotNull()) { TDoubleDoubleHashMap map = Correlations.mean(distArray.toNativeArray(), durArray.toNativeArray(), new LinearDiscretizer(1000)); try { TXTWriter.writeMap(map, "Distance", "Traveltime", getOutputDirectory() + "/" + key + ".txt"); } catch (IOException e) { e.printStackTrace(); } } } }
From source file:playground.johannes.gsv.matrices.analysis.CalcShares.java
/** * @param args/* w ww . j av a 2s. co m*/ * @throws IOException */ public static void main(String[] args) throws IOException { KeyMatrixXMLReader reader = new KeyMatrixXMLReader(); reader.setValidating(false); reader.parse("/home/johannes/gsv/matrices/refmatrices/itp.xml"); KeyMatrix carItpMatrix = reader.getMatrix(); MatrixOperations.applyFactor(carItpMatrix, 1 / 365.0); reader.parse("/home/johannes/gsv/matrices/simmatrices/miv.819.2.xml"); KeyMatrix carSimMatrix = reader.getMatrix(); // MatrixOperations.symetrize(carSimMatrix); // MatrixOperations.applyFactor(carSimMatrix, 11.8); reader.parse("/home/johannes/gsv/matrices/refmatrices/tomtom.de.xml"); KeyMatrix carTomTomMatrix = reader.getMatrix(); reader.parse("/home/johannes/gsv/matrices/analysis/marketShares/rail.all.nuts3.xml"); KeyMatrix railSimMatrix = reader.getMatrix(); MatrixOperations.applyFactor(railSimMatrix, 1 / 365.0); reader.parse("/home/johannes/gsv/matrices/analysis/marketShares/car.share.xml"); KeyMatrix shareRefMatrix = reader.getMatrix(); ZoneCollection zones = new ZoneCollection(); String data = new String(Files.readAllBytes(Paths.get("/home/johannes/gsv/gis/nuts/de.nuts3.gk3.geojson"))); zones.addAll(Zone2GeoJSON.parseFeatureCollection(data)); data = null; zones.setPrimaryKey("gsvId"); ODUtils.cleanDistances(railSimMatrix, zones, 100000); ODUtils.cleanDistances(carSimMatrix, zones, 100000); ODUtils.cleanDistances(carTomTomMatrix, zones, 100000); // ODUtils.cleanVolumes(carTomTomMatrix, zones, 100); double c = ODUtils.calcNormalization(carTomTomMatrix, carSimMatrix); MatrixOperations.applyFactor(carTomTomMatrix, c); removeUnknownZones(railSimMatrix); List<Tuple<String, String>> relations = getRelations(railSimMatrix, 3000); // List<Tuple<String, String>> relations = getRelations(carTomTomMatrix, 3000); BufferedWriter writer = new BufferedWriter( new FileWriter("/home/johannes/gsv/matrices/analysis/marketShares/miv-shares.txt")); writer.write("from\tto\tshareRef\tshareSim\tcarVol\trailVol\tshareItp\tvolItp\tcarTomTom\tshareTomTom"); writer.newLine(); DescriptiveStatistics simStats = new DescriptiveStatistics(); DescriptiveStatistics itpStats = new DescriptiveStatistics(); DescriptiveStatistics simItpStats = new DescriptiveStatistics(); TDoubleArrayList railVolumes = new TDoubleArrayList(); TDoubleArrayList shareSimDiff = new TDoubleArrayList(); TDoubleArrayList shareItpDiff = new TDoubleArrayList(); TDoubleArrayList refShares = new TDoubleArrayList(); TDoubleArrayList simShares = new TDoubleArrayList(); TDoubleArrayList itpShares = new TDoubleArrayList(); TDoubleArrayList tomtomShares = new TDoubleArrayList(); for (Tuple<String, String> relation : relations) { String i = relation.getFirst(); String j = relation.getSecond(); Double carSimVal = carSimMatrix.get(i, j); if (carSimVal == null) carSimVal = 0.0; Double carItpVal = carItpMatrix.get(i, j); if (carItpVal == null) carItpVal = 0.0; Double carTomTomVal = carTomTomMatrix.get(i, j); if (carTomTomVal == null) carTomTomVal = 0.0; Double railVal = railSimMatrix.get(i, j); if (railVal == null) railVal = 0.0; Double shareVal = shareRefMatrix.get(i, j); if (shareVal == null) shareVal = 0.0; double simShare = carSimVal / (carSimVal + railVal); double itpShare = carItpVal / (carItpVal + railVal); double tomtomShare = carTomTomVal / (carTomTomVal + railVal); simStats.addValue(simShare - shareVal); itpStats.addValue(itpShare - shareVal); simItpStats.addValue(itpShare - simShare); refShares.add(shareVal); simShares.add(simShare); itpShares.add(itpShare); tomtomShares.add(tomtomShare); railVolumes.add(railVal); shareSimDiff.add(shareVal - simShare); shareItpDiff.add(shareVal - itpShare); writer.write(i); writer.write("\t"); writer.write(j); writer.write("\t"); writer.write(String.valueOf(shareVal)); writer.write("\t"); writer.write(String.valueOf(simShare)); writer.write("\t"); writer.write(String.valueOf(carSimVal)); writer.write("\t"); writer.write(String.valueOf(railVal)); writer.write("\t"); writer.write(String.valueOf(itpShare)); writer.write("\t"); writer.write(String.valueOf(carItpVal)); writer.write("\t"); writer.write(String.valueOf(carTomTomVal)); writer.write("\t"); writer.write(String.valueOf(tomtomShare)); writer.newLine(); } writer.close(); System.out.println("Avr sim share error: " + simStats.getMean()); System.out.println("Avr itp share error: " + itpStats.getMean()); System.out.println("Avr sim-itp share error: " + simItpStats.getMean()); writeCorrelation(refShares, simShares, "model", "sim", "/home/johannes/gsv/matrices/analysis/marketShares/modelSim.txt"); writeCorrelation(itpShares, simShares, "itp", "sim", "/home/johannes/gsv/matrices/analysis/marketShares/itpSim.txt"); writeCorrelation(tomtomShares, simShares, "tomtom", "sim", "/home/johannes/gsv/matrices/analysis/marketShares/tomtomSim.txt"); writeCorrelation(itpShares, tomtomShares, "itp", "tomtom", "/home/johannes/gsv/matrices/analysis/marketShares/itpTomtom.txt"); // double[] samples = railVolumes.toNativeArray(); // TDoubleDoubleHashMap hist = Correlations.mean(samples, shareSimDiff.toNativeArray(), FixedSampleSizeDiscretizer.create(samples, 50)); // TXTWriter.writeMap(hist, "rail volume", "share diff", "/home/johannes/gsv/matrices/analysis/marketShares/simVolDiff.txt"); // // hist = Correlations.mean(samples, shareItpDiff.toNativeArray(), FixedSampleSizeDiscretizer.create(samples, 50)); // TXTWriter.writeMap(hist, "rail volume", "share diff", "/home/johannes/gsv/matrices/analysis/marketShares/itpVolDiff.txt"); // // hist = Correlations.mean(refShares.toNativeArray(), simShares.toNativeArray()); // TXTWriter.writeMap(hist, "ref share", "sim share", "/home/johannes/gsv/matrices/analysis/marketShares/simShareCorrel.txt"); // // hist = Correlations.mean(refShares.toNativeArray(), itpShares.toNativeArray()); // TXTWriter.writeMap(hist, "ref share", "itp share", "/home/johannes/gsv/matrices/analysis/marketShares/itpShareCorrel.txt"); }
From source file:playground.johannes.gsv.matrices.analysis.DumpRelations.java
private static void writeRelations(KeyMatrix tomtom, KeyMatrix sim, KeyMatrix itp, KeyMatrix dist, List<Tuple<String, String>> relations, String file) throws IOException { BufferedWriter writer = new BufferedWriter(new FileWriter(file)); writer.write("from\tto\ttomtom\tsim\titp"); writer.newLine();/*from w w w. ja va 2 s . co m*/ DescriptiveStatistics simStats = new DescriptiveStatistics(); DescriptiveStatistics itpStats = new DescriptiveStatistics(); for (Tuple<String, String> tuple : relations) { writer.write(tuple.getFirst()); writer.write("\t"); writer.write(tuple.getSecond()); writer.write("\t"); Double tomtomVal = tomtom.get(tuple.getFirst(), tuple.getSecond()); if (tomtomVal == null) tomtomVal = 0.0; writer.write(String.valueOf(tomtomVal)); writer.write("\t"); Double val = sim.get(tuple.getFirst(), tuple.getSecond()); if (val == null) val = 0.0; writer.write(String.valueOf(val)); writer.write("\t"); simStats.addValue(Math.abs((val - tomtomVal) / tomtomVal)); val = itp.get(tuple.getFirst(), tuple.getSecond()); if (val == null) val = 0.0; writer.write(String.valueOf(val)); itpStats.addValue(Math.abs((val - tomtomVal) / tomtomVal)); writer.write("\t"); writer.write(String.valueOf(dist.get(tuple.getFirst(), tuple.getSecond()))); writer.newLine(); } writer.close(); System.out.println("sim: " + simStats.getMean()); System.out.println("itp: " + itpStats.getMean()); }