Class Stats
- java.lang.Object
- 
- com.google.common.math.Stats
 
- 
- All Implemented Interfaces:
- java.io.Serializable
 
 @GwtIncompatible public final class Stats extends java.lang.Object implements java.io.Serializable A bundle of statistical summary values -- sum, count, mean/average, min and max, and several forms of variance -- that were computed from a single set of zero or more floating-point values.There are two ways to obtain a Statsinstance:- If all the values you want to summarize are already known, use the appropriate Stats.offactory method below. Primitive arrays, iterables and iterators of any kind ofNumber, and primitive varargs are supported.
- Or, to avoid storing up all the data first, create a StatsAccumulatorinstance, feed values to it as you get them, then callStatsAccumulator.snapshot().
 Static convenience methods called meanOfare also provided for users who wish to calculate only the mean.Java 8+ users: If you are not using any of the variance statistics, you may wish to use built-in JDK libraries instead of this class. - Since:
- 20.0
- Author:
- Pete Gillin, Kevin Bourrillion
- See Also:
- Serialized Form
 
- 
- 
Method SummaryAll Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description longcount()Returns the number of values.booleanequals(java.lang.Object obj)static StatsfromByteArray(byte[] byteArray)Creates a Stats instance from the given byte representation which was obtained bytoByteArray().inthashCode()doublemax()Returns the highest value in the dataset.doublemean()Returns the arithmetic mean of the values.static doublemeanOf(double... values)Returns the arithmetic mean of the values.static doublemeanOf(int... values)Returns the arithmetic mean of the values.static doublemeanOf(long... values)Returns the arithmetic mean of the values.static doublemeanOf(java.lang.Iterable<? extends java.lang.Number> values)Returns the arithmetic mean of the values.static doublemeanOf(java.util.Iterator<? extends java.lang.Number> values)Returns the arithmetic mean of the values.doublemin()Returns the lowest value in the dataset.static Statsof(double... values)Returns statistics over a dataset containing the given values.static Statsof(int... values)Returns statistics over a dataset containing the given values.static Statsof(long... values)Returns statistics over a dataset containing the given values.static Statsof(java.lang.Iterable<? extends java.lang.Number> values)Returns statistics over a dataset containing the given values.static Statsof(java.util.Iterator<? extends java.lang.Number> values)Returns statistics over a dataset containing the given values.doublepopulationStandardDeviation()Returns the population standard deviation of the values.doublepopulationVariance()Returns the population variance of the values.doublesampleStandardDeviation()Returns the corrected sample standard deviation of the values.doublesampleVariance()Returns the unbiased sample variance of the values.doublesum()Returns the sum of the values.byte[]toByteArray()Gets a byte array representation of this instance.java.lang.StringtoString()
 
- 
- 
- 
Method Detail- 
ofpublic static Stats of(java.lang.Iterable<? extends java.lang.Number> values) Returns statistics over a dataset containing the given values.- Parameters:
- values- a series of values, which will be converted to- doublevalues (this may cause loss of precision)
 
 - 
ofpublic static Stats of(java.util.Iterator<? extends java.lang.Number> values) Returns statistics over a dataset containing the given values. The iterator will be completely consumed by this method.- Parameters:
- values- a series of values, which will be converted to- doublevalues (this may cause loss of precision)
 
 - 
ofpublic static Stats of(double... values) Returns statistics over a dataset containing the given values.- Parameters:
- values- a series of values
 
 - 
ofpublic static Stats of(int... values) Returns statistics over a dataset containing the given values.- Parameters:
- values- a series of values
 
 - 
ofpublic static Stats of(long... values) Returns statistics over a dataset containing the given values.- Parameters:
- values- a series of values, which will be converted to- doublevalues (this may cause loss of precision for longs of magnitude over 2^53 (slightly over 9e15))
 
 - 
countpublic long count() Returns the number of values.
 - 
meanpublic double mean() Returns the arithmetic mean of the values. The count must be non-zero.If these values are a sample drawn from a population, this is also an unbiased estimator of the arithmetic mean of the population. Non-finite valuesIf the dataset contains Double.NaNthen the result isDouble.NaN. If it contains bothDouble.POSITIVE_INFINITYandDouble.NEGATIVE_INFINITYthen the result isDouble.NaN. If it containsDouble.POSITIVE_INFINITYand finite values only orDouble.POSITIVE_INFINITYonly, the result isDouble.POSITIVE_INFINITY. If it containsDouble.NEGATIVE_INFINITYand finite values only orDouble.NEGATIVE_INFINITYonly, the result isDouble.NEGATIVE_INFINITY.If you only want to calculate the mean, use meanOf(java.lang.Iterable<? extends java.lang.Number>)instead of creating aStatsinstance.- Throws:
- java.lang.IllegalStateException- if the dataset is empty
 
 - 
sumpublic double sum() Returns the sum of the values.Non-finite valuesIf the dataset contains Double.NaNthen the result isDouble.NaN. If it contains bothDouble.POSITIVE_INFINITYandDouble.NEGATIVE_INFINITYthen the result isDouble.NaN. If it containsDouble.POSITIVE_INFINITYand finite values only orDouble.POSITIVE_INFINITYonly, the result isDouble.POSITIVE_INFINITY. If it containsDouble.NEGATIVE_INFINITYand finite values only orDouble.NEGATIVE_INFINITYonly, the result isDouble.NEGATIVE_INFINITY.
 - 
populationVariancepublic double populationVariance() Returns the population variance of the values. The count must be non-zero.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. Non-finite valuesIf the dataset contains any non-finite values ( Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY, orDouble.NaN) then the result isDouble.NaN.- Throws:
- java.lang.IllegalStateException- if the dataset is empty
 
 - 
populationStandardDeviationpublic double populationStandardDeviation() Returns the population standard deviation of the values. The count must be non-zero.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. Non-finite valuesIf the dataset contains any non-finite values ( Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY, orDouble.NaN) then the result isDouble.NaN.- Throws:
- java.lang.IllegalStateException- if the dataset is empty
 
 - 
sampleVariancepublic double sampleVariance() Returns the unbiased sample variance of the values. If this dataset is a sample drawn from a population, this is an unbiased estimator of the population variance of the population. The count must be greater than one.This 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. Non-finite valuesIf the dataset contains any non-finite values ( Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY, orDouble.NaN) then the result isDouble.NaN.- Throws:
- java.lang.IllegalStateException- if the dataset is empty or contains a single value
 
 - 
sampleStandardDeviationpublic double sampleStandardDeviation() Returns the corrected sample standard deviation of the values. If this dataset is a sample drawn from a population, this is an estimator of the population standard deviation of the population which is less biased thanpopulationStandardDeviation()(the unbiased estimator depends on the distribution). The count must be greater than one.This 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. Non-finite valuesIf the dataset contains any non-finite values ( Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY, orDouble.NaN) then the result isDouble.NaN.- Throws:
- java.lang.IllegalStateException- if the dataset is empty or contains a single value
 
 - 
minpublic double min() Returns the lowest value in the dataset. The count must be non-zero.Non-finite valuesIf the dataset contains Double.NaNthen the result isDouble.NaN. If it containsDouble.NEGATIVE_INFINITYand notDouble.NaNthen the result isDouble.NEGATIVE_INFINITY. If it containsDouble.POSITIVE_INFINITYand finite values only then the result is the lowest finite value. If it containsDouble.POSITIVE_INFINITYonly then the result isDouble.POSITIVE_INFINITY.- Throws:
- java.lang.IllegalStateException- if the dataset is empty
 
 - 
maxpublic double max() Returns the highest value in the dataset. The count must be non-zero.Non-finite valuesIf the dataset contains Double.NaNthen the result isDouble.NaN. If it containsDouble.POSITIVE_INFINITYand notDouble.NaNthen the result isDouble.POSITIVE_INFINITY. If it containsDouble.NEGATIVE_INFINITYand finite values only then the result is the highest finite value. If it containsDouble.NEGATIVE_INFINITYonly then the result isDouble.NEGATIVE_INFINITY.- Throws:
- java.lang.IllegalStateException- if the dataset is empty
 
 - 
equalspublic boolean equals(@CheckForNull java.lang.Object obj) Note: This tests exact equality of the calculated statistics, including the floating point values. Two instances are guaranteed to be considered equal if one is copied from the other using second = new StatsAccumulator().addAll(first).snapshot(), if both were obtained by callingsnapshot()on the sameStatsAccumulatorwithout adding any values in between the two calls, or if one is obtained from the other after round-tripping through java serialization. However, floating point rounding errors mean that it may be false for some instances where the statistics are mathematically equal, including instances constructed from the same values in a different order... or (in the general case) even in the same order. (It is guaranteed to return true for instances constructed from the same values in the same order ifstrictfpis in effect, or if the system architecture guaranteesstrictfp-like semantics.)- Overrides:
- equalsin class- java.lang.Object
 
 - 
hashCodepublic int hashCode() Note: This hash code is consistent with exact equality of the calculated statistics, including the floating point values. See the note on equals(java.lang.Object)for details.- Overrides:
- hashCodein class- java.lang.Object
 
 - 
toStringpublic java.lang.String toString() - Overrides:
- toStringin class- java.lang.Object
 
 - 
meanOfpublic static double meanOf(java.lang.Iterable<? extends java.lang.Number> values) Returns the arithmetic mean of the values. The count must be non-zero.The definition of the mean is the same as mean.- Parameters:
- values- a series of values, which will be converted to- doublevalues (this may cause loss of precision)
- Throws:
- java.lang.IllegalArgumentException- if the dataset is empty
 
 - 
meanOfpublic static double meanOf(java.util.Iterator<? extends java.lang.Number> values) Returns the arithmetic mean of the values. The count must be non-zero.The definition of the mean is the same as mean.- Parameters:
- values- a series of values, which will be converted to- doublevalues (this may cause loss of precision)
- Throws:
- java.lang.IllegalArgumentException- if the dataset is empty
 
 - 
meanOfpublic static double meanOf(double... values) Returns the arithmetic mean of the values. The count must be non-zero.The definition of the mean is the same as mean.- Parameters:
- values- a series of values
- Throws:
- java.lang.IllegalArgumentException- if the dataset is empty
 
 - 
meanOfpublic static double meanOf(int... values) Returns the arithmetic mean of the values. The count must be non-zero.The definition of the mean is the same as mean.- Parameters:
- values- a series of values
- Throws:
- java.lang.IllegalArgumentException- if the dataset is empty
 
 - 
meanOfpublic static double meanOf(long... values) Returns the arithmetic mean of the values. The count must be non-zero.The definition of the mean is the same as mean.- Parameters:
- values- a series of values, which will be converted to- doublevalues (this may cause loss of precision for longs of magnitude over 2^53 (slightly over 9e15))
- Throws:
- java.lang.IllegalArgumentException- if the dataset is empty
 
 - 
toByteArraypublic byte[] toByteArray() Gets a byte array representation of this instance.Note: No guarantees are made regarding stability of the representation between versions. 
 - 
fromByteArraypublic static Stats fromByteArray(byte[] byteArray) Creates a Stats instance from the given byte representation which was obtained bytoByteArray().Note: No guarantees are made regarding stability of the representation between versions. 
 
- 
 
-