java.lang.Object
io.jenetics.stat.DoubleMomentStatistics
- All Implemented Interfaces:
DoubleConsumer
A state object for collecting statistics such as count, min, max, sum, mean,
variance, skewness and kurtosis. The design of this class is similar to the
For a non-double stream, you can use a collector:
DoubleSummaryStatistics
class.
This class is designed to work with (though does not require) streams. For example, you can compute moments-statistics on a stream of doubles with:
final DoubleStream stream = ...;
final DoubleMomentStatistics statistics = stream.collect(
DoubleMomentStatistics::new,
DoubleMomentStatistics::accept,
DoubleMomentStatistics::combine
);
final Stream<SomeObject> stream = ...;
final DoubleMomentStatistics statistics = stream
.collect(toDoubleMomentStatistics(v -> v.doubleValue()));
- Since:
- 3.0
- Version:
- 6.0
- See Also:
- Implementation Note:
- This implementation is not thread safe. However, it is safe to use
toDoubleMomentStatistics(ToDoubleFunction)
on a parallel stream, because the parallel implementation ofStream.collect()
provides the necessary partitioning, isolation, and merging of results for safe and efficient parallel execution.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(double value) Records a new value into the moment informationcombine
(DoubleMomentStatistics other) Combine twoDoubleMoments
statistic objects.long
count()
Returns the count of values recorded.double
kurtosis()
Return the kurtosis of values recorded, orDouble.NaN
if less than four values have been recorded.double
max()
Return the maximum value recorded, orDouble.NEGATIVE_INFINITY
if no values have been recorded.double
mean()
Return the arithmetic mean of values recorded, orDouble.NaN
if no values have been recorded.double
min()
Return the minimum value recorded, orDouble.POSITIVE_INFINITY
if no values have been recorded.result()
boolean
sameState
(DoubleMomentStatistics other) Compares the state of twoDoubleMomentStatistics
objects.double
skewness()
Return the skewness of values recorded, orDouble.NaN
if less than two values have been recorded.double
sum()
Return the sum of values recorded, or zero if no values have been recorded.Return aDoubleMoments
object from the current statistics,static <T> Collector
<T, ?, DoubleMomentStatistics> toDoubleMomentStatistics
(ToDoubleFunction<? super T> mapper) Return aCollector
which applies a double-producing mapping function to each input element, and returns moments-statistics for the resulting values.toString()
double
variance()
Return the variance of values recorded, orDouble.NaN
if no values have been recorded.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.function.DoubleConsumer
andThen
-
Constructor Details
-
DoubleMomentStatistics
public DoubleMomentStatistics()Create an empty moments object.
-
-
Method Details
-
accept
Records a new value into the moment information- Specified by:
accept
in interfaceDoubleConsumer
- Parameters:
value
- the inputvalue
-
combine
Combine twoDoubleMoments
statistic objects.- Parameters:
other
- the otherDoubleMoments
statistics to combine withthis
one.- Returns:
this
statistics object- Throws:
NullPointerException
- if the other statistical summary isnull
.
-
min
Return the minimum value recorded, orDouble.POSITIVE_INFINITY
if no values have been recorded.- Returns:
- the minimum value, or
Double.POSITIVE_INFINITY
if none
-
max
Return the maximum value recorded, orDouble.NEGATIVE_INFINITY
if no values have been recorded.- Returns:
- the maximum value, or
Double.NEGATIVE_INFINITY
if none
-
sum
Return the sum of values recorded, or zero if no values have been recorded.- Returns:
- the sum of values, or zero if none
-
sameState
Compares the state of twoDoubleMomentStatistics
objects. This is a replacement for theObject.equals(Object)
which is not advisable to implement for this mutable object. If two objects have the same state, it has still the same state when updated with the same value.final DoubleMomentStatistics ds1 = ...; final DoubleMomentStatistics ds2 = ...; if (ds1.sameState(ds2)) { final double value = random.nextDouble(); ds1.accept(value); ds2.accept(value); assert ds1.sameState(ds2); assert ds2.sameState(ds1); assert ds1.sameState(ds1); }
- Parameters:
other
- the other object for the test- Returns:
true
thethis
and theother
objects have the same state,false
otherwise- Since:
- 3.7
-
toDoubleMoments
Return aDoubleMoments
object from the current statistics,- Returns:
- a
DoubleMoments
object from the current statistics - Since:
- 3.9
-
result
-
toString
-
toDoubleMomentStatistics
public static <T> Collector<T,?, toDoubleMomentStatisticsDoubleMomentStatistics> (ToDoubleFunction<? super T> mapper) Return aCollector
which applies a double-producing mapping function to each input element, and returns moments-statistics for the resulting values.final Stream<SomeObject> stream = ...; final DoubleMomentStatistics statistics = stream .collect(toDoubleMomentStatistics(v -> v.doubleValue()));
- Type Parameters:
T
- the type of the input elements- Parameters:
mapper
- a mapping function to apply to each element- Returns:
- a
Collector
implementing the moments-statistics reduction - Throws:
NullPointerException
- if the givenmapper
isnull
-
count
public long count()Returns the count of values recorded.- Returns:
- the count of recorded values
-
mean
public double mean()Return the arithmetic mean of values recorded, orDouble.NaN
if no values have been recorded.- Returns:
- the arithmetic mean of values, or zero if none
-
variance
public double variance()Return the variance of values recorded, orDouble.NaN
if no values have been recorded.- Returns:
- the variance of values, or
NaN
if none
-
skewness
public double skewness()Return the skewness of values recorded, orDouble.NaN
if less than two values have been recorded.- Returns:
- the skewness of values, or
NaN
if less than two values have been recorded - See Also:
-
kurtosis
public double kurtosis()Return the kurtosis of values recorded, orDouble.NaN
if less than four values have been recorded.- Returns:
- the kurtosis of values, or
NaN
if less than four values have been recorded - See Also:
-