Solved – Equivalent to Spearman correlation for non-monotonic data

correlationkendall-taunonparametricspearman-rho

I have several datasets of independent variables that have a monotonic (but non-linear) relationship. If I want to assess if they're correlated, the test of choice is Spearman's (rho) or Kendall's (tau) rank correlation coefficients.

Yet, sometimes I've observed a slight U-shape distribution in scatter plots, in what I suspect to be non-monotonic datasets.

I have a number of questions:

  1. Is there a way to test if my data is monotonic prior to Spearman's rho / Kendall's tau correlation calculations?
  2. Is it possible to decompose my dataset into monotonic sections, to analyse them separately?
  3. Is there any equivalent to Spearman's rho test (or Kendall's tau) that accounts for multiple monotonic components?

I'm not sure if the last question makes sense.

Thanks a lot.

Best Answer

  1. Is there a way to test if my data is monotonic prior to Spearman's rho / Kendall's tau correlation calculations?

You could plot the data and look for a non-monotone shape.

Also, you could fit a generalized additive model (GAM) which estimates nonparametric functions of the predictor variables. This can be done in the mgcv package in R. For example:

require(mgcv)
set.seed(123)
n <- 100

x <- runif(n,-5,5)

y <- x^2 + rnorm(n,0,4) 
plot(x,y, col="red")

which produces:

enter image description here

Note that

> cor.test(x, y, method = "kendall")

sample estimates:
        tau 
-0.01454545 

> cor.test(x, y, method = "spearman")

sample estimates:
         rho 
-0.005664566 

So, both Spearman's rho and Kendall's tau are not helpful.

Now, if we run a GAM, we get

> summary(m0 <- gam(y~s(x)))

.
.
.
Approximate significance of smooth terms:
       edf Ref.df     F p-value    
s(x) 8.277  8.861 46.72  <2e-16 ***
.
.
.

With edf>1 there is evidence of non-linearity in the data, which doesn't prove that the association is non-monotonic, but nevertheless suggests that it might be.

Is it possible to decompose my dataset into monotonic sections, to analyse them separately?

Yes ! Sticking with the same dataset, we can do:

x1 <- x[x<0]
y1 <- y[x<0]

x2 <- x[x>=0]
y2 <- y[x>=0]

cor.test(x1, y1, method = "kendall")
cor.test(x1, y1, method = "spearman")

which gives:

sample estimates:
       tau 
-0.5878084 

sample estimates:
       rho 
-0.7905983 

and this handles the first segment of the data, then:

cor.test(x2, y2, method = "kendall")
cor.test(x2, y2, method = "spearman")

which gives:

sample estimates:
      tau 
0.7446809 

sample estimates:
      rho 
0.9155874 

So here we can see a strong negative association in the first segment and a strong positive association in the second.

  1. Is there any equivalent to Spearman's rho test (or Kendall's tau) that accounts for multiple monotonic components?

Not that I am aware of.

Related Question