arisaka444のブログ

ツイッター(@arisaka444)

スピアマンの順位相関係数とピアソンの積率相関係数の関係性を R で確認する



スピアマンの順位相関係数は、データを順位に変換した場合のピアソンの積率相関係数に当たることが知られています。本記事では、このことを、統計解析ソフトウェアの R で簡単に確認できることを示します。

次のような7組のデータがあるとします。

(x, y) = (1, 2), (2, 1), (3, 6), (4, 4), (5, 6), (6, 7), (7, 12)

このデータから R を用いてピアソンの積率相関係数とスピアマンの順位相関係数を算出してみましょう。

とりあえず散布図を描いてみましょう。 R コンソールに下記のコマンドをコピペしてみてください。

x <- 1:7
y <- c(2,1,6,4,6,7,12)
plot(x,y)



すると次のような図が得られます(コピペしても図が現れない場合は「Enter」キーを押してみてください)。

f:id:arisaka444:20190324035026p:plain

ふたつの相関係数は下記のコマンドで算出できます。

cor(x,y)
cor(x,y,method="spearman")



出力結果は次のようになります。

> cor(x,y)
[1] 0.8890009
> cor(x,y,method="spearman")
[1] 0.9009375

出力結果から、ピアソンの積率相関係数を r 、スピアマンの順位相関係数を ρ とするならば、r = 0.8890009、ρ = 0.9009375 であることがわかります。

次に、rank 関数を用いてデータを順位データに変換した上で、ピアソンの積率相関係数を算出してみましょう。rank 関数は測定値を小さい順に 1, 2, 3,・・・と順位に変換することができます。ただし、タイ(同一の値の組)は平均化されます [1] 。次のコマンドを入力してみてください。

 cor(rank(x),rank(y))



次のような出力が得られます。

> cor(rank(x),rank(y))
[1] 0.9009375



順位データに変換した場合のピアソンの積率相関係数は r = 0.9009375 となり、先ほど算出したスピアマンの順位相関係数に一致しましたね。

このように、R の rank 関数を用いると、スピアマンの順位相関係数が、データを順位に変換した場合のピアソンの積率相関係数に一致することが確認できます。

最後に、データをそのまま利用した場合と順位データに変換した場合の散布図をまとめて下記に示します。図中に相関係数も記入しました。

f:id:arisaka444:20190324035132p:plain

[1] ソート、オーダー、ランク - RjpWiki
http://www.okadajp.org/RWiki/?%E3%82%BD%E3%83%BC%E3%83%88%E3%80%81%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%80%81%E3%83%A9%E3%83%B3%E3%82%AF