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

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

Introduction

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

Prototype

public DescriptiveStatistics() 

Source Link

Document

Construct a DescriptiveStatistics instance with an infinite window

Usage

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());
}