Le coefficient de corrélation habituel (en 2d) mesure dans quelle mesure un ensemble de points peut être décrit par une droite, et si oui, son signe nous indique si nous avons une corrélation positive ou négative. Mais cela suppose que les coordonnées des points peuvent effectivement être interprétées quantitativement, par exemple comme des mesures.
Si vous ne pouvez pas le faire mais vous pouvez toujours ordonner les coordonnées, il y a le coefficient de corrélation de rang : il mesure la façon dont les points peuvent être décrits par une fonction monotone .
Défi
À partir d'une liste de 2d points, déterminez leur coefficient de corrélation de rang .
Détails
- Vous pouvez supposer que l'entrée est un entier positif (mais ce n'est pas obligatoire) ou toute autre valeur "triable".
- Les points peuvent être considérés comme une liste de points, ou deux listes pour les coordonnées x et y ou une matrice ou un tableau 2D, etc.
- La sortie doit être de type flottant ou rationnel, car elle doit représenter un nombre réel compris entre 0 et 1.
Définitions
Rang: Étant donné une liste de nombres, X=[x(1),...,x(n)]
nous pouvons attribuer un numéro positif rx(i)
appelé rang à chaque entrée x(i)
. Nous le faisons en triant la liste et en affectant l'index de x(i)
dans la liste triée rx(i)
. Si deux ou plus x(i)
ont la même valeur, alors nous utilisons simplement la moyenne arithmétique de tous les indices correspondants comme rang. Exemple:
List: [21, 10, 10, 25, 3]
Indices sorted: [4, 2, 3, 5, 1]
Le numéro 10
apparaît deux fois ici. Dans la liste triée, il occuperait les indices 2
et 3
. La moyenne arithmétique de ceux-ci est 2.5
donc les rangs sont
Ranks: [4, 2.5, 2.5, 5, 1]
Coefficient de corrélation de rang : Soit [(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]
les points donnés où chacun x(i)
et y(i)
est un nombre réel (wlog. Vous pouvez supposer que c'est un entier) Pour chacun, i=1,...,n
nous calculons le rang rx(i)
et ry(i)
de x(i)
et y(i)
respectivement.
Soit d(i) = rx(i)-ry(i)
la différence de rang et S
soit la somme S = d(1)^2 + d(2)^2 + ... + d(n)^2
. Ensuite, le coefficient de corrélation de rang rho
est donné par
rho = 1 - 6 * S / (n * (n^2-1))
Exemple
x y rx ry d d^2
21 15 4 5 -1 1
10 6 2&3 -> 2.5 2 0.5 0.25
10 7 2&3 -> 2.5 3 -0.5 0.25
25 11 5 4 1 1
3 5 1 1 0 0
rho = 1 - 6 * (1+0.25+0.25+1)/(5*(5^2-1)) = 0.875
2.5
.