[数学基础知识] 协方差和相关系数以及使用pandas进行自动计算
在研究两组数据之间的关联性时会用到的一些概念。
1. 协方差(Covariance) 和协方差矩阵
协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为:

举例:
| Apple | Orange |
|---|---|
| 1 | 2 |
| 0 | 3 |
| 2 | 0 |
| 1 | 1 |
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
| Apple | Orange | Apple-Appleˉ\bar{Apple}Appleˉ | Orange-Orangeˉ\bar{Orange}Orangeˉ |
|---|---|---|---|
| 1 | 2 | 0 | 0.5 |
| 0 | 3 | -1 | 1.5 |
| 2 | 0 | 1 | -1.5 |
| 1 | 1 | 0 | 0.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)=[0∗0.5+(−1)∗1.5+1∗(−1.5)+0∗0.5]/(4−1)=3/3=1 | |||
| 协方差只能研究两组数据之间的关系,当要研究多组数据之间的关系时就要用到协方差矩阵。 | |||
举例: | |||
| Apple | Orange | Peach | |
| -------- | ----- | ----- | |
| 1 | 2 | 4 | |
| 0 | 3 | 2 | |
| 2 | 0 | 2 | |
| 1 | 1 | 2 | |
| 使用协方差公式求得: | |||
| 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 | |||
| - | Apple | Orange | Peach |
| ---- | ---- | ----- | ----- |
| Apple | 2/3 | -1 | 0 |
| Orange | -1 | 5/3 | 1/6 |
| Peach | 0 | 1/6 | 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.cov()
得到的输出如下

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

Var[X]Var[X]Var[X]和Var[Y]Var[Y]Var[Y]分布是X,YX,YX,Y的方差。
由上图可以看到相关系数其实是在协方差的基础上进行计算的。
还是以之前的例子为例,我们来计算他们的相关系数。
我们先来求每个变量的方差
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)=4−1(1−1)2+(0−1)2+(2−1)2+(1−1)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)=4−1(2−1.5)2+(3−1.5)2+(0−1.5)2+(1−1.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)=(4−2.5)2+(2−2.5)2+(2−2.5)2+(2−2.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/3∗2/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/3∗5/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)=1∗11=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/3∗5/3−1=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/3∗11/6=0.2582
由此我们可以得到相关系数表如下:
| - | Apple | Orange | Peach |
|---|---|---|---|
| Apple | 1 | -0.9487 | 0 |
| Orange | -0.9487 | 1 | 0.2582 |
| Peach | 0 | 0.2582 | 1 |
你会发现所有元素和自己的相关系数都是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()

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

所有评论(0)