I have a data set where 2 continuous variables(bio markers) are being measured a variable amount of times for each subject. Some subjects have 1 measurement while others have towards 100. The data is from an observational study of subjects under no intervention and began out as a single measurement however it has changed setup and is now a longitudinal study with drop outs. It is expected that there is a nonlinear correlation between the markers which at the same time are highly influenced by the lifestyle of the subject which is why it is necessary to use a repeated measurement setup.

I would like to calculate something resembling a repeated measures Spearman correlation coefficient. Is this possible in a reasonable way? Something which approaches the ordinary Spearman coefficient when number of measures per subject approaches 1.

(If a solution can be posted in R I will be happy but I can implement a general outline if necessary). Right now my only idea is to collapse each subject by taking the mean or calculate a Spearman correlation coefficient for each subject and then collapse with a mean.

Here is a synthetic data example where I have added some correlation coefficients. spearman_mean is calculating a Spearman for each subject an calculating the mean. mean_spearman is calculating a subject mean and then Spearman. rmcorr is a linear mixed model based approach which resembles a Pearson coefficient (as far as I understand). If a "real" repeated measurement Spearman is not available then if you can give me some pointers towards a best practice it would be really helpful.

N = 100
df <- data.frame(id_num = sample(1:3, N, replace = T, prob = c(0.1,0.5,0.4)),
                 var1 = rnorm(N, mean = 5, sd = 0.5)) %>%
  mutate(id = factor(LETTERS[id_num]),
         var2 = exp(1/sqrt(id_num)*var1)) %>% 
df$var2 <- df$var2 + rnorm(N, sd = 3)

df %>% 
  ggplot(aes(x = var1, y = var2, color = id)) + geom_point(size = 2)

df_cor <- data.frame(pearson = cor(df$var1, df$var2, method = "pearson"),
                     spearman = cor(df$var1, df$var2, method = "spearman"),
                     rmcorr = rmcorr::rmcorr(participant = id, measure1 = var1, measure2 = var2, dataset = df)$r,
                     df %>% group_by(id) %>% summarise(spear = cor(var1, var2, method = "spearman")) %>% summarise(spearman_mean = mean(spear)),
                     df %>% group_by(id) %>% 
                       summarise(var1 = mean(var1),
                                 var2 = mean(var2)) %>% 
                       summarise(mean_spearman = cor(var1, var2, method = "spearman")))

df_cor %>% knitr::kable()
pearson spearman rmcorr spearman_mean mean_spearman
0.3331734 0.5253885 0.622991 0.9114043 0.5
  • $\begingroup$ Can you add some context? What does the repeated measures represent? Why the variability in measures per id? People here prefer to respond to questions with context ... If you asked for the Pearson r, some standard mixed model should work ... but here something more is maybe needed. $\endgroup$ Feb 1, 2021 at 20:05
  • 1
    $\begingroup$ Alright added a bit of text and a somewhat more relevant example. $\endgroup$
    – JensT
    Feb 2, 2021 at 8:58
  • $\begingroup$ @kjetilbhalvorsen sounded like you might have had an idea. Care to elaborate a bit? Stray thoughts are also welcome :) $\endgroup$
    – JensT
    Feb 3, 2021 at 8:52
  • $\begingroup$ Have you come to any new conclusions in the meantime? $\endgroup$ Feb 25 at 11:56
  • $\begingroup$ Nope. I left it and went for an analysis of the first and last measurements respectively. $\endgroup$
    – JensT
    Mar 7 at 9:51

1 Answer 1


Mohr & Marcon (2005) seems to describe what you are trying to do. They suggest using a weighted mean of the within-subject Spearman correlations (weighted by number of observations minus one), and then using permutations or a normal approximation to calculate a P value. I'm not aware of any R code for this, unfortunately.

Donna L. Mohr & Rebecca A. Marcon (2005) Testing for a ‘within-subjects’ association in repeated measures data, Journal of Nonparametric Statistics, 17:3, 347-363, DOI: 10.1080/10485250500038694

  • 2
    $\begingroup$ Hi, welcome to CV. Could you please add the full details of the reference in case your link dies in the future? Thanks. $\endgroup$
    – Antoine
    Apr 29, 2021 at 9:28
  • $\begingroup$ Thank you for the pointer! They don't actually derive a repeated measures spearman correlation coefficient though they do construct a test which is also quite useful. $\endgroup$
    – JensT
    May 12, 2021 at 6:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.