Package org.apache.commons.math3.stat.descriptive.rank

# Class PSquarePercentile

java.lang.Object
org.apache.commons.math3.stat.descriptive.AbstractUnivariateStatistic
org.apache.commons.math3.stat.descriptive.AbstractStorelessUnivariateStatistic
org.apache.commons.math3.stat.descriptive.rank.PSquarePercentile

All Implemented Interfaces:
  `Serializable`, `StorelessUnivariateStatistic`, `UnivariateStatistic`, `MathArrays.Function`

public class PSquarePercentile extends AbstractStorelessUnivariateStatistic implements StorelessUnivariateStatistic, Serializable
A `StorelessUnivariateStatistic` estimating percentiles using the invalid input: '<'ahref=http://www.cs.wustl.edu/~jain/papers/ftp/psqr.pdf>P2 Algorithm as explained by Raj Jain and Imrich Chlamtac in P2 Algorithm for Dynamic Calculation of Quantiles and Histogram Without Storing Observations.

Note: This implementation is not synchronized and produces an approximate result. For small samples, where data can be stored and processed in memory, `Percentile` should be used.

See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`protected static interface`
`PSquarePercentile.PSquareMarkers`
An interface that encapsulates abstractions of the P-square algorithm markers as is explained in the original works.

## Constructor Summary

Constructors
Constructor
Description
`PSquarePercentile(double p)`
Constructs a PSquarePercentile with the specific percentile value.

## Method Summary

Modifier and Type
Method
Description
`void`
`clear()`
Clears the internal state of the Statistic
`StorelessUnivariateStatistic`
`copy()`
Returns a copy of the statistic with the same internal state.
`boolean`
`equals(Object o)`
Returns true iff `o` is a `PSquarePercentile` returning the same values as this for `getResult()` and `getN()` and also having equal markers
`long`
`getN()`
Returns the number of values that have been added.
`double`
`getResult()`
Returns the current value of the Statistic.
`int`
`hashCode()`
Returns hash code based on getResult() and getN()
`void`
`increment(double observation)`
Updates the internal state of the statistic to reflect the addition of the new value.
`static PSquarePercentile.PSquareMarkers`
`newMarkers(List<Double> initialFive, double p)`
A creation method to build Markers
`double`
`quantile()`
Returns the quantile estimated by this statistic in the range [0.0-1.0]
`String`
`toString()`
Returns a string containing the last observation, the current estimate of the quantile and all markers.

### Methods inherited from class org.apache.commons.math3.stat.descriptive.AbstractStorelessUnivariateStatistic

`evaluate, evaluate, incrementAll, incrementAll`

### Methods inherited from class org.apache.commons.math3.stat.descriptive.AbstractUnivariateStatistic

`evaluate, getData, getDataRef, setData, setData, test, test, test, test`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.apache.commons.math3.stat.descriptive.StorelessUnivariateStatistic

`incrementAll, incrementAll`

### Methods inherited from interface org.apache.commons.math3.stat.descriptive.UnivariateStatistic

`evaluate, evaluate`

## Constructor Details

### PSquarePercentile

public PSquarePercentile(double p)
Constructs a PSquarePercentile with the specific percentile value.

Parameters:
  `p` - the percentile
Throws:
  `OutOfRangeException` - if p is not greater than 0 and less than or equal to 100

## Method Details

### hashCode

public int hashCode()
Returns hash code based on getResult() and getN()

Overrides:
  `hashCode` in class `AbstractStorelessUnivariateStatistic`
Returns:
  hash code

### equals

public boolean equals(Object o)
Returns true iff `o` is a `PSquarePercentile` returning the same values as this for `getResult()` and `getN()` and also having equal markers

Overrides:
  `equals` in class `AbstractStorelessUnivariateStatistic`
Parameters:
  `o` - object to compare
Returns:
  true if `o` is a `PSquarePercentile` with equivalent internal state

### increment

public void increment(double observation)
Updates the internal state of the statistic to reflect the addition of the new value.The internal state updated due to the new value in this context is basically of the marker positions and computation of the approximate quantile.

Specified by:
  `increment` in interface `StorelessUnivariateStatistic`
Specified by:
  `increment` in class `AbstractStorelessUnivariateStatistic`
Parameters:
  `observation` - the observation currently being added.

### toString

public String toString()
Returns a string containing the last observation, the current estimate of the quantile and all markers.

Overrides:
  `toString` in class `Object`
Returns:
  string representation of state data

### getN

public long getN()
Returns the number of values that have been added.

Specified by:
  `getN` in interface `StorelessUnivariateStatistic`
Returns:
  the number of values.

### copy

public StorelessUnivariateStatistic copy()
Returns a copy of the statistic with the same internal state.

Specified by:
  `copy` in interface `StorelessUnivariateStatistic`
Specified by:
  `copy` in interface `UnivariateStatistic`
Specified by:
  `copy` in class `AbstractStorelessUnivariateStatistic`
Returns:
  a copy of the statistic

### quantile

public double quantile()
Returns the quantile estimated by this statistic in the range [0.0-1.0]

Returns:
  quantile estimated by `getResult()`

### clear

public void clear()
Clears the internal state of the Statistic. This basically clears all the markers, the initialFive list and sets countOfObservations to 0.

Specified by:
  `clear` in interface `StorelessUnivariateStatistic`
Specified by:
  `clear` in class `AbstractStorelessUnivariateStatistic`

### getResult

public double getResult()
Returns the current value of the Statistic.

Specified by:
  `getResult` in interface `StorelessUnivariateStatistic`
Specified by:
  `getResult` in class `AbstractStorelessUnivariateStatistic`
Returns:
  value of the statistic, `Double.NaN` if it has been cleared or just instantiated.

### newMarkers

public static PSquarePercentile.PSquareMarkers newMarkers(List<Double> initialFive, double p)
A creation method to build Markers

Parameters:
  `initialFive` - list of initial five elements
  `p` - the quantile desired
Returns:
  an instance of PSquareMarkers