Example usage for org.apache.commons.math.stat.descriptive DescriptiveStatistics addValue

List of usage examples for org.apache.commons.math.stat.descriptive DescriptiveStatistics addValue

Introduction

In this page you can find the example usage for org.apache.commons.math.stat.descriptive DescriptiveStatistics addValue.

Prototype

public void addValue(double v) 

Source Link

Document

Adds the value to the dataset.

Usage

From source file:playground.johannes.coopsim.analysis.PkmRouteTask.java

@Override
public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) {
    Map<String, PlanElementConditionComposite<Leg>> conditions = Conditions.getLegConditions(trajectories);

    for (Entry<String, PlanElementConditionComposite<Leg>> entry : conditions.entrySet()) {
        double sum = 0;
        int cnt = 0;
        for (Trajectory t : trajectories) {
            for (int i = 1; i < t.getElements().size(); i += 2) {
                Leg leg = (Leg) t.getElements().get(i);
                if (entry.getValue().test(t, leg, i)) {
                    if (leg.getRoute() instanceof NetworkRoute) {
                        NetworkRoute route = (NetworkRoute) leg.getRoute();
                        sum += RouteUtils.calcDistance(route, network);

                        Link startLink = network.getLinks().get(route.getStartLinkId());
                        sum += startLink.getLength() * startEndFactor;

                        Link endLink = network.getLinks().get(route.getEndLinkId());
                        sum += endLink.getLength() * startEndFactor;
                    } else {
                        sum += leg.getRoute().getDistance();

                        if (leg.getMode().equals("car")) {
                            cnt++;/*from   ww  w .j  av a 2 s. c  o  m*/
                        }
                    }
                }
            }

        }

        DescriptiveStatistics stats = new DescriptiveStatistics();
        stats.addValue(sum);

        results.put(String.format("%s.%s.%.2f", KEY, entry.getKey(), startEndFactor), stats);

        if (cnt > 0) {
            logger.warn(String.format("mode=car, type=%s: %s not NetworkRoute", entry.getKey(), cnt));
        }
    }

}

From source file:playground.johannes.coopsim.analysis.ScoreTask.java

@Override
public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) {
    DescriptiveStatistics allScores = new DescriptiveStatistics();
    for (Trajectory t : trajectories)
        allScores.addValue(t.getPerson().getSelectedPlan().getScore());
    results.put("score", allScores);

    DescriptiveStatistics actScores = ActivityEvaluator.stopLogging();
    results.put("score_act", actScores);

    DescriptiveStatistics legScores = LegEvaluator.stopLogging();
    results.put("score_leg", legScores);

    Map<String, DescriptiveStatistics> jointScore = JointActivityEvaluator2.stopLogging();
    //      Map<String, DescriptiveStatistics> jointScore = JointActivityEvaluator.stopLogging();
    for (Entry<String, DescriptiveStatistics> entry : jointScore.entrySet()) {
        results.put("score_join_" + entry.getKey(), entry.getValue());
    }/*ww  w . j  a v a  2  s.c o m*/

    DescriptiveStatistics typeScore = ActivityTypeEvaluator.stopLogging();
    results.put("score_type", typeScore);

    try {
        writeHistograms(allScores, "score", 50, 50);
        writeHistograms(actScores, "score_act", 50, 50);
        writeHistograms(legScores, "score_leg", 50, 50);
        for (Entry<String, DescriptiveStatistics> entry : jointScore.entrySet()) {
            writeHistograms(entry.getValue(), new LinearDiscretizer(0.5), "score_join_" + entry.getKey(),
                    false);
            writeHistograms(entry.getValue(), "score_join_" + entry.getKey(), 50, 50);
        }

        writeHistograms(typeScore, new DummyDiscretizer(), "score_type", false);
    } catch (IOException e) {
        e.printStackTrace();
    }

    scores.add(allScores.getMean());

    if (scores.size() >= MIN_SAMPLES) {
        SimpleRegression reg = new SimpleRegression();

        for (int i = scores.size() - MIN_SAMPLES; i < scores.size(); i++) {
            reg.addData(i, scores.get(i));
        }

        if (reg.getSlope() < THRESHOLD)
            converged = true;
    }

}

From source file:playground.johannes.coopsim.analysis.SocialTripCorrelationTask.java

@Override
public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) {
    TDoubleArrayList xvals = new TDoubleArrayList(trajectories.size());
    TDoubleArrayList yvals = new TDoubleArrayList(trajectories.size());

    for (Trajectory t : trajectories) {
        SocialVertex v = vertexMapping.get(t.getPerson());
        double val_v = getValue(v);

        List<Person> alters = new ArrayList<Person>(v.getNeighbours().size());
        for (SocialVertex w : v.getNeighbours())
            alters.add(w.getPerson().getPerson());

        for (Person alter : alters) {
            if (tracker.timeOverlap(t.getPerson(), alter) > 0) {
                double val_w = getValue(vertexMapping.get(alter));

                xvals.add(val_v);
                yvals.add(val_w);
            }/*  ww w  . j  av  a2s.  com*/
        }
    }

    double r = new PearsonsCorrelation().correlation(xvals.toNativeArray(), yvals.toNativeArray());
    String key2 = String.format("r_trip_%1$s", key);
    DescriptiveStatistics stats = new DescriptiveStatistics();
    stats.addValue(r);
    results.put(key2, stats);

    try {
        TDoubleDoubleHashMap correl = Correlations.mean(xvals.toNativeArray(), yvals.toNativeArray());
        TXTWriter.writeMap(correl, key, key, String.format("%1$s/%2$s.txt", getOutputDirectory(), key2));

        TDoubleObjectHashMap<DescriptiveStatistics> table = Correlations.statistics(xvals.toNativeArray(),
                yvals.toNativeArray(), new DummyDiscretizer());
        TXTWriter.writeBoxplotStats(table, String.format("%1$s/%2$s.table.txt", getOutputDirectory(), key2));
        TXTWriter.writeScatterPlot(table, String.format("%1$s/%2$s.xy.txt", getOutputDirectory(), key2));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

From source file:playground.johannes.coopsim.analysis.TransitionProbaAnalyzer.java

@Override
public void analyze(Set<Trajectory> trajectories, Map<String, DescriptiveStatistics> results) {
    DescriptiveStatistics stats = new DescriptiveStatistics();

    double pi = mentalEngine.getTotalPiSum() / (double) dumpInterval;

    stats.addValue(pi);

    results.put("pi", stats);

    mentalEngine.cleatTotalPiSum();//from w w w . j av a 2  s. c  o  m
}

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);
    }// w w w  .  j a v  a 2  s  .c  o m

}

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 ww  w.jav a  2s.  c om*/
                            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);/*w  ww  . j a  v  a 2  s  . c  o 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.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();
            }/*from ww w  .  j av a 2  s.  c o m*/

            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 v  a  2 s.co  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());
        }/*  w  w  w. j a v  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();
            }
        }
    }

}