Class LongMomentStatistics

java.lang.Object
io.jenetics.stat.LongMomentStatistics
All Implemented Interfaces:
IntConsumer, LongConsumer

public class LongMomentStatistics extends Object implements LongConsumer, IntConsumer
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 design of the LongSummaryStatistics class.

This class is designed to work with (though does not require) streams. For example, you can compute moments-statistics on a stream of longs with:

final LongStream stream = ...;
final LongMomentStatistics statistics = stream.collect(
        LongMomentStatistics::new,
        LongMomentStatistics::accept,
        LongMomentStatistics::combine
    );
For a non-long stream, you can use a collector:
final Stream<SomeObject> stream = ...;
final LongMomentStatistics statistics = stream
    .collect(toLongMomentStatistics(v -> v.longValue()));
Since:
3.0
Version:
6.0
See Also:
Implementation Note:
This implementation is not thread safe. However, it is safe to use toLongMomentStatistics(ToLongFunction) on a parallel stream, because the parallel implementation of Stream.collect() provides the necessary partitioning, isolation, and merging of results for safe and efficient parallel execution.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create an empty moments object.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    accept(int value)
    Records a new value into the moment information
    void
    accept(long value)
    Records a new value into the moment information
    Combine two LongMoments statistic objects.
    long
    Returns the count of values recorded.
    double
    Return the kurtosis of values recorded, or Double.NaN if less than four values have been recorded.
    long
    max()
    Return the maximum value recorded, or Long.MIN_VALUE if no values have been recorded.
    double
    Return the arithmetic mean of values recorded, or Double.NaN if no values have been recorded.
    long
    min()
    Return the minimum value recorded, or Long.MAX_VALUE if no values have been recorded.
    boolean
    Compares the state of two LongMomentStatistics objects.
    double
    Return the skewness of values recorded, or Double.NaN if less than two values have been recorded.
    long
    sum()
    Return the sum of values recorded, or zero if no values have been recorded.
    Return a LongMoments object from the current statistics,
    Return a Collector which applies a long-producing mapping function to each input element, and returns moments-statistics for the resulting values.
     
    double
    Return the variance of values recorded, or Double.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.IntConsumer

    andThen

    Methods inherited from interface java.util.function.LongConsumer

    andThen
  • Constructor Details

  • Method Details

    • accept

      public void accept(long value)
      Records a new value into the moment information
      Specified by:
      accept in interface LongConsumer
      Parameters:
      value - the input value
    • accept

      public void accept(int value)
      Records a new value into the moment information
      Specified by:
      accept in interface IntConsumer
      Parameters:
      value - the input value
    • combine

      Combine two LongMoments statistic objects.
      Parameters:
      other - the other LongMoments statistics to combine with this one.
      Returns:
      this statistics object
      Throws:
      NullPointerException - if the other statistical summary is null.
    • min

      public long min()
      Return the minimum value recorded, or Long.MAX_VALUE if no values have been recorded.
      Returns:
      the minimum value, or Long.MAX_VALUE if none
    • max

      public long max()
      Return the maximum value recorded, or Long.MIN_VALUE if no values have been recorded.
      Returns:
      the maximum value, or Long.MIN_VALUE if none
    • sum

      public long 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

      public boolean sameState(LongMomentStatistics other)
      Compares the state of two LongMomentStatistics objects. This is a replacement for the Object.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 LongMomentStatistics lms1 = ...;
      final LongMomentStatistics lms2 = ...;
      
      if (lms1.sameState(lms2)) {
          final long value = random.nextInt(1_000_000);
          lms1.accept(value);
          lms2.accept(value);
      
          assert lms1.sameState(lms2);
          assert lms2.sameState(lms1);
          assert lms1.sameState(lms1);
      }
      
      Parameters:
      other - the other object for the test
      Returns:
      true the this and the other objects have the same state, false otherwise
      Since:
      3.7
    • toLongMoments

      Return a LongMoments object from the current statistics,
      Returns:
      a LongMoments object from the current statistics
      Since:
      3.9
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toLongMomentStatistics

      public static <T> Collector<T,?,LongMomentStatistics> toLongMomentStatistics(ToLongFunction<? super T> mapper)
      Return a Collector which applies a long-producing mapping function to each input element, and returns moments-statistics for the resulting values.
      final Stream<SomeObject> stream = ...;
      final LongMomentStatistics statistics = stream
          .collect(toLongMomentStatistics(v -> v.longValue()));
      
      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 given mapper is null
    • 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, or Double.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, or Double.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, or Double.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, or Double.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: