5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

スピアマン順位相関係数の計算

Last updated at Posted at 2015-10-14

スピアママン順位相関係数とは

2つ順位データに対して、相関を表す指標。
詳しくは下記のURLに書いてあるので参考に。
Wiki:スピアマン順位相関係数
朱鷺の杜Wiki:Spearman順位相関係数

いくつか計算式がありますが今回は、こちらの計算式を使用します。

式

また、作ったプログラムの答え合わせには、下記のURLにあるものを使用するといいと思います。順位相関係数は有名なので調べれば他のサンプルも拾えると思います。
スピアマンの順位相関係数 統計学入門

計算プログラム

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) )

こんな感じで、簡単に計算ができます。
引数のlistは[1,2,3...]みたいな感じで数列を作ります。
普通に、二つの数列のListを作ってzipで渡すとできます。
numpyを使うと内包表記の部分がなくなって簡潔になります。

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)

間違いがありましたので、owdowtのコメントを反映しました。ありがとうございます。[修正日:19/02/26]

こっちのほうが、簡潔でいいですね。
引数は、numpy.array([1,2,3...])みたいに数列を作ります。
pythonで数列を使う際はnumpyを使うほうが綺麗に書けます。

例外処理

例外処理に関しては今回何も行ってません。
また、数列に同順がある際には計算式が異なるので、最初に紹介したURLを参考に。

5
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?