Class DoubleStatistics
- java.lang.Object
-
- org.apache.commons.statistics.descriptive.DoubleStatistics
-
- All Implemented Interfaces:
java.util.function.DoubleConsumer
public final class DoubleStatistics extends java.lang.Object implements java.util.function.DoubleConsumer
Statistics fordouble
values.This class provides combinations of individual statistic implementations in the
org.apache.commons.statistics.descriptive
package.Supports up to 263 (exclusive) observations. This implementation does not check for overflow of the count.
- Since:
- 1.1
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DoubleStatistics.Builder
A builder forDoubleStatistics
.
-
Field Summary
Fields Modifier and Type Field Description private StatisticsConfiguration
config
Configuration options for computation of statistics.private java.util.function.DoubleConsumer
consumer
The consumer of values.private long
count
Count of values recorded.private Max
max
TheMax
implementation.private Min
min
TheMin
implementation.private FirstMoment
moment
The moment implementation.private static java.lang.String
NO_CONFIGURED_STATISTICS
Error message for non configured statistics.private Product
product
TheProduct
implementation.private Sum
sum
TheSum
implementation.private SumOfLogs
sumOfLogs
TheSumOfLogs
implementation.private SumOfSquares
sumOfSquares
TheSumOfSquares
implementation.private static java.lang.String
UNSUPPORTED_STATISTIC
Error message for an unsupported statistic.
-
Constructor Summary
Constructors Constructor Description DoubleStatistics(long count, Min min, Max max, FirstMoment moment, Sum sum, Product product, SumOfSquares sumOfSquares, SumOfLogs sumOfLogs, StatisticsConfiguration config)
Create an instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accept(double value)
Updates the state of the statistics to reflect the addition ofvalue
.static DoubleStatistics.Builder
builder(Statistic... statistics)
Returns a new builder configured to create instances to compute the specifiedstatistics
.DoubleStatistics
combine(DoubleStatistics other)
Combines the state of theother
statistics into this one.double
getAsDouble(Statistic statistic)
Gets the value of the specifiedstatistic
as adouble
.long
getCount()
Return the count of values recorded.private StatisticResult
getGeometricMean()
Gets the geometric mean.private StatisticResult
getKurtosis()
Gets the kurtosis.private StatisticResult
getMean()
Gets the mean.StatisticResult
getResult(Statistic statistic)
Gets a supplier for the value of the specifiedstatistic
.private StatisticResult
getSkewness()
Gets the skewness.private StatisticResult
getStandardDeviation()
Gets the standard deviation.private StatisticResult
getVariance()
Gets the variance.boolean
isSupported(Statistic statistic)
Check if the specifiedstatistic
is supported.static DoubleStatistics
of(java.util.Set<Statistic> statistics, double... values)
Returns a new instance configured to compute the specifiedstatistics
populated using the inputvalues
.static DoubleStatistics
of(Statistic... statistics)
Returns a new instance configured to compute the specifiedstatistics
.DoubleStatistics
setConfiguration(StatisticsConfiguration v)
Sets the statistics configuration.
-
-
-
Field Detail
-
NO_CONFIGURED_STATISTICS
private static final java.lang.String NO_CONFIGURED_STATISTICS
Error message for non configured statistics.- See Also:
- Constant Field Values
-
UNSUPPORTED_STATISTIC
private static final java.lang.String UNSUPPORTED_STATISTIC
Error message for an unsupported statistic.- See Also:
- Constant Field Values
-
count
private long count
Count of values recorded.
-
consumer
private final java.util.function.DoubleConsumer consumer
The consumer of values.
-
moment
private final FirstMoment moment
The moment implementation. May be any instance ofFirstMoment
.
-
sumOfSquares
private final SumOfSquares sumOfSquares
TheSumOfSquares
implementation.
-
config
private StatisticsConfiguration config
Configuration options for computation of statistics.
-
-
Constructor Detail
-
DoubleStatistics
DoubleStatistics(long count, Min min, Max max, FirstMoment moment, Sum sum, Product product, SumOfSquares sumOfSquares, SumOfLogs sumOfLogs, StatisticsConfiguration config)
Create an instance.- Parameters:
count
- Count of values.min
- Min implementation.max
- Max implementation.moment
- Moment implementation.sum
- Sum implementation.product
- Product implementation.sumOfSquares
- Sum of squares implementation.sumOfLogs
- Sum of logs implementation.config
- Statistics configuration.
-
-
Method Detail
-
of
public static DoubleStatistics of(Statistic... statistics)
Returns a new instance configured to compute the specifiedstatistics
.The statistics will be empty and so will return the default values for each computed statistic.
- Parameters:
statistics
- Statistics to compute.- Returns:
- the instance
- Throws:
java.lang.IllegalArgumentException
- if there are nostatistics
to compute.
-
of
public static DoubleStatistics of(java.util.Set<Statistic> statistics, double... values)
Returns a new instance configured to compute the specifiedstatistics
populated using the inputvalues
.Use this method to create an instance populated with a (variable) array of
double[]
data:DoubleStatistics stats = DoubleStatistics.of( EnumSet.of(Statistic.MIN, Statistic.MAX), 1, 1, 2, 3, 5, 8, 13);
- Parameters:
statistics
- Statistics to compute.values
- Values.- Returns:
- the instance
- Throws:
java.lang.IllegalArgumentException
- if there are nostatistics
to compute.
-
builder
public static DoubleStatistics.Builder builder(Statistic... statistics)
Returns a new builder configured to create instances to compute the specifiedstatistics
.Use this method to create an instance populated with an array of
double[]
data using theDoubleStatistics.Builder.build(double...)
method:double[] data = ... DoubleStatistics stats = DoubleStatistics.builder( Statistic.MIN, Statistic.MAX, Statistic.VARIANCE) .build(data);
The builder can be used to create multiple instances of
DoubleStatistics
to be used in parallel, or on separate arrays ofdouble[]
data. These may becombined
. For example:double[][] data = ... DoubleStatistics.Builder builder = DoubleStatistics.builder( Statistic.MIN, Statistic.MAX, Statistic.VARIANCE); DoubleStatistics stats = Arrays.stream(data) .parallel() .map(builder::build) .reduce(DoubleStatistics::combine) .get();
The builder can be used to create a
Collector
for repeat use on multiple data:DoubleStatistics.Builder builder = DoubleStatistics.builder( Statistic.MIN, Statistic.MAX, Statistic.VARIANCE); Collector<double[], DoubleStatistics, DoubleStatistics> collector = Collector.of(builder::build, (s, d) -> s.combine(builder.build(d)), DoubleStatistics::combine); // Repeated double[][] data = ... DoubleStatistics stats = Arrays.stream(data).collect(collector);
- Parameters:
statistics
- Statistics to compute.- Returns:
- the builder
- Throws:
java.lang.IllegalArgumentException
- if there are nostatistics
to compute.
-
accept
public void accept(double value)
Updates the state of the statistics to reflect the addition ofvalue
.- Specified by:
accept
in interfacejava.util.function.DoubleConsumer
- Parameters:
value
- Value.
-
getCount
public long getCount()
Return the count of values recorded.- Returns:
- the count of values
-
isSupported
public boolean isSupported(Statistic statistic)
Check if the specifiedstatistic
is supported.Note: This method will not return
false
if the argument isnull
.- Parameters:
statistic
- Statistic.- Returns:
true
if supported- Throws:
java.lang.NullPointerException
- if thestatistic
isnull
- See Also:
getAsDouble(Statistic)
-
getAsDouble
public double getAsDouble(Statistic statistic)
Gets the value of the specifiedstatistic
as adouble
.- Parameters:
statistic
- Statistic.- Returns:
- the value
- Throws:
java.lang.IllegalArgumentException
- if thestatistic
is not supported- See Also:
isSupported(Statistic)
,getResult(Statistic)
-
getResult
public StatisticResult getResult(Statistic statistic)
Gets a supplier for the value of the specifiedstatistic
.The returned function will supply the correct result after calls to
accept
orcombine
further values intothis
instance.This method can be used to perform a one-time look-up of the statistic function to compute statistics as values are dynamically added.
- Parameters:
statistic
- Statistic.- Returns:
- the supplier
- Throws:
java.lang.IllegalArgumentException
- if thestatistic
is not supported- See Also:
isSupported(Statistic)
,getAsDouble(Statistic)
-
getGeometricMean
private StatisticResult getGeometricMean()
Gets the geometric mean.- Returns:
- a geometric mean supplier (or null if unsupported)
-
getKurtosis
private StatisticResult getKurtosis()
Gets the kurtosis.- Returns:
- a kurtosis supplier (or null if unsupported)
-
getMean
private StatisticResult getMean()
Gets the mean.- Returns:
- a mean supplier (or null if unsupported)
-
getSkewness
private StatisticResult getSkewness()
Gets the skewness.- Returns:
- a skewness supplier (or null if unsupported)
-
getStandardDeviation
private StatisticResult getStandardDeviation()
Gets the standard deviation.- Returns:
- a standard deviation supplier (or null if unsupported)
-
getVariance
private StatisticResult getVariance()
Gets the variance.- Returns:
- a variance supplier (or null if unsupported)
-
combine
public DoubleStatistics combine(DoubleStatistics other)
Combines the state of theother
statistics into this one. Onlythis
instance is modified by thecombine
operation.The
other
instance must be compatible. This istrue
if theother
instance returnstrue
forisSupported(Statistic)
for all values of theStatistic
enum which are supported bythis
instance.Note that this operation is not symmetric. It may be possible to perform
a.combine(b)
but notb.combine(a)
. In the event that theother
instance is not compatible then an exception is raised before any state is modified.- Parameters:
other
- Another set of statistics to be combined.- Returns:
this
instance after combiningother
.- Throws:
java.lang.IllegalArgumentException
- if theother
is not compatible
-
setConfiguration
public DoubleStatistics setConfiguration(StatisticsConfiguration v)
Sets the statistics configuration.These options only control the final computation of statistics. The configuration will not affect compatibility between instances during a
combine
operation.Note: These options will affect any future computation of statistics. Supplier functions that have been previously created will not be updated with the new configuration.
- Parameters:
v
- Value.- Returns:
this
instance- Throws:
java.lang.NullPointerException
- if the value is null- See Also:
getResult(Statistic)
-
-