便利すぎて「ツール」になりがちな相関係数
データ分析において相関係数は、広く用いられる指標の一つです。
一般的には以下のように、2変数の相関方向の判断に使用されている方が多いかと思います
相関係数がこれだけ普及した理由として、「簡単に計算・活用できる」事が挙げられます。
Excel等の汎用ツールでも簡単に計算できますし、RやPythonのようなプログラム言語でもライブラリで1行で求められる等、手間を掛けずに計算できる便利な指標となっています。
また、「異なるデータセットであっても比較できる」という汎用性の高さも普及に一役買っています。
下表のように(参考)、相関の強さを定量的に比較する用途で使用されている方も多いかと思います。
相関係数rの絶対値 | 解釈 |
---|---|
0.0 < r ≦0.2 | XとYの間にほとんど相関がない |
0.2 < r ≦0.4 | XとYの間に弱い相関がある |
0.4 < r ≦0.7 | XとYの間にやや強い相関がある |
0.7 < r ≦1 | XとYの間に強い相関がある |
上記のように簡単かつ汎用性が高い相関係数ですが、あまりに身近すぎて「ツールとして使えればいいや」の精神で用いられる事が多く、その理論的な正体については意外と知られていないのではないでしょうか?
相関係数の理論は多数の統計書籍で紹介されていますが、多くのページに分散して記載されていることが多いため、本記事ではPythonでの実装法も交え、「相関係数に絞ってカンゼンニリカイ」できる記事を目指してまとめたいと思います。
まとめてみて思ったところとして、極端に高度な内容を含まず、かつ確率論の頻出テクニックを多く組み合わせて求める指標のため、統計学の理解を深めるのにピッタリのテーマだと感じました。
統計について勉強したいという方も、ぜひご一読頂ければと思います。
本文に進む前に
本記事の内容をより深く理解するためには、「共分散」に関する知識があることが望ましいです。
共分散については以下の記事にまとめたので、ぜひご一読いただければと思います。
相関係数の定義
「相関係数」と名前のつく指標は何種類かありますが、本記事では最も一般的に用いられるピアソンの相関係数を紹介します。
(ピアソンの相関係数以外についても後で紹介します)
ピアソンの相関係数の定義
49ページ 相関係数の定義
JIS Z 8101-1では、2つの変数XとYの相関係数は
共分散 / (xの標準偏差・yの標準偏差)
と定義されています。
これを式で表すと、相関係数をρ
、共分散をCov[X,Y]
、(母)分散をV[X]
およびV[Y]
とすれば
相関係数\rho=\frac{Cov[X,Y]}{\sqrt{V[X]V[Y]}}
となります。
相関係数の式には共分散や母分散が含まれるため、基本的には2次元以上の確率分布から定義される指標です。
相関係数の直感的理解
相関係数を直感的に理解するため、その正負について考えてみます。
分母の分散V[X]
およびV[Y]
は常に正となるため、分子の共分散Cov[X,Y]の正負を考えれば良いです。
共分散はその定義に乗っ取ると、$(X-E[X])(Y-E[Y])$の期待値、すなわち全定義域での確率密度とのたたみ込み積分
Cov[X,Y]=E\bigl[(X-E[X])(Y-E[Y]) \bigr]\\
=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} p(x, y)(x-E[X])(y-E[Y])dx dy
で表されます。
上式の$(x-E[X])(y-E[Y])$の部分に着目すると、下図のように重心(各変数の平均値)(E[X], E[Y])
を基準に左下から右上方向が正、右下から左上方向が負となることが分かります。
上記を踏まえると、確率密度$p(x, y)$とのたたみ込みである共分散は、平均値を中心として
・左下から右上方向の確率密度が高いと正
・右下から左上方向の確率密度が高いと負
となり、相関係数は確率分布の斜め方向の偏在、すなわち2変数の相関と関連した指標となることが分かります。
ピアソンの相関係数と2次元正規分布
ピアソンの相関係数はデータがX,Yを変数とした2次元正規分布に従うことを前提とした指標(パラメトリックな指標)です。
2次元正規分布(こちらの記事で解説しています)の式
p(\boldsymbol{x})=\frac{1}{2\pi}\frac{1}{|\boldsymbol{\Sigma}|^\frac{1}{2}}\exp\bigl(-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu})\bigr)
平均ベクトル\boldsymbol{\mu}
=
\left(\begin{array}{c}
\mu_X \\
\mu_Y \\
\end{array}\right)
分散共分散行列\boldsymbol{\Sigma}=
\begin{pmatrix}
\sigma_X & \sigma_{XY} \\
\sigma_{XY} & \sigma_Y
\end{pmatrix}
{\left\{\begin{array}{ll}
\mu_X \cdots Xの平均値 \\
\mu_Y \cdots Yの平均値 \\
\sigma_X \cdots Xの分散 \\
\sigma_Y \cdots Yの分散 \\
\sigma_{XY} \cdots XとYの共分散\\
\end{array}\right.
}
において、ピアソンの相関係数は以下のように表せます
\rho=\frac{\sigma_{XY}}{\sigma_X \sigma_Y}
後述の無相関の検定やフィッシャーのz変換も2次元正規分布に従うことを前提とした理論であることにご注意ください。
相関係数と標本相関係数
上記のように、本来「相関係数」と呼ばれるものは「確率分布から定義される指標」です。
一方で、私たちが普段「相関係数」と呼んでいるものは、限られたデータ(サンプル)から推定された指標である事が多く、これは標本相関係数または積率相関係数と呼ばれます。
相関係数ρ
と標本相関係数r
の違いは以下のように図示できます。
上記「相関係数」は、後述の推定においては「母相関係数」と呼ばれることも多いです。
実データでの相関係数の求め方
上で少し触れましたが、現実世界では多くの場合有限のデータ(サンプル=標本データ)しか観測できないため、真の相関係数(母相関係数ρ)を限られたサンプルから求めた標本相関係数rから推定する必要があります。
なお、使用したサンプルコードは以下のGitHubリポジトリにもアップロードしております。
標本相関係数
サンプルから標本相関係数rは、以下の式で求められます
r=\frac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^n(x_i-\bar{x})^2}\sqrt{\sum_{i=1}^n(y_i-\bar{y})^2}}
これは$標本共分散s_{xy}および標本標準偏差s_x,s_y$(標本分散※の平方根)を用いて
r=\frac{s_{xy}}{s_x s_y}
とも表せ、確率分布における定義式の母分散および母共分散を、標本分散および標本共分散に置き換えた式となっていることがわかります。
※不偏分散、標本分散どちらでも成り立ちます(分子と分母のnまたはn-1が打ち消しあって消去されるため)
繰り返しとなりますが、一般的には上記サンプルから求めた標本相関係数rを「相関係数」として使用する例が多いですが、
本来の相関係数は前述の確率分布から定義される指標ρであり、「標本相関係数r」はその推定値に過ぎません
よって厳密に分析するのであれば、標本相関係数rが母相関係数ρの推定値としてどの程度信頼性があるかを判断する必要があります。
判断手法としてよく使用される「無相関の検定」と「フィッシャーのz変換」を紹介します。
手法1:無相関の検定
「母相関係数ρ=0」(無相関)を帰無仮説として検定を行うことで、有意に相関があるかを判定する方法を無相関の検定と呼びます(参考)
無相関(ρ=0)の2次元正規分布からサンプリングされた標本相関係数rに対し、以下の統計量tは自由度n-2のt分布に従います(理由は後述)
t=r\sqrt{\frac{n-2}{1-r^2}}
※データが2次元正規分布に従うことを仮定していることにご注意ください
上式は、rを変数変換して得られたtが、シンプルな1変数の確率分布(t分布)で表せることを示しており、母平均の検定と同様に確率分布に基づくp値が有意水準(0.05, 0.01等)を下回るかどうかで、有意に相関があるかを判定する事ができます。
具体的な手順としては、上記のtの絶対値が自由度n-2のt分布の有意水準%点(片側検定の場合「1-累積密度関数」、両側検定の場合「1-累積密度関数/2」)を上回るかどうかで、有意に相関があるか(無相関であるという帰無仮説を棄却できるか)を判定します。
無相関の検定の計算例
例えばサンプル数n=10のとき、自由度10-2=8のt分布の2.5%点(5%有意水準の両側検定)は2.306なので、
r\sqrt{\frac{10-2}{1-r^2}}>2.306\\
\therefore 8r^2>(2.306)^2(1-r^2)\\
\therefore r^2>\frac{5.318}{5.318+8}\\
\therefore r>0.631\cdots
サンプル数10個では、標本相関係数r>0.63のような非常に大きな値でないと、「有意に相関がある」と言えない事が分かります。
上例を見ると明らかですが、サンプル数が少ないときは「有意に相関がある」と言うハードルが非常に高くなります。
英語版Wikipediaには、下図のように横軸にサンプル数、縦軸に無相関の検定の閾値となる標本相関係数rをとったグラフが記載されています(オレンジ線が両側検定、青線が片側検定の場合で、どちらも5%有意水準)
例えば相関係数0.2前後では、サンプル数が100を超えないと「有意に相関がある」と言えない事が分かります。
※無相関の検定の両側検定と片側検定
上例では「相関の有無」に着目して両側検定を行いましたが、「相関がプラスかどうか」という方向性に着目する場合は片側検定(5%有意水準においてt分布の5%点を閾値とする)使用することもできます。
Pythonによる無相関の検定の実装
実は無相関の検定に基づくp値(両側検定)は、scipyパッケージのscipy.stats.pearsonrメソッドでも簡単に求める事ができます。
こちらのseaborn-analyzerパッケージで無相関の検定のp値と散布図を簡単にプロットできるようにしたので、よければ活用頂ければと思います。
from seaborn_analyzer import regplot
import seaborn as sns
iris = sns.load_dataset("iris")
regplot.linear_plot(x='petal_length', y='sepal_length', data=iris)
手法2:フィッシャーのz変換
無相関の検定では「相関係数ρ=0」を帰無仮説としていましたが、
「相関係数ρ=定数$\rho_0$」を帰無仮説とすることで、相関係数の信頼区間を求めることもできます。
このとき使用されるのがフィッシャーのz変換です。
ρ=0以外の場合、標本相関係数rの標本分布を単純な式で表すのは難しい(後述)ですが
以下のフィッシャーのz変換
z=\frac{1}{2}\log{\frac{1+r}{1-r}}
をとり、母相関係数ρも同様に
\eta=\frac{1}{2}\log{\frac{1+\rho}{1-\rho}}
をとることで、
\sqrt{n-3}(z-\eta)
が近似的に標準正規分布に従うことが分かっています。
これを利用すると、標準正規分布の各%点からスタートして母相関係数ρの信頼区間が求まります。
フィッシャーのz変換による相関係数の信頼区間の計算例
こちらの記事と同様に、NBA選手の身長と体重の相関を求めてみます
name,height,weight
Kareem Abdul-Jabbar,218.4,102.1
LeBron James,205.7,113.4
Karl Malone,205.7,117.5
Kobe Bryant,198.0,96.0
Michael Jordan,198.0,89.0
Dirk Nowitzki,213.0,111.0
Wilt Chambelain,215.9,113.4
Shaquille O'Neal,215.9,147.4
Carmelo Anthony,201.0,107.0
Moses Malone,208.3,97.5
John Stockton,185.4,79.4
Jason Kidd,193,95.3
Chris Paul,185.4,79.4
Steve Nash,190.5,80.7
Mark Jackson,190.5,88.5
Magic Johnson,205.7,99.8
Oscar Robertson,195.6,93
Isiah Thomas,185.4,81.6
Gary Payton,193,86.2
Russel Westbrook,190.5,90.7
標本相関係数r=0.80662、サンプル数n=20である事から、フィッシャーのz変換を元に95%信頼区間を求めてみます。
まず、$\sqrt{n-3}(z-\eta)$が標準正規分布に従うことと、標準正規分布の2.5%点が1.96であることから、
-1.96<\sqrt{n-3}(z-\eta)<1.96
n=20および$z=\frac{1}{2}\log{\frac{1+r}{1-r}}=\frac{1}{2}\log{\frac{1.80662}{0.19338}}=1.11728$を代入し
-1.96<\sqrt{17}(1.11728-\eta)<1.96\\
\therefore -0.47537<1.11728-\eta<0.47537\\
\therefore 0.64191<\eta<1.59265
$\eta=\frac{1}{2}\log{\frac{1+\rho}{1-\rho}}$を代入して
0.64191<\frac{1}{2}\log{\frac{1+\rho}{1-\rho}}<1.59265\\
1.28382<\log{\frac{1+\rho}{1-\rho}}<3.1853\\
3.61039<\frac{1+\rho}{1-\rho}<24.17443\\
\frac{3.61039-1}{3.61039+1}<\rho<\frac{24.17443-1}{24.17443+1}\\
0.56619<\rho<0.92055
母相関係数の95%信頼区間は概ね0.57〜0.92の範囲であることが分かりました。
Pythonによる相関係数の信頼区間算出
メジャーどころのライブラリにz変換専用の機能は存在しないため、scipyの正規分布用メソッド(scipy.stats.norm)を使って求めます。
計算内容は前述の手計算のときと同様なため、詳細は割愛します
import pandas as pd
import numpy as np
from scipy import stats
P_threshold = 0.05 # 信頼区間
df = pd.read_csv('./../nba_height_weight.csv')
n = len(df)
# zの計算
r = np.corrcoef(df['weight'], df['height'])[0,1]
z = np.log((1 + r) / (1 - r)) / 2
# ηの信頼区間下限
eta_min = z - stats.norm.ppf(q=1-P_threshold/2, loc=0, scale=1) / np.sqrt(n - 3)
# ηの信頼区間上限
eta_max = z - stats.norm.ppf(q=P_threshold/2, loc=0, scale=1) / np.sqrt(n - 3)
# 母相関係数ρの信頼区間下限
rho_min = (np.exp(2 * eta_min) - 1) / (np.exp(2 * eta_min) + 1)
# 母相関係数ρの信頼区間上限
rho_max = (np.exp(2 * eta_max) - 1) / (np.exp(2 * eta_max) + 1)
print(f'母相関係数の{P_threshold*100}%信頼区間 = {rho_min}〜{rho_max}')
母相関係数の5.0%信頼区間 = 0.5662076925553551〜0.9205539671419399
参考:母相関係数ρと標本相関係数rの関係式
「標本相関係数rの標本分布を単純な式で表すのは難しい」と前述しましたが、具体的にはrの確率密度関数f(r)
は以下の式で表されます(英語版Wikipediaより、データが2次元正規分布に従うことを仮定)
f(r)=\frac{(n-2)\Gamma(n-1)(1-\rho^2)^\frac{n-1}{2}(1-r^2)^\frac{n-4}{2}}{\sqrt{2\pi}\Gamma(n-\frac{1}{2})(1-\rho r)^{n-\frac{3}{2}}} {}_2 F_1\Bigl(\frac{1}{2},\frac{1}{2};\frac{1}{2}(2n-1);\frac{1}{2}(\rho r+1)\Bigr)
※$\Gamma(n)はガンマ関数, {}_2 F_1(a,b;c;z)$はガウスの超幾何関数を表しています
無相関の検定のベータ分布表記
上式にρ=0を代入すると、以下の確率密度関数で表せます
f(r)=\frac{(1-r^2)^\frac{n-4}{2}}{B(\frac{1}{2},\frac{1}{2}(n-2))}
※$B(x,y)$はベータ関数を表しています。
この式、実は無相関の検定におけるt分布の条件と同じ意味を持っています。
-証明
自由度n-2のt分布は、以下の確率密度関数で表されます
g(t)=\frac{1}{\sqrt{n-2}B(\frac{1}{2},\frac{n-2}{2})}\Bigl(1+\frac{t^2}{n-2}\Bigr)^{-\frac{n-1}{2}}
これに先ほどの無相関の検定における
t=r\sqrt{\frac{n-2}{1-r^2}}
が従うことを代入します。
確率変数の変換公式$f(r)=g(\psi(r))\Bigl|\frac{d\psi(r)}{dr}\Bigr|にt=\psi(r)=r\sqrt{\frac{n-2}{1-r^2}}$を代入すると、rに変数変換した確率密度関数f(r)
は
f(r)=\frac{1}{\sqrt{n-2}B(\frac{1}{2},\frac{1}{2}(n-2))}\Bigl(1+\frac{1}{n-2}\frac{(n-2)r^2}{1-r^2}\Bigr)^{-\frac{n-1}{2}}\Bigl(\frac{d}{dr}\Bigl(r\sqrt{\frac{n-2}{1-r^2}}\Bigr)\Bigr)\\
=\frac{1}{\sqrt{n-2}B(\frac{1}{2},\frac{1}{2}(n-2))}\Bigl(\frac{(1-r^2)+r^2}{1-r^2}\Bigr)^{-\frac{n-1}{2}} \sqrt{n-2} \Bigl(\frac{dr}{dr}\frac{1}{\sqrt{1-r^2}}+r\frac{d}{dr}\Bigl(\frac{1}{\sqrt{1-r^2}}\Bigr)\Bigr)\\
=\frac{1}{B(\frac{1}{2},\frac{1}{2}(n-2))}\Bigl(\frac{1}{1-r^2}\Bigr)^{-\frac{n-1}{2}} \Bigl((1-r^2)^{-\frac{1}{2}}+r\frac{d}{dr}\Bigl((1-r^2)^{-\frac{1}{2}}\Bigr)\Bigr)\\
=\frac{1}{B(\frac{1}{2},\frac{1}{2}(n-2))}(1-r^2)^{\frac{n-1}{2}} \Bigl((1-r^2)^{-\frac{1}{2}}+r\Bigl(-\frac{1}{2}\Bigr)(1-r^2)^{-\frac{3}{2}}\frac{d}{dr}(1-r^{2})\Bigr)\\
=\frac{1}{B(\frac{1}{2},\frac{1}{2}(n-2))}(1-r^2)^{\frac{n-1}{2}} \Bigl((1-r^2)(1-r^2)^{-\frac{3}{2}}+r\Bigl(-\frac{1}{2}\Bigr)(1-r^2)^{-\frac{3}{2}}(-2r)\Bigr)\\
=\frac{1}{B(\frac{1}{2},\frac{1}{2}(n-2))}(1-r^2)^{\frac{n-1}{2}} (1-r^2)^{-\frac{3}{2}}\Bigl((1-r^2)+r^2\Bigr)\\
=\frac{(1-r^2)^\frac{n-4}{2}}{B(\frac{1}{2},\frac{1}{2}(n-2))}
これは冒頭のρ=0のときのrの確率密度関数と等しくなっており、上式の逆方向に変数変換することで無相関の検定の条件式が求まることが分かります。
標本相関係数の期待値
英語版Wikipediaによると、標本相関係数rの期待値$E[r]$は、以下のように表せます
E[r]=\rho-\frac{\rho(1-\rho^2)}{2n}+\cdots,
標本相関係数rの期待値$E[r]$は母相関係数ρと等しくないため、rはρ不偏推定量でないことが分かります。
特にnが小さいときは、標本相関係数rは真の相関係数ρと比べて小さめに見積もられる傾向にあります。
標本相関係数の不偏推定量
$E[r_{adj}]=\rho$となるような不偏推定量は、どのように求めるのでしょうか?
英語版Wikipediaによると、不偏推定量$r_{adj}$は、ガウスの超幾何関数を使用して以下のように表せます
r_{adj}=r\cdot{}_2 F_1\Bigl(\frac{1}{2},\frac{1}{2};\frac{n-1}{2};1-r^2 \Bigr)
こちらの記事によると、上記を近似した以下の式で、より簡単に不偏推定量を表すことができます。
r_{adj}=r\Bigl(1+\frac{1-r^2}{2n-6}\Bigr)
相関係数の不偏推定量は、算出が大変な割に用途が限られるため、不偏分散ほどは使われていません。あくまで参考程度に認識いただければと思います。
相関係数の性質
相関係数には、以下の重要な性質があります
No. | 性質 |
---|---|
性質1 | -1 < 相関係数 < 1 |
性質2 | 相関係数=標準化した変数の共分散 |
性質3 | 相関係数=1ならxとyが完全に直線で表せる |
性質4 | 相関係数の2乗は、線形回帰前と回帰後の分散の減少率 |
性質5 | 相関係数が正なら、和の分散 > 分散の和 |
それぞれ解説します。
性質1: -1 < 相関係数 < 1
これは常識と言って差し支えないほど有名な性質ですが、母相関係数、標本相関係数ともに、絶対値は1以下となります。
-1\leq r\leq 1
-1\leq \rho\leq 1
母相関係数における証明
長くなるので本記事には載せませんが、こちらの記事の証明がわかりやすいです。
シュワルツの不等式を利用して証明します。
標本相関係数における証明
標本相関係数rは以下の標準化変数$z_i,w_i$の共分散であることから(後述)
z_i=\frac{x_i-\bar{x}}{S_x}, w_i=\frac{y_i-\bar{y}}{S_y}
r=\frac{1}{n}\sum_{i=1}^{n}z_iw_i\cdots①
ここで、以下の式を計算すると
\frac{1}{n}\sum_{i=1}^{n}(z_i\pm{w_i})^2=\frac{1}{n}\sum_{i=1}^{n}(z_i^2\pm{2z_iw_i}+w_i^2)\\
=\frac{1}{n}\sum_{i=1}^{n}z_i^2\pm{\frac{2}{n}\sum_{i=1}^{n}z_iw_i}+\frac{1}{n}\sum_{i=1}^{n}w_i^2
①および標準化変数の分散$\frac{1}{n}\sum_{i=1}^{n}z_i^2=\frac{1}{n}\sum_{i=1}^{n}w_i^2=1$より
1\pm{r}+1\\
=2(1\pm{r})
左辺$\frac{1}{n}\sum_{i=1}^{n}(z_i\pm{w_i})^2$は常に正となることを利用すると
2(1\pm{r})\geq0\\
\therefore 1\pm{r}\geq0
よって$-1\leq r\leq 1$となることが証明できました。
性質2: 相関係数=標準化した変数の共分散
共分散の記事で触れましたが、標準化した変数の共分散をとると、元の変数の相関係数となります。
ここから相関係数はスケールを揃えて比較できるよう規格化された共分散であるという解釈ができるかと思います。
母相関係数における証明
元の変数X, Yに対して、標準化された変数X', Y'を以下のように定義します
X'=\frac{X-E[X]}{\sqrt{V[X]}}, Y'=\frac{Y-E[Y]}{\sqrt{V[Y]}}
これらX', Y'の共分散を求めます
Cov[X',Y']=E[(X'-E[X'])(Y'-E[Y'])]\\
=E\biggl[\Bigl(\frac{X-E[X]}{\sqrt{V[X]}}-E\Bigl[\frac{X-E[X]}{\sqrt{V[X]}}\Bigr]\Bigr)\Bigl(\frac{Y-E[Y]}{\sqrt{V[Y]}}-E\Bigl[\frac{Y-E[Y]}{\sqrt{V[Y]}}\Bigr]\Bigr)\biggr]
E[X],E[Y],V[X],V[Y]が定数とみなせることと、定数と期待値の性質を適用して
=E\biggl[\frac{\bigl(X-E[X]-(E[X]-E[X])\bigr)}{\sqrt{V[X]}}\frac{\bigl(Y-E[Y]-(E[Y]-E[Y])\bigr)}{\sqrt{V[Y]}}\biggr]\\
=E\biggl[\frac{(X-E[X])(Y-E[Y])}{\sqrt{V[X]}\sqrt{V[Y]}}\biggr]\\
=\frac{E[(X-E[X])(Y-E[Y])]}{\sqrt{V[X]}\sqrt{V[Y]}}\\
=\frac{Cov[X,Y]}{\sqrt{V[X]}\sqrt{V[Y]}}\\
=\rho
標本相関係数における証明
元の変数$x_i,y_i$に対して、標準化された変数$z_i,w_i$を以下のように定義します
z_i=\frac{x_i-\bar{x}}{S_x}, w_i=\frac{y_i-\bar{y}}{S_y}
※標本標準偏差
S_x=\sqrt{\frac{\sum_{i=1}^n(x_i-\bar{x})^2}{n}},S_y=\sqrt{\frac{\sum_{i=1}^n(y_i-\bar{y})^2}{n}}
上記z,wに対して標本共分散(標準化の式に合わせてnで割った不偏でない値)を求めると、
S_{zw}=\frac{1}{n}\sum_{i=1}^{n}(z_i-\bar{z})(w_i-\bar{w})
標準化変数の平均値$\bar{z}=\bar{w}=0$から
=\frac{1}{n}\sum_{i=1}^{n}z_iw_i\\
=\frac{1}{n}\sum_{i=1}^{n}\frac{x_i-\bar{x}}{S_x}\frac{y_i-\bar{y}}{S_y}
$S_x,S_y$は定数であることを考え
=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{nS_x S_y}\\
=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{n\sqrt{\frac{\sum_{i=1}^n(x_i-\bar{x})^2}{n}}\sqrt{\frac{\sum_{i=1}^n(y_i-\bar{y})^2}{n}}}\\
=\frac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^n(x_i-\bar{x})^2}\sqrt{\sum_{i=1}^n(y_i-\bar{y})^2}}\\
=r
性質3: 相関係数=1ならxとyが完全に直線で表せる
標本相関係数が1または-1のとき、全てのデータにおいてxとyは一直線に並びます。
証明
変数xとyの線形回帰を考えます。yの予測値を$\hat{y}$と置き、以下の式で回帰します
\hat{y_i}=\beta_1+\beta_2 x_i
最小二乗法に基づき、以下の誤差二乗和Lを最小化します。
L=\sum_{i=1}^{n}\bigl(y_i-\hat{y_i}\bigr)^2\\
=\sum_{i=1}^{n}\bigl(y_i-(\beta_1+\beta_2 x_i)\bigr)^2
係数$\beta_1,\beta_2$で偏微分して、Sが最小となる係数の値(偏微分が0となる)を求めると
\frac{\partial L}{\partial \beta_1}=-2\sum_{i=1}^{n}(y_i-\beta_1+\beta_2 x_i)=0\\
\frac{\partial L}{\partial \beta_2}=-2\sum_{i=1}^{n}(y_i-\beta_1+\beta_2 x_i)x_i=0
\therefore {{\left\{\begin{array}{ll}
n\beta_1+\Bigl(\sum_{i=1}^{n}x_i\Bigr)\beta_2=\sum_{i=1}^{n}y_i \\
\Bigl(\sum_{i=1}^{n}x_i\Bigr)\beta_1+\Bigl(\sum_{i=1}^{n}x_i^2\Bigr)\beta_2=\sum_{i=1}^{n}x_i y_i
\end{array}\right.
}
}
\beta_2=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{\sum_{i=1}^{n}(x_i-\bar{x})^2}\cdots②\\
\beta_1=\bar{y}-\beta_2\bar{x}
$\beta_2$に着目すると
\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})=\sum_{i=1}^{n}\beta_2(x_i-\bar{x})^2\\
\sum_{i=1}^{n}(x_i-\bar{x})\bigl((y_i-\bar{y})-\beta_2(x_i-\bar{x})\bigr)=0\\
$\beta_1=\bar{y}-\beta_2\bar{x}$を代入して
\sum_{i=1}^{n}(x_i-\bar{x})\bigl(y_i-(\beta_2 x_i+\beta_1)\bigr)=0\\
$\hat{y_i}=\beta_1+\beta_2 x_i$を代入して
\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\hat{y_i})=0
ここで、$\hat{y_i}-\bar{y}=\beta_1+\beta_2 x_i-\bar{y}=\bar{y}-\beta_2\bar{x}+\beta_2 x_i-\bar{y}=\beta_2(x_i-\bar{x})\cdots③$から
\sum_{i=1}^{n}\frac{(\hat{y_i}-\bar{y})(y_i-\hat{y_i})}{\beta_2}=0
$\beta_2はy_i$が全て同一値のとき以外は0とならないので
\sum_{i=1}^{n}(\hat{y_i}-\bar{y})(y_i-\hat{y_i})=0\cdots④
また、式②を変形すると
\beta_2=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^n(x_i-\bar{x})^2}\sqrt{\sum_{i=1}^n(y_i-\bar{y})^2}}\frac{\sqrt{\sum_{i=1}^n(y_i-\bar{y})^2}}{\sqrt{\sum_{i=1}^n(x_i-\bar{x})^2}}\\
=r\frac{S_y}{S_x}\cdots⑤
③と⑤を組み合わせて
\hat{y_i}-\bar{y}=\beta_2(x_i-\bar{x})=r\frac{S_y}{S_x}(x_i-\bar{x})\cdots⑥
ここで、$y_i-\bar{y}=(y_i-\hat{y_i})+(\hat{y_i}-\bar{y})$の二乗和をとると
\sum_{i=1}^{n}(y_i-\bar{y})^2=\sum_{i=1}^{n}\bigl((y_i-\hat{y_i})+(\hat{y_i}-\bar{y})\bigr)^2\\
=\sum_{i=1}^{n}(y_i-\hat{y_i})^2+2\sum_{i=1}^{n}(\hat{y_i}-\bar{y})(y_i-\hat{y_i})+\sum_{i=1}^{n}(\hat{y_i}-\bar{y})^2
④より
=\sum_{i=1}^{n}(y_i-\hat{y_i})^2+\sum_{i=1}^{n}(\hat{y_i}-\bar{y})^2
⑥を代入して
=\sum_{i=1}^{n}(y_i-\hat{y_i})^2+r^2\frac{S_y^2}{S_x^2}\sum_{i=1}^{n}(x_i-\bar{x})^2\\
=\sum_{i=1}^{n}(y_i-\hat{y_i})^2+r^2nS_y^2\\
=\sum_{i=1}^{n}(y_i-\hat{y_i})^2+r^2\sum_{i=1}^{n}(y_i-\bar{y})^2
よって誤差二乗和Lは
L=\sum_{i=1}^{n}(y_i-\hat{y_i})^2\\
=\sum_{i=1}^{n}(y_i-\bar{y})^2-r^2\sum_{i=1}^{n}(y_i-\bar{y})^2\\
=(1-r^2)\sum_{i=1}^{n}(y_i-\bar{y})^2\cdots⑦
よってr=±1のとき、誤差二乗和L=0となり、全てのデータについて$y_i=\hat{y_i}=\beta_1+\beta_2 x_i$
すなわちyがxに対して直線で表せ、一直線に並ぶことがわかります。
性質4: 相関係数の2乗は、線形回帰前と回帰後の分散の減少率
相関係数の2乗(線形回帰の決定係数)は、線形回帰による分散の減少率、すなわちどの程度予測精度がUPするかを表します
以下のように、$回帰前の分散SS_0と回帰後の分散SS_Eを考えます$
(実際は分散とグラフの縦軸は次元が異なる(こちらの図のように、平方根を取った標準偏差がグラフの縦軸と一致)ので、あくまでイメージ図であることにご注意ください)
このとき、
SS_0=\frac{1}{n}\sum_{i=1}^{n}(y_i-\bar{y})^2\\
SS_E=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y_i})^2
となります。前述の式⑦を適用すると
SS_E=\frac{1}{n}\sum_{i=1}^{n}(y_i-\hat{y_i})^2\\
=(1-r^2)\frac{1}{n}\sum_{i=1}^{n}(y_i-\bar{y})^2\\
=(1-r^2)SS_0
よって分散の減少率$SS_R/SS_0$は、
\frac{SS_R}{SS_0}=\frac{SS_0-SS_E}{SS_0}\\
=1-\frac{(1-r^2)SS_0}{SS_0}\\
=r^2
よって相関係数の2乗(決定係数)は線形回帰による分散の減少率を表す事が分かります。
性質5: 相関係数が正なら、和の分散 > 分散の和
相関係数が正なら、和の分散 > 分散の和となります。この理論は投資におけるリスク計算に有効です。
V[X+Y]=V[X]+V[Y]+Cov[X,Y]
を見ると、
Cov[X,Y]<0のとき\cdots V[X+Y]<V[X]+V[Y]\\
Cov[X,Y]=0のとき\cdots V[X+Y]=V[X]+V[Y]\\
Cov[X,Y]>0のとき\cdots V[X+Y]>V[X]+V[Y]\\
となる事が分かります。
前述のように、共分散$Cov[X,Y]$の正負は相関係数ρの正負と一致するので、
・相関係数が正 → 和の分散 > 分散の和
・相関係数=0 → 和の分散 = 分散の和
・相関係数が負 → 和の分散 < 分散の和
投資において、和の分散は複数の銘柄を購入した際の利益のばらつきを表します。
投資の基本として、リスク回避の観点からばらつきが小さい事が望ましいとされており、例えば運用成績を測る代表的な指標であるシャープの測度は
\frac{投資のリターン-無リスク資産利子率}{投資の標準偏差}
で計算でき、分母に標準偏差が来ることからも、分散を小さくすることが望ましい事が分かります
よって上記の相関係数と和の分散の関係をリスク回避の観点に適用すると、
「複数の銘柄を組み合わせるとき、期待値が同じであれば、相関係数がなるべく小さい銘柄を組み合わせるのが良い」
事が分かります。
このように相関が低い銘柄を複数組み合わせることで、リスクを低減できる効果をポートフォリオ効果と呼びます。
例えば原油価格が上がるとエネルギー開発会社の株価は上がり、燃料費が嵩む運輸業の株価は下がる傾向にあり、両者には負の相関があると考えられるため、同時購入することでポートフォリオ効果を得られると考えられます。
S&P500のような指標に連動したインデックスファンドもポートフォリオ効果が得られる代表例の一つと言え、リスクを回避したい投資家から根強い人気を得ています。
相関係数に関連した用語集
相関係数と関連する概念として、「決定係数」「自己相関」等が挙げられます。
これらは名前が似ているため、非常に紛らわしいと感じられている方も多いかと思います。
紛らわしさの解消に少しでも役立てられるよう、以下でまとめて解説します。
No. | 名称 | 概要 |
---|---|---|
1 | 決定係数 | 回帰前と回帰後の分散の減少率 |
2 | 重相関係数 | 線形重回帰から求めた決定係数の平方根 |
3 | 偏相関係数 | 交絡因子(2変数に共通して寄与する別変数)の影響を排除した相関 |
4 | 自己相関 | 時系列データにおけるh回前のデータとの相関係数 |
5 | 順位相関 | 順序尺度に対して定義される相関係数 |
6 | PPS (Predictive Power Score) | 非線形な関係も考慮た片方の変数からもう片方の変数の予測能力 |
1. 決定係数
上記の性質4で、「相関係数の2乗は線形回帰による分散の減少率」と述べましたが、
この分散の減少率を一般の回帰アルゴリズム(リッジ回帰やLightGBM等の機械学習を含む)に当てはめたものが、決定係数です。
決定係数は$R^2$やR2、R2-Scoreのように表記され、以下の式で表されます。
R^2=\frac{SS_R}{SS_0}\\
=1-\frac{SS_E}{SS_0}\\
=1-\frac{\sum_{i=1}^{n}(y_i-\hat{y_i})^2}{\sum_{i=1}^{n}(y_i-\bar{y})^2}
\therefore {{\left\{\begin{array}{ll}
y_i \cdots 目的変数の実測値\\
\hat{y_i} \cdots 目的変数の予測値\\
\bar{y} \cdots 目的変数の平均値\\
\end{array}\right.
}
}
繰り返しになりますが、決定係数は回帰前と回帰後の分散の減少率を表しており、
回帰アルゴリズムが線形回帰の時、相関係数の2乗($r^2$)は決定係数R2と一致します。
逆にいうと線形回帰以外の回帰手法では相関係数の2乗と決定係数は一致しないことにご注意ください。
また、2乗のような記法で表されますが、マイナスとなることもあります(例:線形回帰と逆の傾きで回帰された時)
自由度調整済み決定係数
決定係数は説明変数が多くなるほど1に近づく(性能が過大評価される)性質を持っているため、説明変数が大きときはこれを補正するため、以下の自由度調整済み決定係数$R_f^2$が用いられることもあります。
R_f^2=1-\frac{\frac{1}{n-k-1}\sum_{i=1}^{n}(y_i-\hat{y_i})^2}{\frac{1}{n-1}\sum_{i=1}^{n}(y_i-\bar{y})^2}
※kは説明変数の数
2. 重相関係数
線形重回帰から求めた決定係数の平方根を重相関係数と呼びます(以下参考)
「相関係数」と名前がついていますが、どちらかというと「決定係数」としての意味合いの強い指標です。
3. 偏相関係数
3つの変数間での相関を考えると、例えば「変数3と変数1」、「変数3と変数2」に相関があったとき、例え真に影響しあっていなかったとしても「変数1と変数2」に相関が現れてしまう事があります(変数1の影響)。
このように2変数間の相関係数の値が、第3の変数の影響で大きくなってしまう現象を「見せかけの回帰」と呼び、
両者に影響を与える第3の変数を交絡因子と呼びます。
例えば、「プロテインを飲む量」と「筋肉の増加量」の相関を求めたい場合、「筋トレの量」はどちらの変数にも寄与する交絡因子となっていると考えられます(筋トレをしなければプロテインを飲まない事が多いし、筋肉も増えにくい)
このとき、交絡因子の影響を排除して本来の2変数間の相関が求められると望ましいですが、この用途で用いられるのが偏相関係数です。
偏相関係数$r_{12\cdot 3}$(変数3の影響を除いた変数1と2の相関を表す)は、以下の式で表されます
r_{12\cdot 3}=\frac{r_{12}-r_{13}r_{23}}{\sqrt{1-r_{13}^2}\sqrt{1-r_{23}^2}}
なお、交絡因子は3変数以上の複合的な相互作用という意味で「多重共線性」と関連の深い概念ですが、交絡因子や多重共線性は偏相関係数のみでは解釈しきれない複雑な要因が影響しあっている事が多いため、ドメイン知識の活用やグラフによる可視化、因果解析などを組み合わせて丁寧に分析する必要があります。
4. 自己相関
時間の経過とともに複数回観測されるデータを「時系列データ」と呼び、t回目のデータを$x_t$とするように、時間を添字として表されます。
時系列データにおいては「過去のデータが現在のデータに影響を与えているか」が重要な分析対象となっており、その分析手法として自己相関係数がよく用いられます。
「遅れhの自己相関係数」とは、h回前のデータとの相関係数(1回目と1+h回目、2回目と2+h回目・・n-h回目とn回目のデータをそれぞれ横軸と縦軸に並べた相関係数)を指しており、以下の式で表されます
r_h=\frac{\frac{1}{n-h}\sum_{t=1}^{n-h}(x_t-\bar{x})(x_{t+h}-\bar{x})}{\frac{1}{n}\sqrt{\sum_{t=1}^n(x_t-\bar{x})^2}}
自己相関係数から見出せる重要な特徴として「周期性」が挙げられます。
例えば1年おきに周期性を持って変化するデータ(季節性)を月毎に取得した場合、12回前(1年前)との相関が強くなるため、遅れ12の自己相関係数$r_{12}$の値が、他の自己相関係数(例:遅れ10)と比べて大きくなります。
以下の記事で紹介しましたが、自己相関係数を複数並べた自己相関コレログラムなど、自己相関に関係した手法が時系列データの分析において頻繁に用いられます。
5. 順位相関
今まで紹介したピアソンの相関係数は、量的変数(値同士の差に意味を持つ変数=間隔尺度+比例尺度)のみに適用できる指標です。
値同士の差に意味のない質的変数にはピアソンの相関係数は適用できませんが、
質的変数の中でも大小関係に意味のある「順序尺度」には、スピアマンの順位相関係数およびケンドールの順位相関係数が利用できます。
順序尺度の例
スポーツ等の順位や、アンケートでの「良い、普通、悪い」など、大小関係に意味のある
例えばi番目の観測対象の順位が上からk番目のとき、順序尺度$R_i=k$と表されます。
スピアマンの順位相関係数
2つの順序尺度を表す変数$R_iおよびR'_i$に対して、スピアマンの順位相関係数は以下のように表されます
r_s=1-\frac{6}{n^3-n}\sum_{i=1}^{n}(R_i-R'_i)^2
ケンドールの順位相関係数
2つの順序尺度を表す変数$R_iおよびR'_i$に対して、観測対象の対(i,j)を考え、以下のように正順と逆順を定義します。
・正順:RとR'の大小関係が同方向のとき($(R_i>R_jかつR'_i>R'_j)または(R_i<R_jかつR'_i<R'_j)$)
・逆順:RとR'の大小関係が逆方向のとき($(R_i>R_jかつR'_i>R'_j)または(R_i<R_jかつR'_i<R'_j)$)
このとき、正順を与えた対の数をG、逆順を与えた対の数をHとすると、ケンドールの順位相関係数は以下の式で表されます
r_k=\frac{G-H}{\frac{1}{2}n(n-1)}
RとR'の順序が同方向の対が多ければ1に近づき、逆方向の対が多ければ-1に近づき、同方向と逆方向が同数であれば0になると考えると、両変数の相関を表すイメージがつかめるかと思います。
スピアマンとケンドールの順位相関係数の違い
こちらのサイトによると、スピアマンとケンドールの順位相関係数には以下のような関係があるそうです。
・二つの相関係数自体は、計算方法も全く異なるため、相関係数も異なった値を示す。
・二つとも"検定力"と呼ばれる正しく帰無仮説 を棄却する確率は同じ。
・スピアマンの相関係数の方が大きい値を示すことが多い(目安として1.5倍程度)
どちらを使うべきかには諸説ありますが、基本的には「どちらを使っても良い」という意見が多いように感じます。
以下のページにスピアマンとケンドールの順位相関係数の関係をプロットした散布図が載っていますが、両者には非常に高い相関関係があるため、相対的な判断を実施する分にはどちらを使用しても大きな差はないかと思います。
6. PPS (Predictive Power Score)
線形関係を前提とした相関係数の代わりとして、非線形な関係も考慮して片方の変数からもう片方の変数の予測能力を推定するPPS (Predictive Power Score)という手法もあるようです。
詳細は以下の記事をご参照ください
参考文献
・統計学入門 東京大学出版会