/** Returns the number of pairs in the dataset. */ public long count() { return xStats.count(); }
/** Returns the number of pairs in the dataset. */ public long count() { return xStats.count(); }
/** Returns the number of pairs in the dataset. */ public long count() { return xStats.count(); }
@Override public String toString() { if (count() > 0) { return MoreObjects.toStringHelper(this) .add("count", count) .add("mean", mean) .add("populationStandardDeviation", populationStandardDeviation()) .add("min", min) .add("max", max) .toString(); } else { return MoreObjects.toStringHelper(this).add("count", count).toString(); } }
/** * Returns the <a href="http://en.wikipedia.org/wiki/Variance#Population_variance">population * variance</a> of the values. The count must be non-zero. * * <p>This is guaranteed to return zero if the dataset contains only exactly one finite value. It * is not guaranteed to return zero when the dataset consists of the same value multiple times, * due to numerical errors. However, it is guaranteed never to return a negative result. * * <h3>Non-finite values</h3> * * <p>If the dataset contains any non-finite values ({@link Double#POSITIVE_INFINITY}, {@link * Double#NEGATIVE_INFINITY}, or {@link Double#NaN}) then the result is {@link Double#NaN}. * * @throws IllegalStateException if the dataset is empty */ public double populationVariance() { checkState(count > 0); if (isNaN(sumOfSquaresOfDeltas)) { return NaN; } if (count == 1) { return 0.0; } return ensureNonNegative(sumOfSquaresOfDeltas) / count(); }
@Override public String toString() { if (count() > 0) { return MoreObjects.toStringHelper(this) .add("count", count) .add("mean", mean) .add("populationStandardDeviation", populationStandardDeviation()) .add("min", min) .add("max", max) .toString(); } else { return MoreObjects.toStringHelper(this).add("count", count).toString(); } }
/** * Returns the <a href="http://en.wikipedia.org/wiki/Variance#Population_variance">population * variance</a> of the values. The count must be non-zero. * * <p>This is guaranteed to return zero if the dataset contains only exactly one finite value. It * is not guaranteed to return zero when the dataset consists of the same value multiple times, * due to numerical errors. However, it is guaranteed never to return a negative result. * * <h3>Non-finite values</h3> * * <p>If the dataset contains any non-finite values ({@link Double#POSITIVE_INFINITY}, {@link * Double#NEGATIVE_INFINITY}, or {@link Double#NaN}) then the result is {@link Double#NaN}. * * @throws IllegalStateException if the dataset is empty */ public double populationVariance() { checkState(count > 0); if (isNaN(sumOfSquaresOfDeltas)) { return NaN; } if (count == 1) { return 0.0; } return ensureNonNegative(sumOfSquaresOfDeltas) / count(); }
@Override public String toString() { if (count() > 0) { return MoreObjects.toStringHelper(this) .add("count", count) .add("mean", mean) .add("populationStandardDeviation", populationStandardDeviation()) .add("min", min) .add("max", max) .toString(); } else { return MoreObjects.toStringHelper(this).add("count", count).toString(); } }
public void testCount() { assertThat(EMPTY_STATS_VARARGS.count()).isEqualTo(0); assertThat(EMPTY_STATS_ITERABLE.count()).isEqualTo(0); assertThat(ONE_VALUE_STATS.count()).isEqualTo(1); assertThat(TWO_VALUES_STATS.count()).isEqualTo(2); assertThat(MANY_VALUES_STATS_VARARGS.count()).isEqualTo(MANY_VALUES_COUNT); assertThat(MANY_VALUES_STATS_ITERABLE.count()).isEqualTo(MANY_VALUES_COUNT); assertThat(MANY_VALUES_STATS_ITERATOR.count()).isEqualTo(MANY_VALUES_COUNT); assertThat(MANY_VALUES_STATS_SNAPSHOT.count()).isEqualTo(MANY_VALUES_COUNT); assertThat(INTEGER_MANY_VALUES_STATS_VARARGS.count()).isEqualTo(INTEGER_MANY_VALUES_COUNT); assertThat(INTEGER_MANY_VALUES_STATS_ITERABLE.count()).isEqualTo(INTEGER_MANY_VALUES_COUNT); assertThat(LONG_MANY_VALUES_STATS_ITERATOR.count()).isEqualTo(LONG_MANY_VALUES_COUNT); assertThat(LONG_MANY_VALUES_STATS_SNAPSHOT.count()).isEqualTo(LONG_MANY_VALUES_COUNT); }
/** * Returns the <a href="http://en.wikipedia.org/wiki/Variance#Population_variance">population * variance</a> of the values. The count must be non-zero. * * <p>This is guaranteed to return zero if the dataset contains only exactly one finite value. It * is not guaranteed to return zero when the dataset consists of the same value multiple times, * due to numerical errors. However, it is guaranteed never to return a negative result. * * <h3>Non-finite values</h3> * * <p>If the dataset contains any non-finite values ({@link Double#POSITIVE_INFINITY}, {@link * Double#NEGATIVE_INFINITY}, or {@link Double#NaN}) then the result is {@link Double#NaN}. * * @throws IllegalStateException if the dataset is empty */ public double populationVariance() { checkState(count > 0); if (isNaN(sumOfSquaresOfDeltas)) { return NaN; } if (count == 1) { return 0.0; } return ensureNonNegative(sumOfSquaresOfDeltas) / count(); }
/** * Adds the given statistics to the dataset, as if the individual values used to compute the * statistics had been added directly. */ public void addAll(Stats values) { if (values.count() == 0) { return; } if (count == 0) { count = values.count(); mean = values.mean(); sumOfSquaresOfDeltas = values.sumOfSquaresOfDeltas(); min = values.min(); max = values.max(); } else { count += values.count(); if (isFinite(mean) && isFinite(values.mean())) { // This is a generalized version of the calculation in add(double) above. double delta = values.mean() - mean; mean += delta * values.count() / count; sumOfSquaresOfDeltas += values.sumOfSquaresOfDeltas() + delta * (values.mean() - mean) * values.count(); } else { mean = calculateNewMeanNonFinite(mean, values.mean()); sumOfSquaresOfDeltas = NaN; } min = Math.min(min, values.min()); max = Math.max(max, values.max()); } }
/** * Adds the given statistics to the dataset, as if the individual values used to compute the * statistics had been added directly. */ public void addAll(Stats values) { if (values.count() == 0) { return; } if (count == 0) { count = values.count(); mean = values.mean(); sumOfSquaresOfDeltas = values.sumOfSquaresOfDeltas(); min = values.min(); max = values.max(); } else { count += values.count(); if (isFinite(mean) && isFinite(values.mean())) { // This is a generalized version of the calculation in add(double) above. double delta = values.mean() - mean; mean += delta * values.count() / count; sumOfSquaresOfDeltas += values.sumOfSquaresOfDeltas() + delta * (values.mean() - mean) * values.count(); } else { mean = calculateNewMeanNonFinite(mean, values.mean()); sumOfSquaresOfDeltas = NaN; } min = Math.min(min, values.min()); max = Math.max(max, values.max()); } }
/** * Adds the given statistics to the dataset, as if the individual values used to compute the * statistics had been added directly. */ public void addAll(Stats values) { if (values.count() == 0) { return; } if (count == 0) { count = values.count(); mean = values.mean(); sumOfSquaresOfDeltas = values.sumOfSquaresOfDeltas(); min = values.min(); max = values.max(); } else { count += values.count(); if (isFinite(mean) && isFinite(values.mean())) { // This is a generalized version of the calculation in add(double) above. double delta = values.mean() - mean; mean += delta * values.count() / count; sumOfSquaresOfDeltas += values.sumOfSquaresOfDeltas() + delta * (values.mean() - mean) * values.count(); } else { mean = calculateNewMeanNonFinite(mean, values.mean()); sumOfSquaresOfDeltas = NaN; } min = Math.min(min, values.min()); max = Math.max(max, values.max()); } }
public void testToString() { assertThat(EMPTY_STATS_VARARGS.toString()).isEqualTo("Stats{count=0}"); assertThat(MANY_VALUES_STATS_ITERABLE.toString()) .isEqualTo( "Stats{count=" + MANY_VALUES_STATS_ITERABLE.count() + ", mean=" + MANY_VALUES_STATS_ITERABLE.mean() + ", populationStandardDeviation=" + MANY_VALUES_STATS_ITERABLE.populationStandardDeviation() + ", min=" + MANY_VALUES_STATS_ITERABLE.min() + ", max=" + MANY_VALUES_STATS_ITERABLE.max() + "}"); }
public void testEquivalentStreams() { // For datasets of many double values created from an array, we test many combinations of finite // and non-finite values: for (ManyValues values : ALL_MANY_VALUES) { double[] array = values.asArray(); Stats stats = Stats.of(array); // instance methods on Stats vs on instance methods on DoubleStream assertThat(stats.count()).isEqualTo(stream(array).count()); assertEquivalent(stats.mean(), stream(array).average().getAsDouble()); assertEquivalent(stats.sum(), stream(array).sum()); assertEquivalent(stats.max(), stream(array).max().getAsDouble()); assertEquivalent(stats.min(), stream(array).min().getAsDouble()); // static method on Stats vs on instance method on DoubleStream assertEquivalent(Stats.meanOf(array), stream(array).average().getAsDouble()); // instance methods on Stats vs instance methods on DoubleSummaryStatistics DoubleSummaryStatistics streamStats = stream(array).summaryStatistics(); assertThat(stats.count()).isEqualTo(streamStats.getCount()); assertEquivalent(stats.mean(), streamStats.getAverage()); assertEquivalent(stats.sum(), streamStats.getSum()); assertEquivalent(stats.max(), streamStats.getMax()); assertEquivalent(stats.min(), streamStats.getMin()); } }
static void assertStatsApproxEqual(Stats expectedStats, Stats actualStats) { assertThat(actualStats.count()).isEqualTo(expectedStats.count()); if (expectedStats.count() == 0) { try { actualStats.mean(); } catch (IllegalStateException expected) { } else if (expectedStats.count() == 1) { assertThat(actualStats.mean()).isWithin(ALLOWED_ERROR).of(expectedStats.mean()); assertThat(actualStats.populationVariance()).isWithin(0.0).of(0.0);
/** Returns the number of pairs in the dataset. */ public long count() { return xStats.count(); }
@Override public String toString() { if (count() > 0) { return MoreObjects.toStringHelper(this) .add("count", count) .add("mean", mean) .add("populationStandardDeviation", populationStandardDeviation()) .add("min", min) .add("max", max) .toString(); } else { return MoreObjects.toStringHelper(this).add("count", count).toString(); } }
@Override public String toString() { if (count() > 0) { return MoreObjects.toStringHelper(this) .add("count", count) .add("mean", mean) .add("populationStandardDeviation", populationStandardDeviation()) .add("min", min) .add("max", max) .toString(); } else { return MoreObjects.toStringHelper(this).add("count", count).toString(); } }
Stats s = new Stats (); ... some loop ... s.count (); s.end (); s.print ();