Un index montrant la corrélation entre deux données de classement. Pour plus de détails, veuillez vous référer à l'URL ci-dessous. Wiki: [Coefficient de corrélation des rangs de Spearman](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%94%E3%82%A2%E3%83%9E%E3%83 % B3% E3% 81% AE% E9% A0% 86% E4% BD% 8D% E7% 9B% B8% E9% 96% A2% E4% BF% 82% E6% 95% B0) Toki no Mori Wiki: [Coefficient de corrélation de rang Spearman](http://ibisforest.org/index.php?Spearman%E9%A0%86%E4%BD%8D%E7%9B%B8%E9%96%A2 % E4% BF% 82% E6% 95% B0)
Il existe plusieurs formules, mais cette fois nous utiliserons cette formule.
De plus, je pense que vous devriez utiliser celui de l'URL suivante pour faire correspondre les réponses du programme créé. Le coefficient de corrélation de rang est célèbre, donc si vous le recherchez, vous pouvez trouver d'autres échantillons. Introduction aux statistiques de coefficient de corrélation de rang de Spearman
spearman.py
def spearman(list_a, list_b):
N = len(list_a)
return 1 - ((6 * sum(map(lambda a, b: (a - b) ** 2, \
list_a, list_b) / float(N ** 3 - N) )
Vous pouvez facilement calculer comme ça.
L'argument list
crée une séquence de nombres comme [1,2,3 ...].
Normalement, vous pouvez créer une liste de deux séquences et la passer avec zip
.
Si vous utilisez numpy, la partie de notation d'inclusion sera éliminée et elle sera simplifiée.
spearman_numpy.py
import numpy
def spearman(array_a, array_b):
N = len(array_a)
return 1 - (6 * sum((array_a - array_b) ** 2)) / float(N**3 - N)
Puisqu'il y avait une erreur, j'ai réfléchi au commentaire d'owdowt. Merci beaucoup. [Date de correction: 19/02/26]
Celui-ci est plus simple et meilleur.
L'argument crée une séquence de nombres comme numpy.array ([1,2,3 ...])
.
Lorsque vous utilisez une chaîne numérique en python, il est préférable d'utiliser numpy.
Je n'ai rien fait sur la gestion des exceptions cette fois. De plus, si les nombres ont le même ordre, la formule de calcul sera différente, alors référez-vous à l'URL introduite au début.
Recommended Posts