相关性分析

作者:学者科技 时间:2022/12/25

应用场景

发现数据之间的关联性

比如 啤酒 和 尿布 删减统计指标

比如 城市里的温度传感器,相关性强的可以去掉以节约成本 挑选回归建模的变量

选择与因变量相关性高的自变量自变量间如果有高度地相关性,也需要删减 验证主观判断

决策层或者管理层经常会根据自己的经验,主观地形成一些逻辑关系。最典型的表述方式就是“我认为这个数据会影响到那个数据”。到底有没有影响?可以通过计算相关系数来判断。相关系数的应用能够让决策者更冷静,更少地盲目拍脑袋。虽然相关系数不能表达因果关系,但有联系的两件事情,一定会在相关系数上有所反映

协方差

推导

设X,Y是两个随机变量,则有

D

(

X

+

Y

)

=

E

(

(

(

X

+

Y

)

E

(

X

+

Y

)

)

2

)

=

E

(

(

(

X

+

Y

)

E

(

X

)

E

(

Y

)

)

2

)

=

E

(

(

(

X

E

(

X

)

)

+

(

Y

E

(

Y

)

)

)

2

)

=

E

(

(

X

E

(

X

)

)

2

)

+

E

(

(

Y

E

(

Y

)

)

2

)

  

+

2

E

(

(

X

E

(

X

)

)

(

Y

E

(

Y

)

)

)

=

D

(

X

)

+

D

(

Y

)

+

2

E

[

(

X

E

(

X

)

)

(

Y

E

(

Y

)

)

]

\begin{align} D(X + Y) &= E(((X+Y) - E(X + Y))^2) \\ &= E(((X+Y) - E(X) - E(Y))^2) \\ &= E(((X - E(X)) + (Y - E(Y)))^2) \\ &= E((X - E(X))^2) + E((Y - E(Y))^2) \\ &\ \ + 2E((X-E(X))(Y - E(Y))) \\ &= D(X)+D(Y) + 2E [ (X - E(X))(Y- E(Y)) ] \end{align}

D(X+Y)​=E(((X+Y)−E(X+Y))2)=E(((X+Y)−E(X)−E(Y))2)=E(((X−E(X))+(Y−E(Y)))2)=E((X−E(X))2)+E((Y−E(Y))2)  +2E((X−E(X))(Y−E(Y)))=D(X)+D(Y)+2E[(X−E(X))(Y−E(Y))]​​

X

X

X,

Y

Y

Y相互独立时,

X

E

(

X

)

X - E(X)

X−E(X) 与

Y

E

(

Y

)

Y - E(Y)

Y−E(Y) 也相互独立,因此

E

(

(

X

E

(

X

)

(

Y

E

(

Y

)

)

=

E

(

X

E

(

X

)

)

E

(

Y

E

(

Y

)

)

=

(

E

(

X

)

E

(

X

)

)

(

E

(

Y

)

E

(

Y

)

)

=

0

\begin{align} E((X - E(X)(Y - E(Y)) &= E(X - E(X)) * E(Y - E(Y)) \\ &= (E(X) - E(X)) * (E(Y) - E(Y)) \\ &= 0 \end{align}

E((X−E(X)(Y−E(Y))​=E(X−E(X))∗E(Y−E(Y))=(E(X)−E(X))∗(E(Y)−E(Y))=0​​

于是

X

,

Y

相互独立

E

(

(

X

E

(

X

)

(

Y

E

(

Y

)

)

=

0

X, Y相互独立 \implies E((X - E(X)(Y - E(Y)) = 0

X,Y相互独立⟹E((X−E(X)(Y−E(Y))=0

它的逆否命题同样成立:

E

(

(

X

E

(

X

)

(

Y

E

(

Y

)

)

0

X

,

Y

不相互独立

E((X - E(X)(Y - E(Y)) \neq 0 \implies X, Y不相互独立

E((X−E(X)(Y−E(Y))=0⟹X,Y不相互独立

E((X - E(X)(Y - E(Y)) 从某种程度上刻划了两个随机变量的相关性,为了方便我们把它称为协方差。记作:

C

o

v

(

X

,

Y

)

=

E

(

(

X

E

(

X

)

(

Y

E

(

Y

)

)

\rm{Cov}(X,Y) = E((X - E(X)(Y - E(Y))

Cov(X,Y)=E((X−E(X)(Y−E(Y))

该式可继续推导成更加常用的公式:

C

o

v

(

X

,

Y

)

=

E

(

(

X

E

(

X

)

(

Y

E

(

Y

)

)

=

E

(

X

Y

X

E

(

Y

)

E

(

X

)

Y

+

E

(

X

)

E

(

Y

)

)

=

E

(

X

Y

)

E

(

X

)

E

(

Y

)

E

(

X

)

E

(

Y

)

+

E

(

X

)

E

(

Y

)

=

E

(

X

Y

)

E

(

X

)

E

(

Y

)

\begin{align} \rm{Cov}(X,Y) &= E((X - E(X)(Y - E(Y)) \\ &= E(XY - XE(Y) -E(X)Y + E(X)E(Y)) \\ &= E(XY) - E(X)E(Y) - E(X)E(Y) + E(X)E(Y) \\ &= E(XY) - E(X)E(Y) \end{align}

Cov(X,Y)​=E((X−E(X)(Y−E(Y))=E(XY−XE(Y)−E(X)Y+E(X)E(Y))=E(XY)−E(X)E(Y)−E(X)E(Y)+E(X)E(Y)=E(XY)−E(X)E(Y)​​

根据协方差取值的不同,我们规定:

当Cov(X,Y) > 0, X,Y正相关当Cov(X,Y) < 0, X,Y负相关当Cov(X,Y) = 0, X,Y不相关

例题

假设有如下X,Y的联合概率分布,计算 Cov(X,Y),并确定X,Y的相关性。

X\Y012300.070.090.060.0110.070.060.070.0120.060.070.140.0330.020.040.160.04

解:首选计算X*Y的所有可能取值

XY012300000101232024630369

容易得到X,Y各自的边缘分布如下

X0123P0.230.210.300.26

Y0123P0.220.260.430.09

然后计算期望, 最后套用协方差公式:

E(XY) = 0 * 0.07 + 0 * 0.09 + ... +

0 * 0.07 + 1 * 0.06 + ... +

0 * 0.06 + 2 * 0.07 + ... +

...

= 2.55

E(X) = 1.59

E(Y) = 1.39

Cov(X, Y) = E(XY) - E(X)E(Y) = 0.34

Cov(X, Y) > 0 , 因此X,Y正相关

相关系数

定义

协方差是有量纲的。例如X表示身高(单位是m),Y表示体重(单位是kg)。则Cov(X,Y)带有量纲

(

m

k

g

)

(m\cdot kg)

(m⋅kg)。

为了消除量纲,定义如下新的概念:

C

o

r

r

(

X

,

Y

)

=

C

o

v

(

X

,

Y

)

σ

X

σ

Y

   

,

s

.

t

.

 

σ

X

,

σ

Y

>

0

\rm{Corr}(X,Y) = \frac{\rm{Cov}(X,Y)}{\sigma_X \sigma_Y} \ \ \ , s.t. \ \sigma_X, \sigma_Y \gt 0

Corr(X,Y)=σX​σY​Cov(X,Y)​   ,s.t. σX​,σY​>0

这个概念被称为相关系数。可以看出,相关系数的符号与协方差相同,这说明相关系数的取值也可返映X与Y的相关性:

当Corr(X,Y) > 0, X,Y正相关当Corr(X,Y) < 0, X,Y负相关当Corr(X,Y) = 0, X,Y不相关

相关系数是有取值范围的,由 施瓦茨(Schwarz)不等式导出。不等式推导如下:

首先考虑如下二次函数:

g

(

t

)

=

E

2

(

t

(

X

E

(

X

)

)

+

Y

E

(

Y

)

)

=

t

2

σ

X

2

+

σ

Y

2

+

2

t

C

o

v

(

X

,

Y

)

>

0

\begin{align} g(t) &= E^2(t(X-E(X)) + Y - E(Y)) \\ &= t^2 \sigma^2_X + \sigma^2_Y + 2t\cdot \rm{Cov}(X, Y) \\ &> 0 \end{align}

g(t)​=E2(t(X−E(X))+Y−E(Y))=t2σX2​+σY2​+2t⋅Cov(X,Y)>0​​

即 方程

g

(

t

)

=

0

g(t) = 0

g(t)=0 无解, 所以由 $\Delta = 4 \rm{Cov}^2(X, Y) - 4 \sigma^2_X \sigma^2_Y \le 0 $ 得到如下Schwarz不等式:

C

o

v

2

(

X

,

Y

)

σ

X

2

σ

Y

2

\rm {Cov}^2(X,Y) \le \sigma_X^2 \sigma_Y^2

Cov2(X,Y)≤σX2​σY2​

所以得相关系数的取值范围为 -1~1。

C

o

r

r

2

(

X

,

Y

)

=

C

o

v

2

(

X

,

Y

)

σ

X

2

σ

Y

2

1

\rm{Corr^2(X, Y)} = \frac{\rm {Cov}^2(X,Y) }{\sigma_X^2 \sigma_Y^2} \le 1

Corr2(X,Y)=σX2​σY2​Cov2(X,Y)​≤1

其它结论:

当 Corr(X, Y) = 1 或 -1 时,X与Y呈线性相关。证明过程略。当 Corr(X, Y) = 0 时,X与Y不相关。 不相关是指X与Y没有线性关系,但可能有其它函数关系,譬如平方关系,对数关系等。当 Corr(X, Y) = 其它 时,X与Y有一定程度的线性关系

例题

已知随机向量

(

X

,

Y

)

(X, Y)

(X,Y)的联合密度函数为

p

(

x

,

y

)

p(x,y)

p(x,y),求相关系数

C

o

r

r

(

X

,

Y

)

\rm{Corr}(X,Y)

Corr(X,Y)。

解:

p

X

(

x

)

=

p

(

x

,

y

)

d

y

p

Y

(

y

)

=

p

(

x

,

y

)

d

x

E

(

X

)

=

p

X

(

x

)

x

 

d

x

E

(

Y

)

=

p

Y

(

y

)

y

 

d

y

E

(

X

2

)

=

p

X

(

x

)

x

2

 

d

x

E

(

Y

2

)

=

p

Y

(

y

)

y

2

 

d

y

E

(

X

Y

)

=

p

(

x

,

y

)

x

y

 

d

x

d

y

D

(

X

)

=

E

(

X

2

)

E

2

(

X

)

D

(

Y

)

=

E

(

Y

2

)

E

2

(

Y

)

C

o

r

r

(

X

,

Y

)

=

C

o

v

(

X

,

Y

)

(

D

(

X

)

)

(

D

(

Y

)

)

=

E

(

X

Y

)

E

(

X

)

E

(

Y

)

(

D

(

X

)

)

(

D

(

Y

)

)

p_X(x) = \int_{-\infty}^{\infty} p(x, y) dy \\ p_Y(y) = \int_{-\infty}^{\infty} p(x, y) dx \\ E(X) = \int_{-\infty}^{\infty} p_X(x) \cdot x \ dx \\ E(Y) = \int_{-\infty}^{\infty} p_Y(y) \cdot y \ dy \\ E(X^2) = \int_{-\infty}^{\infty} p_X(x) \cdot x^2 \ dx \\ E(Y^2) = \int_{-\infty}^{\infty} p_Y(y) \cdot y^2 \ dy \\ E(XY) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} p(x, y) \cdot x \cdot y \ dxdy \\ D(X) = E(X^2) - E^2(X) \\ D(Y) = E(Y^2) - E^2(Y) \\ \rm{Corr}(X, Y) = \frac{\rm{Cov}(X, Y)}{ \sqrt(D(X)) \sqrt(D(Y)) } = \frac{E(XY) - E(X)E(Y)}{ \sqrt(D(X)) \sqrt(D(Y)) }

pX​(x)=∫−∞∞​p(x,y)dypY​(y)=∫−∞∞​p(x,y)dxE(X)=∫−∞∞​pX​(x)⋅x dxE(Y)=∫−∞∞​pY​(y)⋅y dyE(X2)=∫−∞∞​pX​(x)⋅x2 dxE(Y2)=∫−∞∞​pY​(y)⋅y2 dyE(XY)=∫−∞∞​∫−∞∞​p(x,y)⋅x⋅y dxdyD(X)=E(X2)−E2(X)D(Y)=E(Y2)−E2(Y)Corr(X,Y)=(

​D(X))(

​D(Y))Cov(X,Y)​=(

​D(X))(

​D(Y))E(XY)−E(X)E(Y)​

Spearman 秩相关系数(等级相关系数)

假设有

X

X

X,

Y

Y

Y两个随机变量并采集了N对样本

(

X

i

,

Y

i

)

,

i

1..

N

(X_i, Y_i), i \in 1..N

(Xi​,Yi​),i∈1..N。

x

i

x_i

xi​表示

X

i

X_i

Xi​ 在X样本中的次序, 用

y

i

y_i

yi​表示

Y

i

Y_i

Yi​ 在Y样本中的次序。则Spearman 相关系数定义为:

ρ

=

i

=

1

N

(

x

i

x

ˉ

)

(

y

i

y

ˉ

)

i

=

1

N

(

x

i

x

ˉ

)

2

i

=

1

N

(

y

i

y

ˉ

)

2

=

C

o

r

r

(

x

,

y

)

\rho=\frac{\sum_{i=1}^{N}(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^{N}(x_i-\bar{x})^2 \sum_{i=1}^{N}(y_i-\bar{y})^2}}= \rm{Corr}(x,y)

ρ=∑i=1N​(xi​−xˉ)2∑i=1N​(yi​−yˉ​)2

​∑i=1N​(xi​−xˉ)(yi​−yˉ​)​=Corr(x,y)

举个例子:

Kendall 秩相关系数(等级相关系数)

假设有

X

X

X,

Y

Y

Y两个随机变量并采集了n对样本

(

X

i

,

Y

i

)

,

i

1..

n

(X_i, Y_i), i \in 1..n

(Xi​,Yi​),i∈1..n。

Kendall有三种定义分别为

τ

a

,

τ

b

,

τ

c

\tau_a,\tau_b,\tau_c

τa​,τb​,τc​。 前者只适用于X,Y都没有重复值的情况。当X,Y都没有重复值时,前者将与后两者值相同。

τ

a

=

(

P

Q

)

n

(

n

1

)

/

2

τ

b

=

P

Q

(

P

+

Q

+

T

)

(

P

+

Q

+

U

)

τ

c

=

(

P

Q

)

n

2

(

m

1

)

/

2

m

\begin{align} \tau_a&= \frac{ (P- Q)}{n(n-1)/2} \\ \tau_b&=\frac{P - Q}{\sqrt{(P+Q+T)\cdot (P+Q+U)}} \\ \tau_c&=\frac{(P-Q)}{n^2(m - 1)/2m} \end{align}

τa​τb​τc​​=n(n−1)/2(P−Q)​=(P+Q+T)⋅(P+Q+U)

​P−Q​=n2(m−1)/2m(P−Q)​​​

τ

=

1

\tau = 1

τ=1 时,X,Y具有相关性当

τ

=

1

\tau = -1

τ=−1 时,X,Y具有相反的相关性当

τ

=

0

\tau = 0

τ=0 时,X,Y相互独立

其中,P表示一致的数量,Q不一致的数量,T表示在仅X中的ties个数,U表示仅在Y中的ties个数。n是样本数量。m是X或Y中独特值的个数中的较小值。如下图:

一致:

x

i

<

x

j

x_i < x_j

xi​

y

i

<

y

j

y_i < y_j

yi​

x

i

>

x

j

x_i > x_j

xi​>xj​且

y

i

>

y

j

y_i > y_j

yi​>yj​不一致:

x

i

<

x

j

x_i < x_j

xi​

y

i

>

y

j

y_i > y_j

yi​>yj​ 或

x

i

>

x

j

x_i > x_j

xi​>xj​且

y

i

<

y

j

y_i < y_j

yi​

x

i

=

x

j

x_i = x_j

xi​=xj​且

y

i

y

j

y_i \neq y_j

yi​=yj​仅在Y中的ties:

x

i

x

j

x_i \neq x_j

xi​=xj​且

y

i

=

y

j

y_i = y_j

yi​=yj​

举个例子:

X = [85,19,19,15]

Y = [94,63,84,84]

# 先按照Y的顺序对X和Y调序,因为是同时调的,所有没啥影响

perm = argsort(Y) # [1,2,3,0]

X, Y = X[perm], Y[perm] # [19, 19, 15, 85], [63, 84, 84, 94]

y = dense(Y) # [1, 2, 2, 3]

# 按照X的顺序排序。同理,除了顺序没啥影响

perm = argsort(X) # [2, 0, 1, 3]

X, y = X[perm], y[perm] # [15, 19, 19, 85], [2, 1, 2, 3]

x = dense(X) # [1, 2, 2, 3]

# 上述过程本质上是为X,Y中的元素确定一个序号。

# 如果是人工计算序号,可省略排序过程。

# 有了x, y,如上图 可以计算P、Q、T、U等了

P=3

Q=1

T=1

U=1

n=4

m=3 # X中独特值个数是3,Y中独特值个数是3,取两者最小值,因此m=3

tau_b = (P - Q) / sqrt((P+Q+T)*(P+Q+U)) = 0.4

tau_c = (P - Q) / n*n*(m-1) / (2*m) = 0.375

Pearson系数:叫皮尔逊相关系数,也叫线性相关系数,用于进行线性相关分析,是最常用的相关系数,当数据满足正态分布时会使用该系数。 比如:身高和体重的相关性

Spearman系数:当数据不满足正态分布时,使用该系数。 比如:身高和“病情程度(初期、中期、晚期)”的相关性

Kendall系数:同Spearman系数

工具

pandasnumpyscipy

import numpy as np

import pandas as pd

import scipy.stats as stats

if __name__ == "__main__":

x = np.array([1, 2, 3, 4, 5, 6, 7])

y = np.array([1, 4, 8, 24, 16, 30, 50])

df = pd.DataFrame({"x": x, "y": y})

print(np.corrcoef([x, y]))

print(df.corr(method='pearson'))

print(df.corr(method='spearman'))

print(df.corr(method='kendall'))

#df.corrWith(Series|DataFrame)

print(stats.pearsonr(x, y)[0])

print(stats.spearmanr(x, y)[0])

print(stats.kendalltau(x, y)[0])

参考

[1] 概率论与数理统计教程(第二版)

[2] https://zhuanlan.zhihu.com/p/136771737

[3] https://zhuanlan.zhihu.com/p/367920869

[4] https://baike.baidu.com/item/%E7%A7%A9%E7%9B%B8%E5%85%B3%E7%B3%BB%E6%95%B0/3316537?fromModule=lemma_inlink

[5] 统计知识扫盲:相关系数

[6] Kendall tau distance理解与分析

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: