ピアソンの積率相関係数¶
どうやって[−1,1]の範囲に収まるよう正規化しているのか?¶
結論:コーシー・シュワルツの不等式を確率変数にあてはめている。
前提:内積¶
ベクトル空間(要素間の和と定数倍が定義された集合であり、和と定数倍の結果もまた集合の要素であるような集合)における内積について触れておく。
(参考)内積の定義
R 上のベクトル空間 V において、任意の2つのベクトル a,b に対して実数 ⟨a,b⟩ が定まり、次の(1)~(4)を満たすとき、⟨a,b⟩ を a と b の 内積 という。
(1) ⟨a,b⟩=⟨b,a⟩
(2) ⟨a+b,c⟩=⟨a,c⟩+⟨b,c⟩
(3) ⟨ka,b⟩=k⟨a,b⟩(k∈R)
(4) ⟨a,a⟩≧0 で,⟨a,a⟩=0⟺a=0
また、内積⟨a,b⟩とノルム∥a∥=⟨a,a⟩ についての定理のひとつで コーシー・シュワルツの不等式
⟺⟺∣⟨a,b⟩∣≤∥a∥⋅∥b∥−∥a∥⋅∥b∥≤⟨a,b⟩≤∥a∥⋅∥b∥−1≤∥a∥⋅∥b∥⟨a,b⟩≤1 というものが存在する。
なお、∥a∥⋅∥b∥⟨a,b⟩は コサイン類似度 と呼ばれ、ベクトル間の類似性を示すのでデータサイエンスの世界でよく使われる。
具体的な内積の例¶
実数空間R上のベクトル空間における内積の定義を満たす関数の例は次の通り。x,y∈Rnに対し、
⟨x,y⟩=i=1∑nxiyi 標本レベルの話¶
n個の観測値からなるベクトル x=(x1,x2,⋯,xn)⊤ と y=(y1,y2,⋯,yn)⊤ があるとする。
またそれらから平均値xˉ,yˉを引いたベクトルを xˉ=(x1−xˉ,x2−xˉ,⋯,xn−xˉ)⊤、yˉ=(y1−yˉ,y2−yˉ,⋯,yn−yˉ)⊤とする。
標本共分散Covは
Cov=N1i=1∑n(xi−xˉ)(yi−yˉ)=N1⟨xˉ,yˉ⟩ x,yそれぞれの標本標準偏差は
σ^xσ^y=N1i=1∑n(xi−xˉ)2=N1i=1∑nxˉ2=N1⟨xˉ,xˉ⟩=N1i=1∑n(yi−yˉ)2=N1i=1∑nyˉ2=N1⟨yˉ,yˉ⟩ よって
r^=σ^xσ^yCov=N1⟨xˉ,xˉ⟩N1⟨yˉ,yˉ⟩N1⟨xˉ,yˉ⟩=∥xˉ∥⋅∥yˉ∥⟨xˉ,yˉ⟩ したがってコーシー・シュワルツの定理
−1≤∥a∥⋅∥b∥⟨a,b⟩≤1 より、相関係数の範囲は[−1,1]に収まる。
期待値と内積¶
つづいて母集団レベルの話。
確率変数X,YをL2空間の要素(確率空間上の二乗可積分な関数)とすると、その積の期待値E[XY]は内積の性質を満たす。
(1) ⟨X,Y⟩=E[XY]=E[YX]=⟨Y,X⟩
(2) ⟨X+Y,Z⟩=⟨X,Z⟩+⟨Y,Z⟩
(3) ⟨kX,Y⟩=k⟨X,Y⟩(k∈R)
(4) ⟨X,X⟩=E[X2]≧0 かつ E[X2]=0⟺X=0 a.s.
相関係数の導出¶
コーシー・シュワルツの不等式の内積⟨a,b⟩ を確率変数A,Bの積の期待値 E[AB] に置き換える。ノルムは例えば確率変数Xについて∥X∥=⟨X,X⟩=E[X2]と置き換える。こうしてコーシー・シュワルツの不等式を置き換えた
∣E[AB]∣2≤E[A2]E[B2] を用いる。
A=(X−E[X]),B=(Y−E[Y]) とおくと
∣∣E[(X−E[X])(Y−E[Y])]∣∣2≤E[(X−E[X])2]E[(Y−E[Y])2]⟺∣Cov(X,Y)∣2≤Var(X)Var(Y)⟺−1≤Var(X)Var(Y)Cov(X,Y)≤1 注意点¶
データの関係性をざっくり表すのが相関係数の良さだが、散布図でみると全然異なるデータであってもたまたま同じ相関係数になることがある。また外れ値にひっぱられる特性もある。
下の図はアンスコムの例と呼ばれる、線形回帰をしたときに同じ傾き係数になるデータセット。
相関係数だと線形回帰と違って切片部分がないため係数は若干異なるがだいたい同じになる。
import statsmodels.api as sm
import pandas as pd
anscombe = sm.datasets.get_rdataset("anscombe").data
import matplotlib.pyplot as plt
import seaborn as sns
fig, axes = plt.subplots(ncols=2, nrows=2, figsize=[8,8], dpi=70)
axes = axes.flatten()
fig.subplots_adjust(hspace=0.3)
for i in range(4):
corr = anscombe.filter(regex=f"{i+1}").corr().iloc[0,1]
sns.regplot(data=anscombe, x=f"x{i+1}", y=f"y{i+1}", ax=axes[i],
ci=None, scatter_kws={"s": 50, "alpha": 0.7})
axes[i].set(title=f"corr = {corr:.3f}")
A New Coefficient of Correlation¶
Chatterjee (2021) は 以下の3つの性質をもつ相関係数が定義可能かという問いを立て、これらを満たす新たな相関係数を提案した。
シンプル:ピアソンなど古典的な相関係数のように計算が簡単であること
一貫性:相関係数が0となるのは変数が独立な場合のみで、1となるのは一方が他方の可測関数である場合のみであること。
漸近理論:古典的な相関係数のように簡潔な漸近理論をもつ
この新しい相関係数は、変数の分布に関する仮定を必要とせず、非線形な依存関係も捉えることができる。
また、独立性の検定や変数間の関係性の評価において、従来の相関係数よりも優れた性能を示すことが報告されている
ξn(X,Y):=1−n2−13∑i=1n−1∣ri+1−ri∣