Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

Spearman

概要

スピアマン順位相関係数 ρ は、パラメータ x_i と目的関数 y の間の単調な関係の強さを測るノンパラメトリック統計量です。 値が線形関係に従わなくても、順序(大小関係)が保たれていれば高い値を示します。

Importance チャートでは |ρ|(絶対値)を表示します。 正負の方向は問わず、「どれだけ強く関係しているか」のみを評価します。


数式

Step 1: 順位変換

n 個のトライアルに対し、各変数の値を順位に変換します。

x=[3.1,  1.2,  4.5,  2.0]    rank(x)=[3,  1,  4,  2]x = [3.1,; 1.2,; 4.5,; 2.0] ;\longrightarrow; \mathrm{rank}(x) = [3,; 1,; 4,; 2]

ここでの「各変数」とは、比較する 2 系列(パラメータ xix_i と目的関数 yy)のそれぞれを指します。 順位付けは各系列を、その系列自身の値の大小に基づいて独立に行います。 xx の順位は xx の値から、 yy の順位は yy の値から決まります。 「目的関数の値に応じてパラメータを並べ替える」という意味ではない点に注意してください。

また、トライアルの対応関係(行)は固定したまま、 xx 列と yy 列をそれぞれ独立に順位へ変換します。 これにより「 xx の順位と yy の順位が一致して動くか(=単調な関係があるか)」を測ります。

例えば 4 トライアルで次の値が得られたとします(行=トライアルの並びは固定です):

trial xx yy rank(x)\mathrm{rank}(x) rank(y)\mathrm{rank}(y)
A 3.1 10.0 3 2
B 1.2 30.0 1 4
C 4.5 5.0 4 1
D 2.0 20.0 2 3
rank(x)\mathrm{rank}(x)xx 列の値の大小、 rank(y)\mathrm{rank}(y)yy
列の値の大小から、それぞれ独立に決まっています。

同値タイの処理: 同じ値が複数ある場合、それらの順位の平均を割り当てます(平均順位法)。

x=[1.0,  2.0,  2.0,  3.0]    rank(x)=[1,  2.5,  2.5,  4]x = [1.0,; 2.0,; 2.0,; 3.0] ;\longrightarrow; \mathrm{rank}(x) = [1,; 2.5,; 2.5,; 4]

Step 2: ピアソン積率相関係数を順位に適用

Step 1 で得た順位列を Rx=rank(x)R_x = \mathrm{rank}(x)Ry=rank(y)R_y = \mathrm{rank}(y) とします。 Rx,iR_{x,i}ii 番目のトライアルにおける xx の値の順位、 Ry,iR_{y,i} は同じトライアルにおける yy の値の順位を表します。 Rˉx,Rˉy\bar R_x, \bar R_y はそれぞれの順位列の平均(タイがなければ n+12\frac{n+1}{2})です。

この順位列 Rx,RyR_x, R_y に対してピアソン積率相関係数を計算します。

ρ=Corr(Rx,Ry)=i(Rx,iRˉx)(Ry,iRˉy)i(Rx,iRˉx)2i(Ry,iRˉy)2\rho = \mathrm{Corr}(R_x, R_y) = \frac{\sum_i (R_{x,i} - \bar R_x)(R_{y,i} - \bar R_y)}{\sqrt{\sum_i (R_{x,i} - \bar R_x)^2,\sum_i (R_{y,i} - \bar R_y)^2}}

タイがない場合は以下の簡易式と等価です:

ρ=16idi2n(n21)\rho = 1 - \frac{6\sum_i d_i^2}{n(n^2 - 1)}

ここで di=Rx,iRy,id_i = R_{x,i} - R_{y,i}(順位の差)です。


補足: ピアソン積率相関係数とは

Step 2 で用いるピアソン積率相関係数の定義や性質は、ピアソン積率相関係数を参照してください。

スピアマン相関は、これを生の値ではなく順位列に適用したものです。 順位は等間隔の値なので、順位どうしの線形な連動を見ることが、元の値の単調な連動を見ることに対応します。


複数目的関数への対応

スピアマン相関 ρ は、目的関数 yky_k ごとに独立に計算されます:

ρk(pj)=ρ(pj,yk)\rho_k(p_j) = \rho(p_j, y_k)

目的関数をまたいだ平均は行いません。 (パラメータ, 目的関数)の組ごとにスコアを保持し、Importance チャートは現在選択されている目的関数 kkρk(pj)|\rho_k(p_j)| のみを表示します。 目的関数セレクタを切り替えると、その目的関数のスコアが再計算されて再描画されます。


特性・限界

強み:

  • 外れ値に頑健です(値そのものでなく順位を使うため)
  • 非線形でも単調な関係なら捉えられます
  • 前提分布なし(ノンパラメトリック)
  • 計算が高速: O(n log n)

弱み:

  • 非単調な関係(U 字形など)は検出できません
  • パラメータ同士の交互作用(x_1 と x_2 が組み合わさった効果)は捉えられません
  • スケールを持たないため、どの程度影響するかの量的評価が難しいです

使用場面の目安

  • トライアル数が少ない(n < 50)場合でも安定して動作します
  • まず全パラメータをざっくりスクリーニングしたいとき
  • 目的関数の形状が未知のとき

参考文献

  • Spearman, C. (1904). The proof and measurement of association between two things. American Journal of Psychology, 15(1), 72–101. https://doi.org/10.2307/1412159