Class NaturalRanking
java.lang.Object
org.apache.commons.math3.stat.ranking.NaturalRanking
- All Implemented Interfaces:
RankingAlgorithm
Ranking based on the natural ordering on doubles.
NaNs are treated according to the configured NaNStrategy and ties
are handled using the selected TiesStrategy.
Configuration settings are supplied in optional constructor arguments.
Defaults are NaNStrategy.FAILED and TiesStrategy.AVERAGE,
respectively. When using TiesStrategy.RANDOM, a
RandomGenerator may be supplied as a constructor argument.
Examples:
| Input data: (20, 17, 30, 42.3, 17, 50, Double.NaN, Double.NEGATIVE_INFINITY, 17) | ||
|---|---|---|
| NaNStrategy | TiesStrategy | rank(data) |
| default (NaNs maximal) | default (ties averaged) | (5, 3, 6, 7, 3, 8, 9, 1, 3) |
| default (NaNs maximal) | MINIMUM | (5, 2, 6, 7, 2, 8, 9, 1, 2) |
| MINIMAL | default (ties averaged) | (6, 4, 7, 8, 4, 9, 1.5, 1.5, 4) |
| REMOVED | SEQUENTIAL | (5, 2, 6, 7, 3, 8, 1, 4) |
| MINIMAL | MAXIMUM | (6, 5, 7, 8, 5, 9, 2, 2, 5) |
- Since:
- 2.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classRepresents the position of a double value in an ordering. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final NaNStrategydefault NaN strategystatic final TiesStrategydefault ties strategyprivate final NaNStrategyNaN strategy - defaults to NaNs maximalprivate final RandomDataGeneratorSource of random data - used only when ties strategy is RANDOMprivate final TiesStrategyTies strategy - defaults to ties averaged -
Constructor Summary
ConstructorsConstructorDescriptionCreate a NaturalRanking with default strategies for handling ties and NaNs.NaturalRanking(RandomGenerator randomGenerator) Create a NaturalRanking with TiesStrategy.RANDOM and the given RandomGenerator as the source of random data.NaturalRanking(NaNStrategy nanStrategy) Create a NaturalRanking with the given NaNStrategy.NaturalRanking(NaNStrategy nanStrategy, RandomGenerator randomGenerator) Create a NaturalRanking with the given NaNStrategy, TiesStrategy.RANDOM and the given source of random data.NaturalRanking(NaNStrategy nanStrategy, TiesStrategy tiesStrategy) Create a NaturalRanking with the given NaNStrategy and TiesStrategy.NaturalRanking(TiesStrategy tiesStrategy) Create a NaturalRanking with the given TiesStrategy. -
Method Summary
Modifier and TypeMethodDescriptionprivate booleancontainsNaNs(NaturalRanking.IntDoublePair[] ranks) Checks for presence of NaNs inranks.private voidSetsdata[i] = valuefor each i intiesTrace.Returns a list of indexes whereranksisNaN.Return the NaNStrategyReturn the TiesStrategydouble[]rank(double[] data) Rankdatausing the natural ordering on Doubles, with NaN values handled according tonanStrategyand ties resolved usingtiesStrategy.private voidrecodeNaNs(NaturalRanking.IntDoublePair[] ranks, double value) Recodes NaN values to the given value.private NaturalRanking.IntDoublePair[]removeNaNs(NaturalRanking.IntDoublePair[] ranks) Returns an array that is a copy of the input array with IntDoublePairs having NaN values removed.private voidresolveTie(double[] ranks, List<Integer> tiesTrace) Resolve a sequence of ties, using the configuredTiesStrategy.private voidrestoreNaNs(double[] ranks, List<Integer> nanPositions) Setranks[i] = Double.NaNfor each i innanPositions.
-
Field Details
-
DEFAULT_NAN_STRATEGY
default NaN strategy -
DEFAULT_TIES_STRATEGY
default ties strategy -
nanStrategy
NaN strategy - defaults to NaNs maximal -
tiesStrategy
Ties strategy - defaults to ties averaged -
randomData
Source of random data - used only when ties strategy is RANDOM
-
-
Constructor Details
-
NaturalRanking
public NaturalRanking()Create a NaturalRanking with default strategies for handling ties and NaNs. -
NaturalRanking
Create a NaturalRanking with the given TiesStrategy.- Parameters:
tiesStrategy- the TiesStrategy to use
-
NaturalRanking
Create a NaturalRanking with the given NaNStrategy.- Parameters:
nanStrategy- the NaNStrategy to use
-
NaturalRanking
Create a NaturalRanking with the given NaNStrategy and TiesStrategy.- Parameters:
nanStrategy- NaNStrategy to usetiesStrategy- TiesStrategy to use
-
NaturalRanking
Create a NaturalRanking with TiesStrategy.RANDOM and the given RandomGenerator as the source of random data.- Parameters:
randomGenerator- source of random data
-
NaturalRanking
Create a NaturalRanking with the given NaNStrategy, TiesStrategy.RANDOM and the given source of random data.- Parameters:
nanStrategy- NaNStrategy to userandomGenerator- source of random data
-
-
Method Details
-
getNanStrategy
-
getTiesStrategy
-
rank
public double[] rank(double[] data) Rankdatausing the natural ordering on Doubles, with NaN values handled according tonanStrategyand ties resolved usingtiesStrategy.- Specified by:
rankin interfaceRankingAlgorithm- Parameters:
data- array to be ranked- Returns:
- array of ranks
- Throws:
NotANumberException- if the selectedNaNStrategyisFAILEDand aDouble.NaNis encountered in the input data
-
removeNaNs
Returns an array that is a copy of the input array with IntDoublePairs having NaN values removed.- Parameters:
ranks- input array- Returns:
- array with NaN-valued entries removed
-
recodeNaNs
Recodes NaN values to the given value.- Parameters:
ranks- array to recodevalue- the value to replace NaNs with
-
containsNaNs
Checks for presence of NaNs inranks.- Parameters:
ranks- array to be searched for NaNs- Returns:
- true iff ranks contains one or more NaNs
-
resolveTie
Resolve a sequence of ties, using the configuredTiesStrategy. The inputranksarray is expected to take the same value for all indices intiesTrace. The common value is recoded according to the tiesStrategy. For example, if ranks = invalid input: '<'5,8,2,6,2,7,1,2>, tiesTrace = invalid input: '<'2,4,7> and tiesStrategy is MINIMUM, ranks will be unchanged. The same array and trace with tiesStrategy AVERAGE will come out invalid input: '<'5,8,3,6,3,7,1,3>.- Parameters:
ranks- array of rankstiesTrace- list of indices whereranksis constant -- that is, for any i and j in TiesTrace,ranks[i] == ranks[j]
-
fill
-
restoreNaNs
-
getNanPositions
Returns a list of indexes whereranksisNaN.- Parameters:
ranks- array to search forNaNs- Returns:
- list of indexes i such that
ranks[i] = NaN
-