5

Pythonとおそらくscipyの実装(scipy.stats.spearmanr)を使用して、スピアマンの順位相関を計算したいと思います。

手元のデータは、たとえば次のようになります(辞書)。

{a:0.3, b:0.2, c:0.2} and {a:0.5, b:0.6, c:0.4}

これをspearmanモジュールに渡すために、私が正しければ(降順)、ランクを割り当てます。

[1,2,3] and [2,1,3]

だから今、私はネクタイを検討したいので、最初のベクトルに使用します:

[1,2,2] or [1,2.5,2.5]

基本的に、この概念全体は正しく、そのような辞書ベースのデータの関係を処理する方法は正しいですか。

@Jaimeによって提案されているように、spearmanr関数は値で機能しますが、なぜこの動作が可能であるのですか?

In [5]: spearmanr([0,1,2,3],[1,3,2,0])
Out[5]: (-0.39999999999999997, 0.59999999999999998)

In [6]: spearmanr([10,7,6,5],[0.9,0.5,0.6,1.0])
Out[6]: (-0.39999999999999997, 0.59999999999999998)

ありがとう!

4

1 に答える 1

12

scipy.stats.spearmanrランクの計算を処理します。データを正しい順序で指定するだけです。

>>> scipy.stats.spearmanr([0.3, 0.2, 0.2], [0.5, 0.6, 0.4])
(0.0, 1.0)

ランク付けされたデータがある場合は、scipy.stats.pearsonrそれを呼び出して同じ結果を得ることができます。[1, 2.5, 2.5]そして、以下の例が示すように、私はより一般的だと思いますが、あなたが試したどちらの方法でもうまくいくでしょう。また、scipyはゼロベースのインデックスを使用するため、内部で使用されるランクは次のようになります[0, 1.5, 1.5]

>>> scipy.stats.pearsonr([1, 2, 2], [2, 1, 3])
(0.0, 1.0)
>>> scipy.stats.pearsonr([1, 2.5, 2.5], [2, 1, 3])
(0.0, 1.0)
于 2013-02-11T19:07:05.357 に答える