Engineering Skills

製品開発エンジニアがデータ解析のノウハウを垂れ流します

Distance correlation

2変数間の関係性の強さを測る指標に相関係数があります。通常の相関係数の他、順位統計に基づいたPeasonやKendallの順位相関係数もあります。残念ながら、これらは単調増加、単調減少の挙動しか捉えることが出来ません。今回は非線形な相関関係を捉えられるdistance correlationについて書きます。

Distance correlation

一般的に相関係数というとピアソンの積率相関係数を指しますが、この相関係数は線形な依存関係に感度があります。非線形な依存関係である場合には、容易に相関係数=ゼロになってしまいます。

Distance correlationはSzékelyらによって提案されています[1][2]。

まずXとYについて、全てのデータ組み合わせの距離[math] \displaystyle a_{j,k} , b_{j,k} [/math]を計算します。

[math] \displaystyle a_{j,k} = || x_{j} - x_{k} || [/math]
[math] \displaystyle b_{j,k} = || y_{j} - y_{k} || [/math]

[math] \displaystyle \| {\cdot} \| [/math]ユークリッド距離です。ここで[math] \displaystyle j [/math]方向と[math] \displaystyle k [/math]方向に平均化した値を考えます。

[math] \displaystyle x [/math][math] \displaystyle j [/math]について平均化したものを[math] \bar a_{{\cdot}k} [/math][math] \displaystyle k [/math]について平均化したものを[math] \bar a_{j{\cdot}} [/math]とし、全平均を[math] \bar a_{{\cdot}{\cdot}} [/math]とします。

ここで[math] \displaystyle a_{j,k} [/math]について[math] \displaystyle j [/math]方向と[math] \displaystyle k [/math]方向にそれぞれ中心化された数値として[math] \displaystyle A_{j,k} [/math]を下記のように計算します。

[math] \displaystyle A_{j,k} = a_{j,k} - \bar a_{j{\cdot}} - \bar a_{{\cdot}k} + \bar a_{{\cdot}{\cdot}} [/math]

[math] \displaystyle b_{j,k} [/math]についても同様に計算します。

[math] \displaystyle B_{j,k} = b_{j,k} - \bar b_{j{\cdot}} - \bar b_{{\cdot}k} + \bar b_{{\cdot}{\cdot}} [/math]

標本距離共分散(sample distance covariance, [math] \displaystyle dCov [/math])は[math] \displaystyle A_{j,k} \cdot B_{j,k} [/math]積の算術平均です。

[math] \displaystyle dCov(x,y) = \frac{1}{n^2} \sum_{j=1}^{n} \sum_{k=1}^{n} A_{j,k} B_{j,k} [/math]

同様に、標本距離分散(sample distance variance, [math] \displaystyle dVar [/math])は、

[math] \displaystyle dVar(x) = dCov(x,x) = \frac{1}{n^2} \sum_{j=1}^{n} \sum_{k=1}^{n} {A_{j,k}}^2 [/math]

以上を用いて距離相関(distance correlation, [math] \displaystyle dCor [/math])を計算します。

[math] \displaystyle dCov(x,y) = \frac{1}{n^2} \sum_{j=1}^{n} \sum_{k=1}^{n} A_{j,k} B_{j,k} [/math]

通常の相関係数との比較

Wipipediaの相関係数 のページには様々なデータ例に対する相関係数を示す図があります。これを参考に通常の(Peasonの積率)相関係数とDistance correlationを比較してみます。

まず通常の(Peasonの積率)相関係数を適用してみると、下図のようになります。単調な場合は良いですが、非線形になったとたん相関係数は~0になってしまいます。

f:id:OceanOne:20201019000918p:plain

次にDistance correlationを適用してみます。3段目の非線形な場合にも相関係数がある程度大きな値を示すことが分かります。ちなみに非線形な関係を捉えるために、正/負の相関といった単調な関係性の時にのみ定義できる符号はなくなります。

f:id:OceanOne:20201019002533p:plain

まとめ

Distance correlation(距離相関)を紹介しました。比較的簡単な計算で非線形な関係も捉えられる指標です。

いつものようにこちらのツールに実装しています。メニューバー"File">Open File (regression)から、ヘッダが1行で系列名の数値縦書きのテキストファイルを読み込ませると、様々な相関係数と一緒にDistance correlationも表示します。

[1] Székely, Gábor J.; Rizzo, Maria L.; Bakirov, Nail K. (2007). "Measuring and testing independence by correlation of distances". The Annals of Statistics. 35 (6): 2769–2794. arXiv:0803.4101. doi:10.1214/009053607000000505. S2CID 5661488.
[2] Székely, Gábor J.; Rizzo, Maria L. (2009). "Brownian distance covariance". The Annals of Applied Statistics. 3 (4): 1236–1265. doi:10.1214/09-AOAS312. PMC 2889501. PMID 20574547.