#スピアママン順位相関係数とは
2つ順位データに対して、相関を表す指標。
詳しくは下記のURLに書いてあるので参考に。
Wiki:スピアマン順位相関係数
朱鷺の杜Wiki:Spearman順位相関係数
いくつか計算式がありますが今回は、こちらの計算式を使用します。
また、作ったプログラムの答え合わせには、下記のURLにあるものを使用するといいと思います。順位相関係数は有名なので調べれば他のサンプルも拾えると思います。
スピアマンの順位相関係数 統計学入門
##計算プログラム
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) )
こんな感じで、簡単に計算ができます。
引数のlist
は[1,2,3...]みたいな感じで数列を作ります。
普通に、二つの数列のListを作ってzip
で渡すとできます。
numpyを使うと内包表記の部分がなくなって簡潔になります。
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)
間違いがありましたので、owdowtのコメントを反映しました。ありがとうございます。[修正日:19/02/26]
こっちのほうが、簡潔でいいですね。
引数は、numpy.array([1,2,3...])
みたいに数列を作ります。
pythonで数列を使う際はnumpyを使うほうが綺麗に書けます。
##例外処理
例外処理に関しては今回何も行ってません。
また、数列に同順がある際には計算式が異なるので、最初に紹介したURLを参考に。