Class StatsAccumulator
- Since:
- 20.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate long
private double
private double
private double
private double
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
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
(long... values) Adds the given values to the dataset.void
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.void
Adds the given values to the dataset.void
Adds the given values to the dataset.void
addAll
(DoubleStream values) Adds the given values to the dataset.void
Adds the given values to the dataset.void
addAll
(LongStream values) Adds the given values to the dataset.(package private) static double
calculateNewMeanNonFinite
(double previousMean, double value) Calculates the new value for the accumulated mean when a value is added, in the case where at least one of the previous mean and the value is non-finite.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.private void
merge
(long otherCount, double otherMean, double otherSumOfSquaresOfDeltas, double otherMin, double otherMax) double
min()
Returns the lowest value in the dataset.final double
Returns the population standard deviation of the values.final double
Returns the population variance of the values.final double
Returns the corrected sample standard deviation of the values.final double
Returns the unbiased sample variance of the values.snapshot()
Returns an immutable snapshot of the current statistics.final double
sum()
Returns the sum of the values.(package private) double
-
Field Details
-
count
private long count -
mean
private double mean -
sumOfSquaresOfDeltas
private double sumOfSquaresOfDeltas -
min
private double min -
max
private double max
-
-
Constructor Details
-
StatsAccumulator
public StatsAccumulator()
-
-
Method Details
-
add
public void add(double value) Adds the given value to the dataset. -
addAll
Adds the given values to the dataset.- Parameters:
values
- a series of values, which will be converted todouble
values (this may cause loss of precision)
-
addAll
Adds the given values to the dataset.- Parameters:
values
- a series of values, which will be converted todouble
values (this may cause loss of precision)
-
addAll
public void addAll(double... values) Adds the given values to the dataset.- Parameters:
values
- a series of values
-
addAll
public void addAll(int... values) Adds the given values to the dataset.- Parameters:
values
- a series of values
-
addAll
public void addAll(long... values) Adds the given values to the dataset.- Parameters:
values
- a series of values, which will be converted todouble
values (this may cause loss of precision for longs of magnitude over 2^53 (slightly over 9e15))
-
addAll
Adds the given values to the dataset. The stream will be completely consumed by this method.- Parameters:
values
- a series of values- Since:
- 28.2
-
addAll
Adds the given values to the dataset. The stream will be completely consumed by this method.- Parameters:
values
- a series of values- Since:
- 28.2
-
addAll
Adds the given values to the dataset. The stream will be completely consumed by this method.- Parameters:
values
- a series of values, which will be converted todouble
values (this may cause loss of precision for longs of magnitude over 2^53 (slightly over 9e15))- Since:
- 28.2
-
addAll
Adds the given statistics to the dataset, as if the individual values used to compute the statistics had been added directly. -
addAll
Adds the given statistics to the dataset, as if the individual values used to compute the statistics had been added directly.- Since:
- 28.2
-
merge
private void merge(long otherCount, double otherMean, double otherSumOfSquaresOfDeltas, double otherMin, double otherMax) -
snapshot
Returns an immutable snapshot of the current statistics. -
count
public long count()Returns the number of values. -
mean
public 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 values
If the dataset contains
Double.NaN
then the result isDouble.NaN
. If it contains bothDouble.POSITIVE_INFINITY
andDouble.NEGATIVE_INFINITY
then the result isDouble.NaN
. If it containsDouble.POSITIVE_INFINITY
and finite values only orDouble.POSITIVE_INFINITY
only, the result isDouble.POSITIVE_INFINITY
. If it containsDouble.NEGATIVE_INFINITY
and finite values only orDouble.NEGATIVE_INFINITY
only, the result isDouble.NEGATIVE_INFINITY
.- Throws:
IllegalStateException
- if the dataset is empty
-
sum
public final double sum()Returns the sum of the values.Non-finite values
If the dataset contains
Double.NaN
then the result isDouble.NaN
. If it contains bothDouble.POSITIVE_INFINITY
andDouble.NEGATIVE_INFINITY
then the result isDouble.NaN
. If it containsDouble.POSITIVE_INFINITY
and finite values only orDouble.POSITIVE_INFINITY
only, the result isDouble.POSITIVE_INFINITY
. If it containsDouble.NEGATIVE_INFINITY
and finite values only orDouble.NEGATIVE_INFINITY
only, the result isDouble.NEGATIVE_INFINITY
. -
populationVariance
public final 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 values
If the dataset contains any non-finite values (
Double.POSITIVE_INFINITY
,Double.NEGATIVE_INFINITY
, orDouble.NaN
) then the result isDouble.NaN
.- Throws:
IllegalStateException
- if the dataset is empty
-
populationStandardDeviation
public final 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 values
If the dataset contains any non-finite values (
Double.POSITIVE_INFINITY
,Double.NEGATIVE_INFINITY
, orDouble.NaN
) then the result isDouble.NaN
.- Throws:
IllegalStateException
- if the dataset is empty
-
sampleVariance
public final 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 values
If the dataset contains any non-finite values (
Double.POSITIVE_INFINITY
,Double.NEGATIVE_INFINITY
, orDouble.NaN
) then the result isDouble.NaN
.- Throws:
IllegalStateException
- if the dataset is empty or contains a single value
-
sampleStandardDeviation
public final 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 values
If the dataset contains any non-finite values (
Double.POSITIVE_INFINITY
,Double.NEGATIVE_INFINITY
, orDouble.NaN
) then the result isDouble.NaN
.- Throws:
IllegalStateException
- if the dataset is empty or contains a single value
-
min
public double min()Returns the lowest value in the dataset. The count must be non-zero.Non-finite values
If the dataset contains
Double.NaN
then the result isDouble.NaN
. If it containsDouble.NEGATIVE_INFINITY
and notDouble.NaN
then the result isDouble.NEGATIVE_INFINITY
. If it containsDouble.POSITIVE_INFINITY
and finite values only then the result is the lowest finite value. If it containsDouble.POSITIVE_INFINITY
only then the result isDouble.POSITIVE_INFINITY
.- Throws:
IllegalStateException
- if the dataset is empty
-
max
public double max()Returns the highest value in the dataset. The count must be non-zero.Non-finite values
If the dataset contains
Double.NaN
then the result isDouble.NaN
. If it containsDouble.POSITIVE_INFINITY
and notDouble.NaN
then the result isDouble.POSITIVE_INFINITY
. If it containsDouble.NEGATIVE_INFINITY
and finite values only then the result is the highest finite value. If it containsDouble.NEGATIVE_INFINITY
only then the result isDouble.NEGATIVE_INFINITY
.- Throws:
IllegalStateException
- if the dataset is empty
-
sumOfSquaresOfDeltas
double sumOfSquaresOfDeltas() -
calculateNewMeanNonFinite
static double calculateNewMeanNonFinite(double previousMean, double value) Calculates the new value for the accumulated mean when a value is added, in the case where at least one of the previous mean and the value is non-finite.
-