在研究两组数据之间的关联性时会用到的一些概念。

1. 协方差(Covariance) 和协方差矩阵

协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为:
在这里插入图片描述
举例:

AppleOrange
12
03
20
11

E(Apple)=Appleˉ=(1+0+2+1)/4=1E(Apple)=\bar{Apple}=(1+0+2+1)/4=1E(Apple)=Appleˉ=(1+0+2+1)/4=1
E(Orange)=Orangeˉ=(2+3+0+1)/4=3/2E(Orange)=\bar{Orange}=(2+3+0+1)/4=3/2E(Orange)=Orangeˉ=(2+3+0+1)/4=3/2

AppleOrangeApple-Appleˉ\bar{Apple}AppleˉOrange-Orangeˉ\bar{Orange}Orangeˉ
1200.5
03-11.5
201-1.5
1100.5
Cov(Apple,Orange)=[0∗0.5+(−1)∗1.5+1∗(−1.5)+0∗0.5]/(4−1)=3/3=1Cov(Apple, Orange)=[0*0.5+(-1)*1.5+1*(-1.5)+0*0.5]/(4-1)=3/3=1Cov(Apple,Orange)=[00.5+(1)1.5+1(1.5)+00.5]/(41)=3/3=1
协方差只能研究两组数据之间的关系,当要研究多组数据之间的关系时就要用到协方差矩阵。
在这里插入图片描述举例:
AppleOrangePeach
------------------
124
032
202
112
使用协方差公式求得:
Cov(Apple,Apple)=2/3Cov(Apple, Apple)=2/3Cov(Apple,Apple)=2/3
Cov(Orange,Orange)=5/3Cov(Orange, Orange)=5/3Cov(Orange,Orange)=5/3
Cov(Peach,Peach)=1Cov(Peach, Peach)=1Cov(Peach,Peach)=1
Cov(Apple,Orange)=−1Cov(Apple, Orange)=-1Cov(Apple,Orange)=1
Cov(Apple,Peach)=0Cov(Apple, Peach)=0Cov(Apple,Peach)=0
Cov(Orange,Peach)=1/6Cov(Orange,Peach)=1/6Cov(Orange,Peach)=1/6
-AppleOrangePeach
------------------
Apple2/3-10
Orange-15/31/6
Peach01/61

使用pandas可以非常方便的计算协方差矩阵,以上列子使用pandas来计算的代码如下:

a = pd.DataFrame([(1.0, 2.0, 4.0), (0, 3.0, 2.0), (2.0, 0, 2.0), (1.0, 1.0, 2.0)],
                  columns=['Apple', 'Orange', 'Peach'])
a.cov()

得到的输出如下
在这里插入图片描述

2. 相关系数

相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量,一般用字母 r 表示。由于研究对象的不同,相关系数有多种定义方式,较为常用的是皮尔逊相关系数。
相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数是按积差方法计算,同样以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关程度;着重研究线性的单相关系数。
皮尔逊相关系数的值在[-1,1]之间,大于零是正相关,小于零则表示负相关,其值越接近于1或-1则表示关系越紧密,越接近于零则表示其相关性越小。

相关系数计算公式:
在这里插入图片描述
Var[X]Var[X]Var[X]Var[Y]Var[Y]Var[Y]分布是X,YX,YXY的方差。
由上图可以看到相关系数其实是在协方差的基础上进行计算的。
还是以之前的例子为例,我们来计算他们的相关系数。
我们先来求每个变量的方差
Var(Apple)=(1−1)2+(0−1)2+(2−1)2+(1−1)24−1=2/3Var(Apple) = \frac{(1-1)^2+(0-1)^2+(2-1)^2+(1-1)^2}{4-1}=2/3Var(Apple)=41(11)2+(01)2+(21)2+(11)2=2/3
Var(Orange)=(2−1.5)2+(3−1.5)2+(0−1.5)2+(1−1.5)24−1=5/3Var(Orange) = \frac{(2-1.5)^2+(3-1.5)^2+(0-1.5)^2+(1-1.5)^2}{4-1}=5/3Var(Orange)=41(21.5)2+(31.5)2+(01.5)2+(11.5)2=5/3
Var(Peach)=(4−2.5)2+(2−2.5)2+(2−2.5)2+(2−2.5)2=1Var(Peach) = (4-2.5)^2+(2-2.5)^2+(2-2.5)^2+(2-2.5)^2=1Var(Peach)=(42.5)2+(22.5)2+(22.5)2+(22.5)2=1
使用协方差公式求得:
Corr(Apple,Apple)=Cov(Apple,Apple)Var(Apple)∗Var(Apple)=2/32/3∗2/3=1Corr(Apple, Apple)=\frac{Cov(Apple, Apple)} {\sqrt{Var(Apple)*Var(Apple)}}=\frac{2/3}{\sqrt{2/3*2/3}}=1Corr(Apple,Apple)=Var(Apple)Var(Apple)Cov(Apple,Apple)=2/32/32/3=1
Corr(Orange,Orange)=Cov(Orange,Orange)Var(Orange)∗Var(Orange)=5/35/3∗5/3=1Corr(Orange, Orange)=\frac{Cov(Orange,Orange)}{\sqrt{Var(Orange)*Var(Orange)}}=\frac{5/3}{\sqrt{5/3*5/3}}=1Corr(Orange,Orange)=Var(Orange)Var(Orange)Cov(Orange,Orange)=5/35/35/3=1
Corr(Peach,Peach)=Cov(Peach,Peach)Var(Peach)∗Var(Peach)=11∗1=1Corr(Peach, Peach)=\frac{Cov(Peach,Peach)}{\sqrt{Var(Peach)*Var(Peach)}}=\frac{1}{\sqrt{1*1}}=1Corr(Peach,Peach)=Var(Peach)Var(Peach)Cov(Peach,Peach)=111=1
Corr(Apple,Orange)=Cov(Apple,Orange)Var(Apple)∗Var(Orange)=−12/3∗5/3=3/10=0.9487Corr(Apple, Orange)=\frac{Cov(Apple,Orange)}{\sqrt{Var(Apple)*Var(Orange)}}=\frac{-1}{\sqrt{2/3*5/3}}=3/\sqrt{10}=0.9487Corr(Apple,Orange)=Var(Apple)Var(Orange)Cov(Apple,Orange)=2/35/31=3/10=0.9487
Corr(Apple,Peach)=Cov(Apple,Peach)Var(Apple)∗Var(Peach)=0Corr(Apple, Peach)=\frac{Cov(Apple,Peach)}{\sqrt{Var(Apple)*Var(Peach)}}=0Corr(Apple,Peach)=Var(Apple)Var(Peach)Cov(Apple,Peach)=0
Corr(Orange,Peach)=Cov(Orange,Peach)Var(Orange)∗Var(Peach)=1/65/3∗1=0.2582Corr(Orange,Peach)=\frac{Cov(Orange,Peach)}{\sqrt{Var(Orange)*Var(Peach)}}=\frac{1/6}{\sqrt{5/3*1}}=0.2582Corr(Orange,Peach)=Var(Orange)Var(Peach)Cov(Orange,Peach)=5/311/6=0.2582

由此我们可以得到相关系数表如下:

-AppleOrangePeach
Apple1-0.94870
Orange-0.948710.2582
Peach00.25821

你会发现所有元素和自己的相关系数都是1,即关系最为紧密。

使用pandas可以非常方便的计算协方差矩阵,以上列子使用pandas来计算的代码如下:

a = pd.DataFrame([(1.0, 2.0, 4.0), (0, 3.0, 2.0), (2.0, 0, 2.0), (1.0, 1.0, 2.0)],
                  columns=['Apple', 'Orange', 'Peach'])
a.corr()

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐