Topic 29
スピアマンの順位相関:順位データ・単調関係の比較
Spearman rank correlation in R with optional partial correlation
連続変数どうしの直線関係ではなく、順位や 1〜5 の順序尺度、あるいは「だいたい増える・減る」という単調な関係を見たいときの基本テーマです。
講義資料では、ピアソン相関とスピアマン相関の違い、相関行列の作り方、相関結果の可視化、さらに plus alpha として外れ値診断や偏相関まで扱っていました。
このページでは、まずスピアマン相関を安心して使えるようになることを目標にし、その次の一歩として <span class="inline-code">ppcor</span> による偏相関の入口も紹介します。
このページのゴール
- ピアソン相関とスピアマン相関の違いを言葉で説明できる
- 順位データや歪んだデータで <span class="inline-code">cor.test(..., method = "spearman")</span> を使える
- ジッター散布図から単調な関係の有無を先に確認できる
- 必要に応じて偏相関へ進む判断ができる
まず押さえるポイント
スピアマン相関はどんなときに使うか
順位・順序尺度・外れ値にやや強い状況で、単調な増減関係を見たいときの基本手法です。
ピアソン相関は「連続変数どうしの直線関係」をみるのに対して、スピアマン相関は値を順位へ変換してから関連を見る考え方です。そのため、1〜5 の評価尺度や、分布が大きく歪んだデータでも使いやすい場面があります。
ただし、何でもスピアマンにすれば良いわけではありません。まずは散布図を見て、関係が直線的なのか、単調だけれど曲がっているのか、外れ値があるのかを確認してから選びます。
分析の前提
ピアソン相関との違い
ピアソン
連続変数どうしの直線的な関係を想定し、共分散を標準化した相関係数です。外れ値や強い歪みに影響を受けやすい面があります。
スピアマン
各値を順位へ置き換えたうえで関連をみます。完全な線形でなくても、「高い人ほど高い」「低い人ほど低い」という単調関係なら拾いやすいです。
ties が多いとき
同点(ties)が非常に多い順位データでは、ケンドールの順位相関を使う選択肢もあります。授業でまず最初に動かすなら、スピアマン相関が扱いやすい入口です。
前提条件の確認
実行前のチェック
順序の意味があるか
1〜5 の回答や順位のように、大小関係に意味がある変数かを確認します。
散布図で単調性を見る
直線でなくても、右上がり / 右下がりの傾向があるかをジッター散布図で見ます。
外れ値と ties
スピアマンはピアソンより頑健ですが、極端な外れ値や同点だらけのデータでは注意が必要です。
必要なら偏相関へ
第3変数の影響を統制したいなら、相関だけで終わらず偏相関や回帰へ進みます。
データ構造
ここで使う練習用データ
練習用データには、授業内課題を想定した 1〜5 の順位データを入れています。effort_rank は学習努力、report_quality_rank はレポートの出来、attendance_rank は出席状況を表します。
まずは 2 変数の単純な順位相関を見て、そのあと attendance_rank を統制した偏相関へ進める構成です。
R code
Rコードを順番に実行する
library(tidyverse)
dat <- read.csv("sample-data/sample_spearman_rank_correlation.csv")
str(dat)
summary(dat)
library(ggplot2)
ggplot(dat, aes(effort_rank, report_quality_rank)) +
geom_jitter(width = 0.12, height = 0.12, size = 2.8, alpha = 0.85) +
scale_x_continuous(breaks = 1:5) +
scale_y_continuous(breaks = 1:5) +
labs(x = "Effort rank", y = "Report quality rank") +
theme_minimal(base_size = 13)
ct <- cor.test(
dat$effort_rank,
dat$report_quality_rank,
method = "spearman",
exact = FALSE
)
ct
# 相関係数だけを簡便に出したいとき
cor(dat$effort_rank, dat$report_quality_rank, method = "spearman")
if (!require("ppcor")) install.packages("ppcor")
library(ppcor)
pcor.test(
dat$effort_rank,
dat$report_quality_rank,
dat$attendance_rank,
method = "spearman"
)
出力の読み方
cor.test() のどこを拾うか
- rho:スピアマンの相関係数です。プラスなら単調増加、マイナスなら単調減少の傾向です。
- p-value:相関係数が 0 であると仮定したときに、これくらいの関連が偶然出る確率の目安です。
- 散布図との整合:統計量だけでなく、ジッター散布図で「単調な関係に見えるか」を必ず合わせて確認します。
図の読み方
ジッター散布図で見るポイント
順位データは値の取り得る範囲が狭いので、同じ座標へ点が重なりやすくなります。geom_jitter() を使うと、同点がどの程度あるかを見やすくできます。
右上がりの帯のように見えれば正の単調関係、右下がりなら負の単調関係です。直線できれいに並ばなくても、順位がだいたい同じ方向へ動いていればスピアマン相関の対象になります。
レポート文例
結果をどう書くか
日本語の例
学習努力順位とレポート評価順位の関連を検討するため、スピアマンの順位相関分析を行った。その結果、両者の間には中程度の正の関連が認められた(Spearman の ρ = 0.48, p = 0.006)。ジッター散布図でも、努力順位が高い参加者ほどレポート評価順位も高い傾向が確認できた。
English example
A Spearman rank correlation was conducted to examine the association between effort rank and report quality rank. The analysis indicated a moderate positive monotonic association (Spearman's ρ = 0.48, p = 0.006). The jittered scatter plot also suggested that higher effort ranks tended to accompany higher report-quality ranks.
よくあるミス
つまずきやすい点
散布図を見ない
相関係数だけでは単調関係かどうか分かりにくいので、必ず図を確認します。
順序のないカテゴリに使う
県名や所属のような nominal データには使えません。大小関係がある変数が前提です。
直線関係と同一視する
スピアマンは単調関係を見るので、ピアソン相関と同じ意味で「直線的」とは言えません。
統制が必要なのに単純相関で終える
第3変数がありそうなら偏相関や回帰へ進みます。
FAQ
よくある質問
Q. Likert 5件法にも使えますか?
A. はい。順序尺度として扱うなら、最初の入口としてスピアマン相関は実用的です。
Q. ties が多いです。
A. 問題なく計算できることが多いですが、極端に ties が多いならケンドール相関も検討してください。
Q. 偏相関はいつ使いますか?
A. 第3変数を統制したうえで2変数の関連を見たいときです。たとえば出席状況を揃えたうえで、努力と成果の関連を見たい場合です。
代替手法
代替手法・次のステップ
尺度水準や統制したい変数の有無によって、次に選ぶ方法が変わります。
ピアソン相関
連続変数どうしの直線関係をみる基本手法です。
ケンドール相関
ties が非常に多い小規模データで検討候補になります。
偏相関・回帰分析
第3変数の影響を統制したいときは偏相関、説明や予測の方向性まで進みたいときは回帰分析が向いています。
参考資料
参考資料
まずは cor.test() の仕様、そのあと偏相関や相関の可視化を見ていくと流れがつかみやすいです。
運営と利用上の注意
このページの位置づけ
本サイトのトピックページは、Rによるデータ分析の学習支援とレポート作成の補助を目的としたオリジナル解説です。サンプルデータとコードは再現練習用に作成しているため、実データを扱う際には研究計画・前提条件・欠測・外れ値・尺度水準をあらためて確認してください。
編集方針
ページ本文は、標準的な統計手法、Rの公式ドキュメント、一次資料に近い参考文献を優先して整理しています。更新や訂正の方針は編集方針ページで公開しています。