@Beta @GwtIncompatible public final class StatsAccumulator extends Object
Constructor and Description |
---|
StatsAccumulator() |
Modifier and Type | Method and Description |
---|---|
void |
add(double value)
Adds the given value to the dataset.
|
void |
addAll(double... values)
Adds the given values to the dataset.
|
void |
addAll(int... values)
Adds the given values to the dataset.
|
void |
addAll(Iterable<? extends Number> values)
Adds the given values to the dataset.
|
void |
addAll(Iterator<? extends Number> values)
Adds the given values to the dataset.
|
void |
addAll(long... values)
Adds the given values to the dataset.
|
void |
addAll(Stats values)
Adds the given statistics to the dataset, as if the individual values used to compute the
statistics had been added directly.
|
void |
addAll(StatsAccumulator values)
Adds the given statistics to the dataset, as if the individual values used to compute the
statistics had been added directly.
|
long |
count()
Returns the number of values.
|
double |
max()
Returns the highest value in the dataset.
|
double |
mean()
Returns the arithmetic mean of the
values.
|
double |
min()
Returns the lowest value in the dataset.
|
double |
populationStandardDeviation()
Returns the
population standard deviation of the values.
|
double |
populationVariance()
Returns the population
variance of the values.
|
double |
sampleStandardDeviation()
Returns the
corrected sample standard deviation of the values.
|
double |
sampleVariance()
Returns the unbiased sample
variance of the values.
|
Stats |
snapshot()
Returns an immutable snapshot of the current statistics.
|
double |
sum()
Returns the sum of the values.
|
public StatsAccumulator()
public void add(double value)
public void addAll(Iterable<? extends Number> values)
values
- a series of values, which will be converted to double
values (this may
cause loss of precision)public void addAll(Iterator<? extends Number> values)
values
- a series of values, which will be converted to double
values (this may
cause loss of precision)public void addAll(double... values)
values
- a series of valuespublic void addAll(int... values)
values
- a series of valuespublic void addAll(long... values)
values
- a series of values, which will be converted to double
values (this may
cause loss of precision for longs of magnitude over 2^53 (slightly over 9e15))public void addAll(Stats values)
public void addAll(StatsAccumulator values)
public long count()
public double mean()
If these values are a sample drawn from a population, this is also an unbiased estimator of the arithmetic mean of the population.
If the dataset contains Double.NaN
then the result is Double.NaN
. If it
contains both Double.POSITIVE_INFINITY
and Double.NEGATIVE_INFINITY
then the
result is Double.NaN
. If it contains Double.POSITIVE_INFINITY
and finite values
only or Double.POSITIVE_INFINITY
only, the result is Double.POSITIVE_INFINITY
.
If it contains Double.NEGATIVE_INFINITY
and finite values only or Double.NEGATIVE_INFINITY
only, the result is Double.NEGATIVE_INFINITY
.
IllegalStateException
- if the dataset is emptypublic final double sum()
If the dataset contains Double.NaN
then the result is Double.NaN
. If it
contains both Double.POSITIVE_INFINITY
and Double.NEGATIVE_INFINITY
then the
result is Double.NaN
. If it contains Double.POSITIVE_INFINITY
and finite values
only or Double.POSITIVE_INFINITY
only, the result is Double.POSITIVE_INFINITY
.
If it contains Double.NEGATIVE_INFINITY
and finite values only or Double.NEGATIVE_INFINITY
only, the result is Double.NEGATIVE_INFINITY
.
public final double populationVariance()
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.
If the dataset contains any non-finite values (Double.POSITIVE_INFINITY
, Double.NEGATIVE_INFINITY
, or Double.NaN
) then the result is Double.NaN
.
IllegalStateException
- if the dataset is emptypublic final double populationStandardDeviation()
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.
If the dataset contains any non-finite values (Double.POSITIVE_INFINITY
, Double.NEGATIVE_INFINITY
, or Double.NaN
) then the result is Double.NaN
.
IllegalStateException
- if the dataset is emptypublic final double sampleVariance()
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.
If the dataset contains any non-finite values (Double.POSITIVE_INFINITY
, Double.NEGATIVE_INFINITY
, or Double.NaN
) then the result is Double.NaN
.
IllegalStateException
- if the dataset is empty or contains a single valuepublic final double sampleStandardDeviation()
populationStandardDeviation()
(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.
If the dataset contains any non-finite values (Double.POSITIVE_INFINITY
, Double.NEGATIVE_INFINITY
, or Double.NaN
) then the result is Double.NaN
.
IllegalStateException
- if the dataset is empty or contains a single valuepublic double min()
If the dataset contains Double.NaN
then the result is Double.NaN
. If it
contains Double.NEGATIVE_INFINITY
and not Double.NaN
then the result is Double.NEGATIVE_INFINITY
. If it contains Double.POSITIVE_INFINITY
and finite values
only then the result is the lowest finite value. If it contains Double.POSITIVE_INFINITY
only then the result is Double.POSITIVE_INFINITY
.
IllegalStateException
- if the dataset is emptypublic double max()
If the dataset contains Double.NaN
then the result is Double.NaN
. If it
contains Double.POSITIVE_INFINITY
and not Double.NaN
then the result is Double.POSITIVE_INFINITY
. If it contains Double.NEGATIVE_INFINITY
and finite values
only then the result is the highest finite value. If it contains Double.NEGATIVE_INFINITY
only then the result is Double.NEGATIVE_INFINITY
.
IllegalStateException
- if the dataset is emptyCopyright © 2010–2020. All rights reserved.