Statistics‎ > ‎

## Spearman correlation test

`corr.test`  function

## Install R package psych

`update.packages()         `# update all installed R packages
`install.packages('psych') `# download and install

## Spearman correlation test

# import 'psych' package
`library(psych)`

# generate a test data set (data.frame table)
`x1 = sample(100:200,10)`
`x2 = sample(100:200,10)`
`x3 = sample(100:200,10)`
`y1 = sample(1000:2000,10) `
`y2 = sample(1000:2000,10) + 10*x1`  # create correlation between x1 and y2
`mydata = data.frame(x1,x2,x3,y1,y2)`
`rownames(mydata) <- letters[1:10]`

`mydata`
x1  x2  x3   y1   y2
a 116 187 123 1741 2557
b 171 179 180 1128 2970
c 189 136 158 1898 3524
d 194 134 159 1683 3528
e 145 170 161 1498 2676
f 168 125 156 1078 3190
g 177 190 119 1360 2806
h 119 181 184 1032 2402
i 109 130 176 1605 2406
j 138 139 118 1460 2850

# Spearman correlation - pairwise between all columns of a table
`spearman <- corr.test(mydata, method="spearman", adjust="none")`

`spearman\$r   `# Correlation matrix
x1          x2          x3         y1         y2
x1  1.00000000 -0.09090909 -0.13939394  0.1272727  0.8545455
x2 -0.09090909  1.00000000 -0.09090909 -0.1393939 -0.4424242
x3 -0.13939394 -0.09090909  1.00000000 -0.2606061 -0.2848485
y1  0.12727273 -0.13939394 -0.26060606  1.0000000  0.2484848
y2  0.85454545 -0.44242424 -0.28484848  0.2484848  1.0000000

`spearman\$p   `# p-values (significant correlation < 0.05)
x1        x2        x3        y1          y2
x1 0.000000000 0.8027717 0.7009319 0.7260570 0.001636803
x2 0.802771731 0.0000000 0.8027717 0.7009319 0.200422687
x3 0.700931885 0.8027717 0.0000000 0.4670891 0.425038155
y1 0.726057015 0.7009319 0.4670891 0.0000000 0.488776305
y2 0.001636803 0.2004227 0.4250382 0.4887763 0.000000000

## Correlation between two datasets

# Spearman correlation - only between columns of two different tables
# same, but data spitted into two tables
`x = mydata[1:3]`
`y = mydata[4:5]`

`spearman <- corr.test(x, y, method="spearman", adjust="none")`

`spearman\$r``   `# Correlation matrix, only of x and y column-pairs
y1           y2
x1   0.1272727    0.8545455
x2  -0.1393939   -0.4424242
x3  -0.2606061   -0.2848485

`spearman\$p``   `# p-values
y1           y2
x1   0.7260570    0.001636803
x2   0.7009319    0.200422687
x3   0.4670891    0.425038155

A p-value < 0.05 shows a strong evidence for a correlation between x and y.

## Bonferroni correction for multiple comparison

# Spearman correlation - Bonferroni correction for multiple comparison
`spearman <- corr.test(x, y, method="spearman", adjust="bonferroni")`

`spearman\$r``   `# Correlation matrix (same values)
y1           y2
x1   0.1272727    0.8545455
x2  -0.1393939   -0.4424242
x3  -0.2606061   -0.2848485

`spearman\$p``   `# p-values (corrected/adjusted N*p)
y1      y2
x1   1   0.00982082
x2   1   1.00000000
x3   1   1.00000000

# alternative correction methods: "fdr", "bonferroni", "hochberg", "holm", "hommel", "BH", "BY", "none"

## Correlation plot (circle heatmap):  R package corrplot

# install (if not already done)
`update.packages()            `# update all installed R packages
`install.packages('corrplot') `# download and install

# plot correlations
`library(corrplot) `
`corrplot(spearman\$r, method = "circle")`

# save as pdf
`dev.copy(pdf, 'fig_corrplot.pdf', width = 6, height = 6)`
`dev.off()`