List of usage examples for org.apache.commons.math3.stat.descriptive.rank Percentile evaluate
public double evaluate(final double p) throws MathIllegalArgumentException
From source file:com.mgmtp.perfload.perfalyzer.binning.MeasuringResponseTimesBinningStrategy.java
@Override public void aggregateData(final ChannelManager channelManager) throws IOException { WritableByteChannel quantilesChannel = channelManager.getChannel("quantiles"); writeQuantilesHeader(quantilesChannel); int i = 0;//from ww w .j a v a 2 s. c o m for (Entry<String, UriMeasurings> entry : measuringsMap.entrySet()) { UriMeasurings measurings = entry.getValue(); String uri = measurings.uriAlias; if (measurings.responseTimes.isEmpty()) { continue; } Percentile percentile = new Percentile(); double[] responseTimes = Doubles.toArray(measurings.responseTimes); percentile.setData(responseTimes); // each uri is mapped to a key which is simple a number that is left-padded for better sorting String mappingKey = leftPad(String.valueOf(i++), 3, '0'); StrBuilder sb = new StrBuilder(150); appendEscapedAndQuoted(sb, DELIMITER, mappingKey); appendEscapedAndQuoted(sb, DELIMITER, measurings.type); appendEscapedAndQuoted(sb, DELIMITER, uri); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(responseTimes.length)); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(measurings.errorCount)); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(Doubles.min(responseTimes))); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(percentile.evaluate(10d))); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(percentile.evaluate(50d))); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(percentile.evaluate(90d))); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(Doubles.max(responseTimes))); writeLineToChannel(quantilesChannel, sb.toString(), Charsets.UTF_8); // write response time distributions WritableByteChannel distributionChannel = channelManager.getChannel("distribution_" + mappingKey); writeDistributionHeader(distributionChannel); for (Entry<Long, MutableInt> e : measurings.responseDistributions.entrySet()) { sb = new StrBuilder(); appendEscapedAndQuoted(sb, DELIMITER, e.getKey()); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(e.getValue())); writeLineToChannel(distributionChannel, sb.toString(), Charsets.UTF_8); } } writeExecutionAggregatedResponseTimesHeader(channelManager.getChannel("aggregatedResponseTimes")); if (!perExecutionResponseTimes.isEmpty()) { BinManager executionsPerMinuteBinManager = new BinManager(startOfFirstBin, PerfAlyzerConstants.BIN_SIZE_MILLIS_1_MINUTE); BinManager executionsPerTenMinutesBinManager = new BinManager(startOfFirstBin, PerfAlyzerConstants.BIN_SIZE_MILLIS_10_MINUTES); BinManager medianExecutionBinManager = new BinManager(startOfFirstBin, PerfAlyzerConstants.BIN_SIZE_MILLIS_30_SECONDS); List<ExecutionMeasurings> values = newArrayList(perExecutionResponseTimes.values()); for (ExecutionMeasurings execMeasurings : values) { long timestampMillis = execMeasurings.timestampMillis; executionsPerMinuteBinManager.addValue(timestampMillis); executionsPerTenMinutesBinManager.addValue(timestampMillis); medianExecutionBinManager.addValue(timestampMillis, execMeasurings.sumResponseTimes.doubleValue() / 1000); } executionsPerMinuteBinManager.toCsv(channelManager.getChannel("execMin"), "time", "count", intNumberFormat); executionsPerTenMinutesBinManager.toCsv(channelManager.getChannel("exec10Min"), "time", "count", intNumberFormat); medianExecutionBinManager.toCsv(channelManager.getChannel("executions"), "time", "median", intNumberFormat, AggregationType.MEDIAN); double[] sumResponseTimes = values.stream().mapToDouble(input -> input.sumResponseTimes.doubleValue()) .toArray(); StrBuilder sb = new StrBuilder(150); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(Doubles.min(sumResponseTimes) / 1000)); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(StatUtils.percentile(sumResponseTimes, 50d) / 1000)); appendEscapedAndQuoted(sb, DELIMITER, intNumberFormat.format(Doubles.max(sumResponseTimes) / 1000)); writeLineToChannel(channelManager.getChannel("aggregatedResponseTimes"), sb.toString(), Charsets.UTF_8); } }
From source file:ch.unil.genescore.pathway.GeneSetLibrary.java
License:asdf
public void computeApproxChi2Values() { Percentile perc = new Percentile(); EffTestCalculator effCalc = new EffTestCalculator(); effCalc.addGeneIds(genes_);/*from w w w .j av a 2 s.c om*/ effCalc.addMetaGeneIds(metaGenes_); effCalc.setGeneSets(geneSets_); effCalc.initializeGeneVals(); int nrOfLoops = 10000; double[] mins = new double[nrOfLoops]; for (int i = 0; i < nrOfLoops; i++) { mins[i] = effCalc.calcMinVal(); } perc.setData(mins); double p1 = perc.evaluate(1); double p5 = perc.evaluate(5); double p10 = perc.evaluate(10); double p15 = perc.evaluate(15); //double w1 = perc.evaluate(1.0/50); System.out.println(p1); System.out.println(p5); System.out.println(p10); System.out.println(p15); System.out.println("asdf"); }
From source file:org.apache.mahout.classifier.df.split.OptIgSplit.java
/** * @return an array of values to split the numeric feature's values on when * building candidate splits. When input size is <= MAX_NUMERIC_SPLITS + 1, it will * return the averages between success values as split points. When larger, it will * return MAX_NUMERIC_SPLITS approximate percentiles through the data. *//*from w w w. j av a 2 s . com*/ private static double[] chooseNumericSplitPoints(double[] values) { if (values.length <= 1) { return values; } if (values.length <= MAX_NUMERIC_SPLITS + 1) { double[] splitPoints = new double[values.length - 1]; for (int i = 1; i < values.length; i++) { splitPoints[i - 1] = (values[i] + values[i - 1]) / 2.0; } return splitPoints; } Percentile distribution = new Percentile(); distribution.setData(values); double[] percentiles = new double[MAX_NUMERIC_SPLITS]; for (int i = 0; i < percentiles.length; i++) { double p = 100.0 * ((i + 1.0) / (MAX_NUMERIC_SPLITS + 1.0)); percentiles[i] = distribution.evaluate(p); } return percentiles; }
From source file:org.apache.solr.client.solrj.io.eval.PercentileEvaluator.java
@Override public Object doWork(Object first, Object second) throws IOException { if (null == first) { throw new IOException(String.format(Locale.ROOT, "Invalid expression %s - null found for the first value", toExpression(constructingFactory))); }// ww w . j a v a 2 s . c o m if (null == second) { throw new IOException(String.format(Locale.ROOT, "Invalid expression %s - null found for the second value", toExpression(constructingFactory))); } if (!(first instanceof List<?>)) { throw new IOException(String.format(Locale.ROOT, "Invalid expression %s - found type %s for the first value, expecting a List", toExpression(constructingFactory), first.getClass().getSimpleName())); } if (!(second instanceof Number)) { throw new IOException(String.format(Locale.ROOT, "Invalid expression %s - found type %s for the second value, expecting a Number", toExpression(constructingFactory), first.getClass().getSimpleName())); } Percentile percentile = new Percentile(); percentile .setData(((List<?>) first).stream().mapToDouble(value -> ((Number) value).doubleValue()).toArray()); return percentile.evaluate(((Number) second).doubleValue()); }
From source file:org.drugis.mtc.summary.QuantileSummary.java
private double calculateQuantile(int i, Percentile q) { double p = getProbability(i); return q.evaluate(p * 100); }
From source file:org.hawkular.metrics.core.impl.cassandra.GaugeBucketedOutputMapper.java
@Override protected GaugeBucketDataPoint newPointInstance(long from, long to, List<GaugeData> gaugeDatas) { double[] values = new double[gaugeDatas.size()]; for (ListIterator<GaugeData> iterator = gaugeDatas.listIterator(); iterator.hasNext();) { GaugeData gaugeData = iterator.next(); values[iterator.previousIndex()] = gaugeData.getValue(); }//from w w w. j a va 2s .c o m Percentile percentile = new Percentile(); percentile.setData(values); return new GaugeBucketDataPoint.Builder(from, to).setMin(new Min().evaluate(values)) .setAvg(new Mean().evaluate(values)).setMedian(percentile.evaluate(50.0)) .setMax(new Max().evaluate(values)).setPercentile95th(percentile.evaluate(95.0)).build(); }
From source file:org.hawkular.metrics.core.impl.cassandra.NumericBucketedOutputMapper.java
@Override protected NumericBucketDataPoint newPointInstance(long from, long to, List<NumericData> numericDatas) { double[] values = new double[numericDatas.size()]; for (ListIterator<NumericData> iterator = numericDatas.listIterator(); iterator.hasNext();) { NumericData numericData = iterator.next(); values[iterator.previousIndex()] = numericData.getValue(); }/*from w w w .ja va 2s . co m*/ Percentile percentile = new Percentile(); percentile.setData(values); return new NumericBucketDataPoint.Builder(from, to).setMin(new Min().evaluate(values)) .setAvg(new Mean().evaluate(values)).setMedian(percentile.evaluate(50.0)) .setMax(new Max().evaluate(values)).setPercentile95th(percentile.evaluate(95.0)).build(); }
From source file:org.hawkular.metrics.core.impl.GaugeBucketedOutputMapper.java
@Override protected GaugeBucketDataPoint newPointInstance(long from, long to, List<DataPoint<Double>> dataPoints) { double[] values = new double[dataPoints.size()]; for (ListIterator<DataPoint<Double>> iterator = dataPoints.listIterator(); iterator.hasNext();) { DataPoint<Double> gaugeData = iterator.next(); values[iterator.previousIndex()] = gaugeData.getValue(); }/*w w w . j av a 2 s . com*/ Percentile percentile = new Percentile(); percentile.setData(values); return new GaugeBucketDataPoint.Builder(from, to).setMin(new Min().evaluate(values)) .setAvg(new Mean().evaluate(values)).setMedian(percentile.evaluate(50.0)) .setMax(new Max().evaluate(values)).setPercentile95th(percentile.evaluate(95.0)).build(); }
From source file:org.jpmml.evaluator.DoubleVector.java
public double percentile(int percentile) { if (this.values == null) { throw new IllegalStateException(); }//from ww w . j av a 2 s. c o m double[] data = new double[this.size]; System.arraycopy(this.values, 0, data, 0, data.length); Arrays.sort(data); Percentile statistic = new Percentile(); statistic.setData(data); return statistic.evaluate(percentile); }
From source file:org.jpmml.evaluator.functions.PercentileFunction.java
static private Double evaluate(Collection<?> values, int quantile) { List<Double> doubleValues = Lists.newArrayList(); for (Object value : values) { Double doubleValue = (Double) TypeUtil.parseOrCast(DataType.DOUBLE, value); doubleValues.add(doubleValue);//from w w w .j a v a2 s .com } double[] data = Doubles.toArray(doubleValues); // The data must be (at least partially) ordered Arrays.sort(data); Percentile percentile = new Percentile(); percentile.setData(data); return percentile.evaluate(quantile); }