Package cern.jet.stat.quantile
Class ExactDoubleQuantileFinder
- java.lang.Object
-
- cern.colt.PersistentObject
-
- cern.jet.stat.quantile.ExactDoubleQuantileFinder
-
- All Implemented Interfaces:
DoubleQuantileFinder,java.io.Serializable,java.lang.Cloneable
class ExactDoubleQuantileFinder extends PersistentObject implements DoubleQuantileFinder
Exact quantile finding algorithm for known and unknown N requiring large main memory; computes quantiles over a sequence of double elements. The folkore algorithm: Keeps all elements in main memory, sorts the list, then picks the quantiles.- Version:
- 1.0, 09/24/99
-
-
Field Summary
Fields Modifier and Type Field Description protected DoubleArrayListbufferprotected booleanisSorted-
Fields inherited from class cern.colt.PersistentObject
serialVersionUID
-
-
Constructor Summary
Constructors Constructor Description ExactDoubleQuantileFinder()Constructs an empty exact quantile finder.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(double value)Adds a value to the receiver.voidaddAllOf(DoubleArrayList values)Adds all values of the specified list to the receiver.voidaddAllOfFromTo(DoubleArrayList values, int from, int to)Adds the part of the specified list between indexes from (inclusive) and to (inclusive) to the receiver.voidclear()Removes all elements from the receiver.java.lang.Objectclone()Returns a deep copy of the receiver.booleancontains(double element)Returns whether the specified element is contained in the receiver.booleanforEach(DoubleProcedure procedure)Applies a procedure to each element of the receiver, if any.longmemory()Returns the number of elements currently needed to store all contained elements.doublephi(double element)Returns how many percent of the elements contained in the receiver are <= element.DoubleArrayListquantileElements(DoubleArrayList phis)Computes the specified quantile elements over the values previously added.longsize()Returns the number of elements currently contained in the receiver (identical to the number of values added so far).protected voidsort()Sorts the receiver.java.lang.StringtoString()Returns a String representation of the receiver.longtotalMemory()Returns the number of elements currently needed to store all contained elements.
-
-
-
Field Detail
-
buffer
protected DoubleArrayList buffer
-
isSorted
protected boolean isSorted
-
-
Method Detail
-
add
public void add(double value)
Adds a value to the receiver.- Specified by:
addin interfaceDoubleQuantileFinder- Parameters:
value- the value to add.
-
addAllOf
public void addAllOf(DoubleArrayList values)
Adds all values of the specified list to the receiver.- Specified by:
addAllOfin interfaceDoubleQuantileFinder- Parameters:
values- the list of which all values shall be added.
-
addAllOfFromTo
public void addAllOfFromTo(DoubleArrayList values, int from, int to)
Adds the part of the specified list between indexes from (inclusive) and to (inclusive) to the receiver.- Specified by:
addAllOfFromToin interfaceDoubleQuantileFinder- Parameters:
values- the list of which elements shall be added.from- the index of the first element to be added (inclusive).to- the index of the last element to be added (inclusive).
-
clear
public void clear()
Removes all elements from the receiver. The receiver will be empty after this call returns, and its memory requirements will be close to zero.- Specified by:
clearin interfaceDoubleQuantileFinder
-
clone
public java.lang.Object clone()
Returns a deep copy of the receiver.- Specified by:
clonein interfaceDoubleQuantileFinder- Overrides:
clonein classPersistentObject- Returns:
- a deep copy of the receiver.
-
contains
public boolean contains(double element)
Returns whether the specified element is contained in the receiver.
-
forEach
public boolean forEach(DoubleProcedure procedure)
Applies a procedure to each element of the receiver, if any. Iterates over the receiver in no particular order.- Specified by:
forEachin interfaceDoubleQuantileFinder- Parameters:
procedure- the procedure to be applied. Stops iteration if the procedure returns false, otherwise continues.- Returns:
- false if the procedure stopped before all elements where iterated over, true otherwise.
-
memory
public long memory()
Returns the number of elements currently needed to store all contained elements. This number usually differs from the results of method size(), according to the underlying datastructure.- Specified by:
memoryin interfaceDoubleQuantileFinder
-
phi
public double phi(double element)
Returns how many percent of the elements contained in the receiver are <= element. Does linear interpolation if the element is not contained but lies in between two contained elements.- Specified by:
phiin interfaceDoubleQuantileFinder- Parameters:
the- element to search for.- Returns:
- the percentage p of elements <= element (0.0 <= p <=1.0).
-
quantileElements
public DoubleArrayList quantileElements(DoubleArrayList phis)
Computes the specified quantile elements over the values previously added.- Specified by:
quantileElementsin interfaceDoubleQuantileFinder- Parameters:
phis- the quantiles for which elements are to be computed. Each phi must be in the interval [0.0,1.0]. phis must be sorted ascending.- Returns:
- the exact quantile elements.
-
size
public long size()
Returns the number of elements currently contained in the receiver (identical to the number of values added so far).- Specified by:
sizein interfaceDoubleQuantileFinder
-
sort
protected void sort()
Sorts the receiver.
-
toString
public java.lang.String toString()
Returns a String representation of the receiver.- Overrides:
toStringin classjava.lang.Object
-
totalMemory
public long totalMemory()
Returns the number of elements currently needed to store all contained elements. This number usually differs from the results of method size(), according to the underlying datastructure.- Specified by:
totalMemoryin interfaceDoubleQuantileFinder
-
-