La corrélation de Spearman est l'équivalent non-paramétrique de la corrélation de Pearson. Elle mesure le lien entre deux variables. Si les variables sont ordinales, discrètes ou qu'elles ne suivent pas une loi normale, on utilise la corrélation de Spearman. Cette corrélation n'utilise pas les valeurs des données mais leur RANG. L'interprétation du coefficient de corrélation obtenu reste la même que lorsqu'on utilise une corrélation de Pearson. Le coefficient de corrélation varie entre -1 et +1, 0 reflétant une relation nulle entre les deux variables, une valeur négative (corrélation négative) signifiant que lorsqu'une des variable augmente, l'autre diminue ; tandis qu'une valeur positive (corrélation positive) indique que les deux variables varient ensemble dans le même sens.
Avant de calculer la corrélation de Spearman, il faut donc transformer les données en rangs. Pour ce faire on trie les données par ordre croissant et on remplace les valeurs par leurs rangs. Lorsque des valeurs sont identiques, on utilisera la moyenne de leurs rangs. Une fois les données transformées en rangs, on peut calculer le coefficient de corrélation de Spearman au moyen de la même formule que celle utilisée pour calculer le coefficient de corrélation de Pearson mais en utilisant les rangs.
Pour rappel, voici la formule pour calculer le coefficient de corrélation de Spearman:
\[r_s = \frac{\sum (R_X-\frac{N+1}{2})(R_Y-\frac{N+1}{2})}{\sqrt{\sum (R_X-\frac{N+1}{2})^2\sum(R_Y-\frac{N+1}{2})^2}}\]
La suite du raisonnement est identique au coefficient de corrélation de Pearson:
La valeur de rs obtenue est une estimation de la corrélation entre deux variables dans la population. Dès lors, sa valeur fluctuera d'un échantillon à l'autre. On veut donc savoir si, dans la population ces deux variables sont réellement corrélées ou pas. On doit donc réaliser un test d'hypothèse.
H0: Pas de corrélation entre les deux variables : ρ = 0
HA: Corrélation entre les deux variables : ρ ≠ 0
On a vu au cours théorique que cette hypothèse pouvait être testée à l'aide d'un test de t. De manière explicite, on peut calculer la valeur de t et employer la distribution correspondante pour en déduire la probabilité d'observer un résultat qui s'écarte aussi fort, voire plus fort, de ce que prédisait la corrélation. Pour rappel, la formule pour calculer la valeur de t à partir d'une corrélation de Spearman est:
\[t_{n-2} = \frac{r_s}{\sqrt{1-r_s^2}}\sqrt{n-2}\]
Exemple:
Les données utilisées pour illustrer ce type de problème correspondent à une étude lors de laquelle un type de chips a été évalué par 20 consommateurs. Chaque consommateur a donné son avis sur le niveau de croustillant du chips sur une échelle allant de 1 à 5 - 1 correspond à "très peu", et 5 à "très", puis a indiqué sa préférence sur une échelle de 1 à 10. Le but est d'évaluer la corrélation entre la "croustillance" du chips et la préférence. Voici les résultats obtenus:
Individus | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
Préférence | 1 | 1 | 3 | 3 | 3 | 3 | 4 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 7 | 7 | 7 | 8 | 9 |
Croustillant | 1 | 1 | 2 | 3 | 1 | 2 | 4 | 1 | 2 | 2 | 2 | 4 | 2 | 3 | 3 | 3 | 4 | 2 | 3 | 5 |
A partir de ces données, on peut calculer la corrélation de Spearman de cet échantillon, la valeur de t et la probabilité correspondante:
pref<-c(1,1,rep(3,4),4,rep(6,8),rep(7,3),8,9)
croust<-c(1,1,2,3,1,2,4,1,rep(2,3),4,2,rep(3,3),4,2,3,5)
#Transformation des données en rangs:
rpref<-rank(pref)
rcroust<-rank(croust)
#Calcul de la corrélation:
n<-20
xpref<-rpref-((n+1)/2)
ycroust<-rcroust-((n+1)/2)
rs<-sum(xpref*ycroust)/sqrt(sum(xpref^2)*sum(ycroust^2))
rs
## [1] 0.5609102
#Calculer t:
t<-rs*sqrt((n-2)/(1-rs^2))
t
## [1] 2.874511
#Calculer la probabilité de t:
1-pt(t,n-2)
## [1] 0.005042538
#ou
pt(t,n-2,lower.tail=FALSE)
## [1] 0.005042538
On observe donc que la corrélation osbervée dans cet échantillon entre la préférence pour le chips et sa croustillance est de 0.56. Celle-ci correspond à une valeur de t de 2.87. La probabilité d'avoir une corrélation aussi élevée dans un échantillon si la corrélation dans la population est nulle est de 0.005. Etant donné que cette probabilité est faible (inférieure au seuil de significativité = 0.05), on peut rejeter H0 et conclure que la corrélation entre la préférence pour le chips et sa croustillance est significativement positive.
On peut arriver de manière plus directe à cette conclusion en utilisant la fonction cor.test(<arguments>) de R. Deux possibilités s'offrent à vous: Soit, vous utilisez les données brutes mais spécifiez dans les arguments que vous voulez une corrélation de spearman via method="spearman". Soit, vous transformez les données en rang puis vous appliquez la fonction de la même façon que pour la corrélation de Pearson mais sur les rangs.
cor.test(pref,croust, method="spearman", alternative="greater")
## Warning in cor.test.default(pref, croust, method = "spearman", alternative
## = "greater"): Cannot compute exact p-value with ties
##
## Spearman's rank correlation rho
##
## data: pref and croust
## S = 583.99, p-value = 0.005043
## alternative hypothesis: true rho is greater than 0
## sample estimates:
## rho
## 0.5609102
#ou utiliser la corrélation de Pearson sur les données transformées en rang:
cor.test(rpref,rcroust, alternative="greater")
##
## Pearson's product-moment correlation
##
## data: rpref and rcroust
## t = 2.8745, df = 18, p-value = 0.005043
## alternative hypothesis: true correlation is greater than 0
## 95 percent confidence interval:
## 0.2309802 1.0000000
## sample estimates:
## cor
## 0.5609102
On obtient évidemment les mêmes résultats avec l'une ou l'autre méthode ainsi que lorsqu'on fait le calcul manuellement. La corrélation observée dans cet échantillon est de 0.56. Notez que lorsqu'on précise à R d'utiliser la méthode de Spearman (1ère façon), celui-ci ne va pas utiliser la statistique t pour calculer la probabilité. Cependant, dans les deux cas, la probabilité associée à la statistique est la même: 0.005. Etant donné que cette probabilité est faible (inférieure au seuil de significativité = 0.05), on peut rejeter H0 et conclure que la corrélation entre la préférence pour le chips et sa croustillance est significativement positive.
Notez que dans ce cas-ci, on se trouve dans un test unilatéral: on regarde dans une seule direction (la corrélation est-elle significativement positive?). On doit donc préciser à R le sens de notre hypothèse alternative. C'est pourquoi on inscrit dans la fonction alternative="greater". Si on ne précise rien, par défaut, R réalise un test bilatéral. Si l'hypothèse alternative était une corrélation négative entre la préférence pour le chips et sa croustillance, on aurait dû écrire : alternative="less".