public final class Histogram<K extends java.lang.Comparable>
extends java.lang.Object
implements java.io.Serializable
Modifier and Type | Class and Description |
---|---|
static class |
Histogram.Bin<K extends java.lang.Comparable>
Represents a bin in the Histogram.
|
Constructor and Description |
---|
Histogram()
Constructs a new Histogram with default bin and value labels.
|
Histogram(java.util.Comparator<? super K> comparator)
Constructs a new Histogram that'll use the supplied comparator to sort keys.
|
Histogram(Histogram<K> in)
Copy constructor for a histogram.
|
Histogram(java.lang.String binLabel,
java.lang.String valueLabel)
Constructs a new Histogram with supplied bin and value labels.
|
Histogram(java.lang.String binLabel,
java.lang.String valueLabel,
java.util.Comparator<? super K> comparator)
Constructor that takes labels for the bin and values and a comparator to sort the bins.
|
Modifier and Type | Method and Description |
---|---|
void |
addHistogram(Histogram<K> addHistogram)
Mutable method that allows the addition of a Histogram into the current one.
|
java.util.Comparator<? super K> |
comparator()
Returns the comparator used to order the keys in this histogram, or
null if this histogram uses the natural ordering of its keys. |
boolean |
containsKey(K key)
Return whether this histogram contains the given key.
|
Histogram<K> |
divideByHistogram(Histogram<K> divisorHistogram)
Immutable method that divides the current Histogram by an input Histogram and generates a new one
Throws an exception if the bins don't match up exactly
|
boolean |
equals(java.lang.Object o)
Checks that the labels and values in the two histograms are identical.
|
double |
estimateSdViaMad()
Returns a value that is intended to estimate the mean of the distribution, if the distribution is
essentially normal, by using the median absolute deviation to remove the effect of
erroneous massive outliers.
|
Histogram.Bin<K> |
get(K key)
Retrieves the bin associated with the given key.
|
java.lang.String |
getBinLabel() |
double |
getCount() |
double |
getCumulativeProbability(double v)
Returns the cumulative probability of observing a value <= v when sampling the
distribution represented by this histogram.
|
double |
getGeometricMean()
Gets the geometric mean of the distribution.
|
double |
getMax()
Returns the key with the highest count.
|
double |
getMean()
Assuming that the key type for the histogram is a Number type, returns the mean of
all the items added to the histogram.
|
double |
getMeanBinSize()
Calculates the mean bin size
|
double |
getMedian() |
double |
getMedianAbsoluteDeviation()
Gets the median absolute deviation of the distribution.
|
double |
getMedianBinSize()
Calculates the median bin size
|
double |
getMin()
Returns the key with the lowest count.
|
double |
getMode()
Returns id of the Bin that's the mode of the distribution (i.e.
|
double |
getPercentile(double percentile)
Gets the bin in which the given percentile falls.
|
double |
getStandardDeviation() |
double |
getStandardDeviationBinSize(double mean)
Calculates the standard deviation of the bin size
|
double |
getSum()
Returns the sum of the products of the histgram bin ids and the number of entries in each bin.
|
double |
getSumOfValues()
Returns the sum of the number of entries in each bin.
|
java.lang.String |
getValueLabel() |
int |
hashCode() |
void |
increment(K id)
Increments the value in the designated bin by 1.
|
void |
increment(K id,
double increment)
Increments the value in the designated bin by the supplied increment.
|
boolean |
isEmpty()
Returns true if this histogram has no data in in, false otherwise.
|
java.util.Set<K> |
keySet()
Returns the set of keys for this histogram.
|
void |
prefillBins(K... ids)
Prefill the histogram with the supplied set of bins.
|
void |
setBinLabel(java.lang.String binLabel) |
void |
setValueLabel(java.lang.String valueLabel) |
int |
size()
Returns the size of this histogram.
|
java.lang.String |
toString() |
void |
trimByTailLimit(int tailLimit)
Trims the histogram when the bins in the tail of the distribution contain fewer than mode/tailLimit items
|
void |
trimByWidth(int width)
Trims the histogram so that only bins <= width are kept.
|
java.util.Collection<Histogram.Bin<K>> |
values()
Returns a
Collection view of the values contained in this histogram. |
public Histogram()
public Histogram(java.lang.String binLabel, java.lang.String valueLabel)
public Histogram(java.util.Comparator<? super K> comparator)
public Histogram(java.lang.String binLabel, java.lang.String valueLabel, java.util.Comparator<? super K> comparator)
public void prefillBins(K... ids)
public void increment(K id)
public void increment(K id, double increment)
public java.lang.String getBinLabel()
public void setBinLabel(java.lang.String binLabel)
public java.lang.String getValueLabel()
public void setValueLabel(java.lang.String valueLabel)
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public double getMean()
public double getSum()
public double getSumOfValues()
public double getStandardDeviation()
public double getMeanBinSize()
public int size()
public java.util.Comparator<? super K> comparator()
null
if this histogram uses the natural ordering of its keys.null
if this histogram uses the natural ordering
of its keyspublic double getMedianBinSize()
public java.util.Collection<Histogram.Bin<K>> values()
Collection
view of the values contained in this histogram.
The collection's iterator returns the values in ascending order
of the corresponding keys.public double getStandardDeviationBinSize(double mean)
public double getPercentile(double percentile)
percentile
- a value between 0 and 1public double getCumulativeProbability(double v)
java.lang.UnsupportedOperationException
- if this histogram does not store instances of Numberpublic double getMedian()
public double getMedianAbsoluteDeviation()
public double estimateSdViaMad()
public double getMode()
java.lang.UnsupportedOperationException
- if this histogram does not store instances of Numberpublic double getMin()
java.lang.UnsupportedOperationException
- if this histogram does not store instances of Numberpublic double getMax()
java.lang.UnsupportedOperationException
- if this histogram does not store instances of Numberpublic double getCount()
public double getGeometricMean()
public void trimByTailLimit(int tailLimit)
public boolean isEmpty()
public void trimByWidth(int width)
public Histogram<K> divideByHistogram(Histogram<K> divisorHistogram)
divisorHistogram
- java.lang.IllegalArgumentException
- if the keySet of this histogram is not equal to the keySet of the given divisorHistogrampublic void addHistogram(Histogram<K> addHistogram)
addHistogram
- public Histogram.Bin<K> get(K key)
public java.util.Set<K> keySet()
public boolean containsKey(K key)