什么是协方差与相关系数?协方差矩阵如何计算?np.cov函数

1 协方差

1.1 定义

协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。

协方差的计算公式如下所示:



方差的计算公式如下所示:


可以看到协方差是度量两个变量的总体误差,而方差只考虑单变量的离散程度。

如果连个变量相互独立,则协方差为零。

2 协方差矩阵

假设X是一个n维随机变量

则它的协方差矩阵计算公式为:



其中

我们用一个例子来加以说明,加入我们有三面课程:语文、数学、应用,有5名考生他们的成绩如下:
语文 数学 英语
90 60 90
90 90 30
60 60 60
60 60 90
30 30 30

我们将该矩阵命名为矩阵A,这个矩阵共有三种属性,每种属性有5个变量,我们需要计算学科与学科之间的协方差,综合在一起就构成了协方差矩阵。

我们将语文、数学、英语分别编号为1、2、3,则它们之间的协方差记为E11、E12、E13、E22、E23、E33,最终该矩阵的协方差矩阵为:

可以根据协方差计算公式进行计算:

首先,我们需要得到这三科的平均成绩:

语文 数学 英语
66 60 60

然后用矩阵A减去平均成绩(三科分别减去各科的均值),得到新的矩阵:

E12的计算公式为:

由于样本减均值刚刚已经计算完成,这里直接进行计算:

同理,E13的计算公式为:

根据Eij=Eji的性质,得到新的矩阵:

然后除以样本的个数5,得到最后的协方差矩阵:

知道了协方差矩阵如何计算之后我们来使用numpy内置的函数cov()来计算协方差矩阵。假设有两个变量x0x1,有三组观测(0,2)(1,1)和(2,0)。

import numpy as np

x = np.array([[0, 2], [1, 1], [2, 0]])

值得注意的是,np.cov(x)函数的默认输入矩阵x每一行代表一个特征,每一列代表一个观测,所以在进行协方差矩阵计算的时候需要对输入矩阵进行转置,或者将默认参数设置为False,如np.cov(x,rowvar=False)

import numpy as np
x = np.array([[0, 2], [1, 1], [2, 0]])
np.cov(x.T)

输出:

array([[ 1., -1.],
       [-1.,  1.]])

亦或者:

import numpy as np
x = np.array([[0, 2], [1, 1], [2, 0]])
np.cov(x, rowvar=False)

输出:

array([[ 1., -1.],
       [-1.,  1.]])

3 相关系数

相关系数是研究变量之间线性相关程度的量。

相关系数的计算公式如下所示:


可以表示X和Y线性关系的紧密程度.

  • 若 则表示X和Y不线性相关,即的充分必要条件是Cov(X,Y)=0,亦即不相关和协方差为零是等价的。
  • 当较大时,通常说X 和Y相关程度较好;当较小时,通常说X和Y相关程度较差;当X和Y不相关,通常认为X和Y之间不存在线性关系,但并不能排除X和Y之间可能存在其他关系

参考:
协方差 - 百度百科
相关系数 - 百度百科
协方差矩阵概念

你可能感兴趣的:(什么是协方差与相关系数?协方差矩阵如何计算?np.cov函数)