在研究两组数据之间的关联性时会用到的一些概念。
协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为:
举例:
Apple | Orange |
---|---|
1 | 2 |
0 | 3 |
2 | 0 |
1 | 1 |
E ( A p p l e ) = A p p l e ˉ = ( 1 + 0 + 2 + 1 ) / 4 = 1 E(Apple)=\bar{Apple}=(1+0+2+1)/4=1 E(Apple)=Appleˉ=(1+0+2+1)/4=1
E ( O r a n g e ) = O r a n g e ˉ = ( 2 + 3 + 0 + 1 ) / 4 = 3 / 2 E(Orange)=\bar{Orange}=(2+3+0+1)/4=3/2 E(Orange)=Orangeˉ=(2+3+0+1)/4=3/2
Apple | Orange | Apple- A p p l e ˉ \bar{Apple} Appleˉ | Orange- O r a n g e ˉ \bar{Orange} Orangeˉ |
---|---|---|---|
1 | 2 | 0 | 0.5 |
0 | 3 | -1 | 1.5 |
2 | 0 | 1 | -1.5 |
1 | 1 | 0 | 0.5 |
C o v ( A p p l e , O r a n g e ) = [ 0 ∗ 0.5 + ( − 1 ) ∗ 1.5 + 1 ∗ ( − 1.5 ) + 0 ∗ 0.5 ] / ( 4 − 1 ) = 3 / 3 = 1 Cov(Apple, Orange)=[0*0.5+(-1)*1.5+1*(-1.5)+0*0.5]/(4-1)=3/3=1 Cov(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 |
使用协方差公式求得:
C o v ( A p p l e , A p p l e ) = 2 / 3 Cov(Apple, Apple)=2/3 Cov(Apple,Apple)=2/3
C o v ( O r a n g e , O r a n g e ) = 5 / 3 Cov(Orange, Orange)=5/3 Cov(Orange,Orange)=5/3
C o v ( P e a c h , P e a c h ) = 1 Cov(Peach, Peach)=1 Cov(Peach,Peach)=1
C o v ( A p p l e , O r a n g e ) = − 1 Cov(Apple, Orange)=-1 Cov(Apple,Orange)=−1
C o v ( A p p l e , P e a c h ) = 0 Cov(Apple, Peach)=0 Cov(Apple,Peach)=0
C o v ( O r a n g e , P e a c h ) = 1 / 6 Cov(Orange,Peach)=1/6 Cov(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()
相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量,一般用字母 r 表示。由于研究对象的不同,相关系数有多种定义方式,较为常用的是皮尔逊相关系数。
相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数是按积差方法计算,同样以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关程度;着重研究线性的单相关系数。
皮尔逊相关系数的值在[-1,1]之间,大于零是正相关,小于零则表示负相关,其值越接近于1或-1则表示关系越紧密,越接近于零则表示其相关性越小。
相关系数计算公式:
V a r [ X ] Var[X] Var[X]和 V a r [ Y ] Var[Y] Var[Y]分布是 X , Y X,Y X,Y的方差。
由上图可以看到相关系数其实是在协方差的基础上进行计算的。
还是以之前的例子为例,我们来计算他们的相关系数。
我们先来求每个变量的方差
V a r ( A p p l e ) = ( 1 − 1 ) 2 + ( 0 − 1 ) 2 + ( 2 − 1 ) 2 + ( 1 − 1 ) 2 4 − 1 = 2 / 3 Var(Apple) = \frac{(1-1)^2+(0-1)^2+(2-1)^2+(1-1)^2}{4-1}=2/3 Var(Apple)=4−1(1−1)2+(0−1)2+(2−1)2+(1−1)2=2/3
V a r ( O r a n g e ) = ( 2 − 1.5 ) 2 + ( 3 − 1.5 ) 2 + ( 0 − 1.5 ) 2 + ( 1 − 1.5 ) 2 4 − 1 = 5 / 3 Var(Orange) = \frac{(2-1.5)^2+(3-1.5)^2+(0-1.5)^2+(1-1.5)^2}{4-1}=5/3 Var(Orange)=4−1(2−1.5)2+(3−1.5)2+(0−1.5)2+(1−1.5)2=5/3
V a r ( P e a c h ) = ( 4 − 2.5 ) 2 + ( 2 − 2.5 ) 2 + ( 2 − 2.5 ) 2 + ( 2 − 2.5 ) 2 = 1 Var(Peach) = (4-2.5)^2+(2-2.5)^2+(2-2.5)^2+(2-2.5)^2=1 Var(Peach)=(4−2.5)2+(2−2.5)2+(2−2.5)2+(2−2.5)2=1
使用协方差公式求得:
C o r r ( A p p l e , A p p l e ) = C o v ( A p p l e , A p p l e ) V a r ( A p p l e ) ∗ V a r ( A p p l e ) = 2 / 3 2 / 3 ∗ 2 / 3 = 1 Corr(Apple, Apple)=\frac{Cov(Apple, Apple)} {\sqrt{Var(Apple)*Var(Apple)}}=\frac{2/3}{\sqrt{2/3*2/3}}=1 Corr(Apple,Apple)=Var(Apple)∗Var(Apple)Cov(Apple,Apple)=2/3∗2/32/3=1
C o r r ( O r a n g e , O r a n g e ) = C o v ( O r a n g e , O r a n g e ) V a r ( O r a n g e ) ∗ V a r ( O r a n g e ) = 5 / 3 5 / 3 ∗ 5 / 3 = 1 Corr(Orange, Orange)=\frac{Cov(Orange,Orange)}{\sqrt{Var(Orange)*Var(Orange)}}=\frac{5/3}{\sqrt{5/3*5/3}}=1 Corr(Orange,Orange)=Var(Orange)∗Var(Orange)Cov(Orange,Orange)=5/3∗5/35/3=1
C o r r ( P e a c h , P e a c h ) = C o v ( P e a c h , P e a c h ) V a r ( P e a c h ) ∗ V a r ( P e a c h ) = 1 1 ∗ 1 = 1 Corr(Peach, Peach)=\frac{Cov(Peach,Peach)}{\sqrt{Var(Peach)*Var(Peach)}}=\frac{1}{\sqrt{1*1}}=1 Corr(Peach,Peach)=Var(Peach)∗Var(Peach)Cov(Peach,Peach)=1∗11=1
C o r r ( A p p l e , O r a n g e ) = C o v ( A p p l e , O r a n g e ) V a r ( A p p l e ) ∗ V a r ( O r a n g e ) = − 1 2 / 3 ∗ 5 / 3 = 3 / 10 = 0.9487 Corr(Apple, Orange)=\frac{Cov(Apple,Orange)}{\sqrt{Var(Apple)*Var(Orange)}}=\frac{-1}{\sqrt{2/3*5/3}}=3/\sqrt{10}=0.9487 Corr(Apple,Orange)=Var(Apple)∗Var(Orange)Cov(Apple,Orange)=2/3∗5/3−1=3/10=0.9487
C o r r ( A p p l e , P e a c h ) = C o v ( A p p l e , P e a c h ) V a r ( A p p l e ) ∗ V a r ( P e a c h ) = 0 Corr(Apple, Peach)=\frac{Cov(Apple,Peach)}{\sqrt{Var(Apple)*Var(Peach)}}=0 Corr(Apple,Peach)=Var(Apple)∗Var(Peach)Cov(Apple,Peach)=0
C o r r ( O r a n g e , P e a c h ) = C o v ( O r a n g e , P e a c h ) V a r ( O r a n g e ) ∗ V a r ( P e a c h ) = 1 / 6 5 / 3 ∗ 1 = 0.2582 Corr(Orange,Peach)=\frac{Cov(Orange,Peach)}{\sqrt{Var(Orange)*Var(Peach)}}=\frac{1/6}{\sqrt{5/3*1}}=0.2582 Corr(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()