Class SpearmansCorrelation


  • public class SpearmansCorrelation
    extends java.lang.Object
    Spearman's rank correlation. This implementation performs a rank transformation on the input data and then computes PearsonsCorrelation on the ranked data.

    By default, ranks are computed using NaturalRanking with 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
    • 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 NaturalRanking uses a NaNStrategy.REMOVED strategy.

        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 NaturalRanking uses a NaNStrategy.REMOVED strategy.

        Parameters:
        dataMatrix - matrix of data with columns representing variables to correlate
        rankingAlgorithm - 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 a PearsonsCorrelation instance constructed from the ranked input data. That is, new SpearmansCorrelation(matrix).getRankCorrelation() is equivalent to new PearsonsCorrelation(rankTransform(matrix)) where rankTransform(matrix) is the result of applying the configured RankingAlgorithm to each of the columns of matrix.

        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 array
        yArray - second data array
        Returns:
        Returns Spearman's rank correlation coefficient for the two arrays
        Throws:
        DimensionMismatchException - if the arrays lengths do not match
        MathIllegalArgumentException - if the array length is less than 2
      • rankTransform

        private RealMatrix rankTransform​(RealMatrix matrix)
        Applies rank transform to each of the columns of matrix using the current rankingAlgorithm.
        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 array
        indices - a set containing the indices to be removed
        Returns:
        the input array without the values at the specified indices