Calculating running window Spearman correlation and pvalue in R

360 views Asked by At

I wish to calculate a running window Spearman correlation in R. So far I've been using running from gtools package, but I could only get Pearson correlation out of it. I tried to modify the fun parameter but couldn't get it to produce anything but errors.

My input is a data.frame:

row.names   Small   Large
1   1   97.80341    88.71192
2   2   97.46807    87.96206
3   3   97.18862    88.13904
4   4   97.76615    87.67329
5   5   97.09081    87.52425
6   6   97.16067    87.85493
7   7   97.73820    88.43712

etc. And this is the basic running command I tried to manipulate:

corr_table <- running (mytable$Large, mytable$Small,fun=cor, width=20, by=10, allow.fewer=FALSE, pad=FALSE, align="left")

My second question is how can I add the pvalue of each "window" ?

Thanks!

1

There are 1 answers

0
Adi Lavy On

OK found a solution to both questions:

corr_table <- running (mytable$Large, mytable$Small,fun=cor.test, method="spearman", width=60, by=30, allow.fewer=FALSE, pad=FALSE, align="left")
newlist <- t(corr_table)
newlist <- as.matrix (newlist)
y <- newlist[,4]
x <- seq(from=1, to=92) #change the "to" according to number of values in Y
pvalue <- newlist[,3]
plot(x,y, xlim=c(1,92),ylim=c(-1,1), col=ifelse(pvalue < 0.05, "red", "black")) #change the "xlim" according to number of values in Y