Help us understand the problem. What is going on with this article?

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

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

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を参考に。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away