Class SynchronizedSummaryStatistics

java.lang.Object
org.apache.commons.math3.stat.descriptive.SummaryStatistics
org.apache.commons.math3.stat.descriptive.SynchronizedSummaryStatistics
All Implemented Interfaces:
Serializable, StatisticalSummary

public class SynchronizedSummaryStatistics extends SummaryStatistics
Implementation of SummaryStatistics that is safe to use in a multithreaded environment. Multiple threads can safely operate on a single instance without causing runtime exceptions due to race conditions. In effect, this implementation makes modification and access methods atomic operations for a single instance. That is to say, as one thread is computing a statistic from the instance, no other thread can modify the instance nor compute another statistic.
Since:
1.2
See Also:
  • Constructor Details

    • SynchronizedSummaryStatistics

      public SynchronizedSummaryStatistics()
      Construct a SynchronizedSummaryStatistics instance
    • SynchronizedSummaryStatistics

      public SynchronizedSummaryStatistics(SynchronizedSummaryStatistics original) throws NullArgumentException
      A copy constructor. Creates a deep-copy of the original.
      Parameters:
      original - the SynchronizedSummaryStatistics instance to copy
      Throws:
      NullArgumentException - if original is null
  • Method Details

    • getSummary

      public StatisticalSummary getSummary()
      Return a StatisticalSummaryValues instance reporting current statistics.
      Overrides:
      getSummary in class SummaryStatistics
      Returns:
      Current values of statistics
    • addValue

      public void addValue(double value)
      Add a value to the data
      Overrides:
      addValue in class SummaryStatistics
      Parameters:
      value - the value to add
    • getN

      public long getN()
      Returns the number of available values
      Specified by:
      getN in interface StatisticalSummary
      Overrides:
      getN in class SummaryStatistics
      Returns:
      The number of available values
    • getSum

      public double getSum()
      Returns the sum of the values that have been added
      Specified by:
      getSum in interface StatisticalSummary
      Overrides:
      getSum in class SummaryStatistics
      Returns:
      The sum or Double.NaN if no values have been added
    • getSumsq

      public double getSumsq()
      Returns the sum of the squares of the values that have been added.

      Double.NaN is returned if no values have been added.

      Overrides:
      getSumsq in class SummaryStatistics
      Returns:
      The sum of squares
    • getMean

      public double getMean()
      Returns the mean of the values that have been added.

      Double.NaN is returned if no values have been added.

      Specified by:
      getMean in interface StatisticalSummary
      Overrides:
      getMean in class SummaryStatistics
      Returns:
      the mean
    • getStandardDeviation

      public double getStandardDeviation()
      Returns the standard deviation of the values that have been added.

      Double.NaN is returned if no values have been added.

      Specified by:
      getStandardDeviation in interface StatisticalSummary
      Overrides:
      getStandardDeviation in class SummaryStatistics
      Returns:
      the standard deviation
    • getQuadraticMean

      public double getQuadraticMean()
      Returns the quadratic mean, a.k.a. root-mean-square of the available values
      Overrides:
      getQuadraticMean in class SummaryStatistics
      Returns:
      The quadratic mean or Double.NaN if no values have been added.
    • getVariance

      public double getVariance()
      Returns the (sample) variance of the available values.

      This method returns the bias-corrected sample variance (using n - 1 in the denominator). Use SummaryStatistics.getPopulationVariance() for the non-bias-corrected population variance.

      Double.NaN is returned if no values have been added.

      Specified by:
      getVariance in interface StatisticalSummary
      Overrides:
      getVariance in class SummaryStatistics
      Returns:
      the variance
    • getPopulationVariance

      public double getPopulationVariance()
      Returns the population variance of the values that have been added.

      Double.NaN is returned if no values have been added.

      Overrides:
      getPopulationVariance in class SummaryStatistics
      Returns:
      the population variance
    • getMax

      public double getMax()
      Returns the maximum of the values that have been added.

      Double.NaN is returned if no values have been added.

      Specified by:
      getMax in interface StatisticalSummary
      Overrides:
      getMax in class SummaryStatistics
      Returns:
      the maximum
    • getMin

      public double getMin()
      Returns the minimum of the values that have been added.

      Double.NaN is returned if no values have been added.

      Specified by:
      getMin in interface StatisticalSummary
      Overrides:
      getMin in class SummaryStatistics
      Returns:
      the minimum
    • getGeometricMean

      public double getGeometricMean()
      Returns the geometric mean of the values that have been added.

      Double.NaN is returned if no values have been added.

      Overrides:
      getGeometricMean in class SummaryStatistics
      Returns:
      the geometric mean
    • toString

      public String toString()
      Generates a text report displaying summary statistics from values that have been added.
      Overrides:
      toString in class SummaryStatistics
      Returns:
      String with line feeds displaying statistics
    • clear

      public void clear()
      Resets all statistics and storage
      Overrides:
      clear in class SummaryStatistics
    • equals

      public boolean equals(Object object)
      Returns true iff object is a SummaryStatistics instance and all statistics have the same values as this.
      Overrides:
      equals in class SummaryStatistics
      Parameters:
      object - the object to test equality against.
      Returns:
      true if object equals this
    • hashCode

      public int hashCode()
      Returns hash code based on values of statistics
      Overrides:
      hashCode in class SummaryStatistics
      Returns:
      hash code
    • getSumImpl

      public StorelessUnivariateStatistic getSumImpl()
      Returns the currently configured Sum implementation
      Overrides:
      getSumImpl in class SummaryStatistics
      Returns:
      the StorelessUnivariateStatistic implementing the sum
    • setSumImpl

      public void setSumImpl(StorelessUnivariateStatistic sumImpl) throws MathIllegalStateException

      Sets the implementation for the Sum.

      This method cannot be activated after data has been added - i.e., after addValue has been used to add data. If it is activated after data has been added, an IllegalStateException will be thrown.

      Overrides:
      setSumImpl in class SummaryStatistics
      Parameters:
      sumImpl - the StorelessUnivariateStatistic instance to use for computing the Sum
      Throws:
      MathIllegalStateException - if data has already been added (i.e if n >0)
    • getSumsqImpl

      public StorelessUnivariateStatistic getSumsqImpl()
      Returns the currently configured sum of squares implementation
      Overrides:
      getSumsqImpl in class SummaryStatistics
      Returns:
      the StorelessUnivariateStatistic implementing the sum of squares
    • setSumsqImpl

      public void setSumsqImpl(StorelessUnivariateStatistic sumsqImpl) throws MathIllegalStateException

      Sets the implementation for the sum of squares.

      This method cannot be activated after data has been added - i.e., after addValue has been used to add data. If it is activated after data has been added, an IllegalStateException will be thrown.

      Overrides:
      setSumsqImpl in class SummaryStatistics
      Parameters:
      sumsqImpl - the StorelessUnivariateStatistic instance to use for computing the sum of squares
      Throws:
      MathIllegalStateException - if data has already been added (i.e if n > 0)
    • getMinImpl

      public StorelessUnivariateStatistic getMinImpl()
      Returns the currently configured minimum implementation
      Overrides:
      getMinImpl in class SummaryStatistics
      Returns:
      the StorelessUnivariateStatistic implementing the minimum
    • setMinImpl

      public void setMinImpl(StorelessUnivariateStatistic minImpl) throws MathIllegalStateException

      Sets the implementation for the minimum.

      This method cannot be activated after data has been added - i.e., after addValue has been used to add data. If it is activated after data has been added, an IllegalStateException will be thrown.

      Overrides:
      setMinImpl in class SummaryStatistics
      Parameters:
      minImpl - the StorelessUnivariateStatistic instance to use for computing the minimum
      Throws:
      MathIllegalStateException - if data has already been added (i.e if n > 0)
    • getMaxImpl

      public StorelessUnivariateStatistic getMaxImpl()
      Returns the currently configured maximum implementation
      Overrides:
      getMaxImpl in class SummaryStatistics
      Returns:
      the StorelessUnivariateStatistic implementing the maximum
    • setMaxImpl

      public void setMaxImpl(StorelessUnivariateStatistic maxImpl) throws MathIllegalStateException

      Sets the implementation for the maximum.

      This method cannot be activated after data has been added - i.e., after addValue has been used to add data. If it is activated after data has been added, an IllegalStateException will be thrown.

      Overrides:
      setMaxImpl in class SummaryStatistics
      Parameters:
      maxImpl - the StorelessUnivariateStatistic instance to use for computing the maximum
      Throws:
      MathIllegalStateException - if data has already been added (i.e if n > 0)
    • getSumLogImpl

      public StorelessUnivariateStatistic getSumLogImpl()
      Returns the currently configured sum of logs implementation
      Overrides:
      getSumLogImpl in class SummaryStatistics
      Returns:
      the StorelessUnivariateStatistic implementing the log sum
    • setSumLogImpl

      public void setSumLogImpl(StorelessUnivariateStatistic sumLogImpl) throws MathIllegalStateException

      Sets the implementation for the sum of logs.

      This method cannot be activated after data has been added - i.e., after addValue has been used to add data. If it is activated after data has been added, an IllegalStateException will be thrown.

      Overrides:
      setSumLogImpl in class SummaryStatistics
      Parameters:
      sumLogImpl - the StorelessUnivariateStatistic instance to use for computing the log sum
      Throws:
      MathIllegalStateException - if data has already been added (i.e if n > 0)
    • getGeoMeanImpl

      public StorelessUnivariateStatistic getGeoMeanImpl()
      Returns the currently configured geometric mean implementation
      Overrides:
      getGeoMeanImpl in class SummaryStatistics
      Returns:
      the StorelessUnivariateStatistic implementing the geometric mean
    • setGeoMeanImpl

      public void setGeoMeanImpl(StorelessUnivariateStatistic geoMeanImpl) throws MathIllegalStateException

      Sets the implementation for the geometric mean.

      This method cannot be activated after data has been added - i.e., after addValue has been used to add data. If it is activated after data has been added, an IllegalStateException will be thrown.

      Overrides:
      setGeoMeanImpl in class SummaryStatistics
      Parameters:
      geoMeanImpl - the StorelessUnivariateStatistic instance to use for computing the geometric mean
      Throws:
      MathIllegalStateException - if data has already been added (i.e if n > 0)
    • getMeanImpl

      public StorelessUnivariateStatistic getMeanImpl()
      Returns the currently configured mean implementation
      Overrides:
      getMeanImpl in class SummaryStatistics
      Returns:
      the StorelessUnivariateStatistic implementing the mean
    • setMeanImpl

      public void setMeanImpl(StorelessUnivariateStatistic meanImpl) throws MathIllegalStateException

      Sets the implementation for the mean.

      This method cannot be activated after data has been added - i.e., after addValue has been used to add data. If it is activated after data has been added, an IllegalStateException will be thrown.

      Overrides:
      setMeanImpl in class SummaryStatistics
      Parameters:
      meanImpl - the StorelessUnivariateStatistic instance to use for computing the mean
      Throws:
      MathIllegalStateException - if data has already been added (i.e if n > 0)
    • getVarianceImpl

      public StorelessUnivariateStatistic getVarianceImpl()
      Returns the currently configured variance implementation
      Overrides:
      getVarianceImpl in class SummaryStatistics
      Returns:
      the StorelessUnivariateStatistic implementing the variance
    • setVarianceImpl

      public void setVarianceImpl(StorelessUnivariateStatistic varianceImpl) throws MathIllegalStateException

      Sets the implementation for the variance.

      This method cannot be activated after data has been added - i.e., after addValue has been used to add data. If it is activated after data has been added, an IllegalStateException will be thrown.

      Overrides:
      setVarianceImpl in class SummaryStatistics
      Parameters:
      varianceImpl - the StorelessUnivariateStatistic instance to use for computing the variance
      Throws:
      MathIllegalStateException - if data has already been added (i.e if n > 0)
    • copy

      Returns a copy of this SynchronizedSummaryStatistics instance with the same internal state.
      Overrides:
      copy in class SummaryStatistics
      Returns:
      a copy of this
    • copy

      Copies source to dest.

      Neither source nor dest can be null.

      Acquires synchronization lock on source, then dest before copying.

      Parameters:
      source - SynchronizedSummaryStatistics to copy
      dest - SynchronizedSummaryStatistics to copy to
      Throws:
      NullArgumentException - if either source or dest is null