Class SpearmansCorrelation
- java.lang.Object
-
- org.apache.commons.math3.stat.correlation.SpearmansCorrelation
-
public class SpearmansCorrelation extends java.lang.ObjectSpearman's rank correlation. This implementation performs a rank transformation on the input data and then computesPearsonsCorrelationon the ranked data.By default, ranks are computed using
NaturalRankingwith default strategies for handling NaNs and ties in the data (NaNs maximal, ties averaged). The ranking algorithm can be set using a constructor argument.- Since:
- 2.0
-
-
Field Summary
Fields Modifier and Type Field Description private RealMatrixdataInput dataprivate PearsonsCorrelationrankCorrelationRank correlationprivate RankingAlgorithmrankingAlgorithmRanking algorithm
-
Constructor Summary
Constructors Constructor Description SpearmansCorrelation()Create a SpearmansCorrelation without data.SpearmansCorrelation(RealMatrix dataMatrix)Create a SpearmansCorrelation from the given data matrix.SpearmansCorrelation(RealMatrix dataMatrix, RankingAlgorithm rankingAlgorithm)Create a SpearmansCorrelation with the given input data matrix and ranking algorithm.SpearmansCorrelation(RankingAlgorithm rankingAlgorithm)Create a SpearmansCorrelation with the given ranking algorithm.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description RealMatrixcomputeCorrelationMatrix(double[][] matrix)Computes the Spearman's rank correlation matrix for the columns of the input rectangular array.RealMatrixcomputeCorrelationMatrix(RealMatrix matrix)Computes the Spearman's rank correlation matrix for the columns of the input matrix.doublecorrelation(double[] xArray, double[] yArray)Computes the Spearman's rank correlation coefficient between the two arrays.RealMatrixgetCorrelationMatrix()Calculate the Spearman Rank Correlation Matrix.private java.util.List<java.lang.Integer>getNaNPositions(double[] input)Returns a list containing the indices of NaN values in the input array.PearsonsCorrelationgetRankCorrelation()Returns aPearsonsCorrelationinstance constructed from the ranked input data.private RealMatrixrankTransform(RealMatrix matrix)Applies rank transform to each of the columns ofmatrixusing the currentrankingAlgorithm.private double[]removeValues(double[] input, java.util.Set<java.lang.Integer> indices)Removes all values from the input array at the specified indices.
-
-
-
Field Detail
-
data
private final RealMatrix data
Input data
-
rankingAlgorithm
private final RankingAlgorithm rankingAlgorithm
Ranking algorithm
-
rankCorrelation
private final PearsonsCorrelation rankCorrelation
Rank correlation
-
-
Constructor Detail
-
SpearmansCorrelation
public SpearmansCorrelation()
Create a SpearmansCorrelation without data.
-
SpearmansCorrelation
public SpearmansCorrelation(RankingAlgorithm rankingAlgorithm)
Create a SpearmansCorrelation with the given ranking algorithm.From version 4.0 onwards this constructor will throw an exception if the provided
NaturalRankinguses aNaNStrategy.REMOVEDstrategy.- Parameters:
rankingAlgorithm- ranking algorithm- Since:
- 3.1
-
SpearmansCorrelation
public SpearmansCorrelation(RealMatrix dataMatrix)
Create a SpearmansCorrelation from the given data matrix.- Parameters:
dataMatrix- matrix of data with columns representing variables to correlate
-
SpearmansCorrelation
public SpearmansCorrelation(RealMatrix dataMatrix, RankingAlgorithm rankingAlgorithm)
Create a SpearmansCorrelation with the given input data matrix and ranking algorithm.From version 4.0 onwards this constructor will throw an exception if the provided
NaturalRankinguses aNaNStrategy.REMOVEDstrategy.- Parameters:
dataMatrix- matrix of data with columns representing variables to correlaterankingAlgorithm- ranking algorithm
-
-
Method Detail
-
getCorrelationMatrix
public RealMatrix getCorrelationMatrix()
Calculate the Spearman Rank Correlation Matrix.- Returns:
- Spearman Rank Correlation Matrix
- Throws:
java.lang.NullPointerException- if this instance was created with no data
-
getRankCorrelation
public PearsonsCorrelation getRankCorrelation()
Returns aPearsonsCorrelationinstance constructed from the ranked input data. That is,new SpearmansCorrelation(matrix).getRankCorrelation()is equivalent tonew PearsonsCorrelation(rankTransform(matrix))whererankTransform(matrix)is the result of applying the configuredRankingAlgorithmto each of the columns ofmatrix.Returns null if this instance was created with no data.
- Returns:
- PearsonsCorrelation among ranked column data
-
computeCorrelationMatrix
public RealMatrix computeCorrelationMatrix(RealMatrix matrix)
Computes the Spearman's rank correlation matrix for the columns of the input matrix.- Parameters:
matrix- matrix with columns representing variables to correlate- Returns:
- correlation matrix
-
computeCorrelationMatrix
public RealMatrix computeCorrelationMatrix(double[][] matrix)
Computes the Spearman's rank correlation matrix for the columns of the input rectangular array. The columns of the array represent values of variables to be correlated.- Parameters:
matrix- matrix with columns representing variables to correlate- Returns:
- correlation matrix
-
correlation
public double correlation(double[] xArray, double[] yArray)Computes the Spearman's rank correlation coefficient between the two arrays.- Parameters:
xArray- first data arrayyArray- second data array- Returns:
- Returns Spearman's rank correlation coefficient for the two arrays
- Throws:
DimensionMismatchException- if the arrays lengths do not matchMathIllegalArgumentException- if the array length is less than 2
-
rankTransform
private RealMatrix rankTransform(RealMatrix matrix)
Applies rank transform to each of the columns ofmatrixusing the currentrankingAlgorithm.- Parameters:
matrix- matrix to transform- Returns:
- a rank-transformed matrix
-
getNaNPositions
private java.util.List<java.lang.Integer> getNaNPositions(double[] input)
Returns a list containing the indices of NaN values in the input array.- Parameters:
input- the input array- Returns:
- a list of NaN positions in the input array
-
removeValues
private double[] removeValues(double[] input, java.util.Set<java.lang.Integer> indices)Removes all values from the input array at the specified indices.- Parameters:
input- the input arrayindices- a set containing the indices to be removed- Returns:
- the input array without the values at the specified indices
-
-