协方差与协方差矩阵
协方差与协方差矩阵
标签: 协方差 协方差矩阵 统计
引言
最近在看主成分分析(PCA),其中有一步是计算样本各维度的协方差矩阵。以前在看算法介绍时,也经常遇到,现找了些资料复习,总结如下。
协方差
通常,在提到协方差的时候,需要对其进一步区分。(1)随机变量的协方差。跟数学期望、方差一样,是分布的一个总体参数。(2)样本的协方差。是样本集的一个统计量,可作为联合分布总体参数的一个估计。在实际中计算的通常是样本的协方差。
随机变量的协方差
在概率论和统计中,协方差是对两个随机变量联合分布线性相关程度的一种度量。两个随机变量越线性相关,协方差越大,完全线性无关,协方差为零。定义如下。
\]
当\(X\),\(Y\)是同一个随机变量时,\(X\)与其自身的协方差就是\(X\)的方差,可以说方差是协方差的一个特例。
\]
或
\]
由于随机变量的取值范围不同,两个协方差不具备可比性。如\(X\),\(Y\),\(Z\)分别是三个随机变量,想要比较\(X\)与\(Y\)的线性相关程度强,还是\(X\)与\(Z\)的线性相关程度强,通过\(\operatorname{cov}(X,Y)\)与\(\operatorname{cov}(X,Z)\)无法直接比较。定义相关系数\(\eta\)为
\]
通过\(X\)的方差\(\operatorname{var}(X)\)与\(Y\)的方差\(\operatorname{var}(Y)\)对协方差\(\operatorname{cov}(X,Y)\)归一化,得到相关系数\(\eta\),\(\eta\)的取值范围是\([-1,1]\)。\(1\)表示完全线性相关,\(-1\)表示完全线性负相关,\(0\)表示线性无关。线性无关并不代表完全无关,更不代表相互独立。
样本的协方差
在实际中,通常我们手头会有一些样本,样本有多个属性,每个样本可以看成一个多维随机变量的样本点,我们需要分析两个维度之间的线性关系。协方差及相关系数是度量随机变量间线性关系的参数,由于不知道具体的分布,只能通过样本来进行估计。
设样本对应的多维随机变量为\(\textbf X=[X_1, X_2, X_3, …, X_n]^T\),样本集合为\(\{\textbf x_{\cdot j}=[x_{1j},x_{2j},…,x_{nj}]^T|1\leqslant j\leqslant m\}\),\(m\)为样本数量。与样本方差的计算相似,\(a\)和\(b\)两个维度样本的协方差公式为,其中\(1\leqslant a\leqslant n\),\(1\leqslant b\leqslant n\),\(n\)为样本维度
\]
这里分母为\(m-1\)是因为随机变量的数学期望未知,以样本均值代替,自由度减一。
协方差矩阵
多维随机变量的协方差矩阵
对多维随机变量\(\textbf X=[X_1, X_2, X_3, …, X_n]^T\),我们往往需要计算各维度两两之间的协方差,这样各协方差组成了一个\(n\times n\)的矩阵,称为协方差矩阵。协方差矩阵是个对称矩阵,对角线上的元素是各维度上随机变量的方差。我们定义协方差矩阵为\(\Sigma\),这个符号与求和\(\sum\)相同,需要根据上下文区分。矩阵内的元素\(\Sigma_{ij}\)为
\]
这样这个矩阵为
\]
\operatorname{cov}(X_1, X_1) &
\operatorname{cov}(X_1, X_2) &
\cdots &
\operatorname{cov}(X_1, X_n) \\
\operatorname{cov}(X_2, X_1) &
\operatorname{cov}(X_2, X_2) &
\cdots &
\operatorname{cov}(X_2, X_n) \\
\vdots &
\vdots &
\ddots &
\vdots \\
\operatorname{cov}(X_n, X_1) &
\operatorname{cov}(X_n, X_2) &
\cdots &
\operatorname{cov}(X_n, X_n)
\end{bmatrix} \]
\operatorname{E}\big[(X_1-\operatorname{E}[X_1])(X_1-\operatorname{E}[X_1])\big] & \operatorname{E}\big[(X_1-\operatorname{E}[X_1])(X_2-\operatorname{E}[X_2])\big] &
\cdots &
\operatorname{E}\big[(X_1-\operatorname{E}[X_1])(X_n-\operatorname{E}[X_n])\big] \\
\operatorname{E}\big[(X_2-\operatorname{E}[X_2])(X_1-\operatorname{E}[X_1])\big] &
\operatorname{E}\big[(X_2-\operatorname{E}[X_2])(X_2-\operatorname{E}[X_2])\big] &
\cdots &
\operatorname{E}\big[(X_2-\operatorname{E}[X_2])(X_n-\operatorname{E}[X_n])\big] \\
\vdots &
\vdots &
\ddots &
\vdots \\
\operatorname{E}\big[(X_n-\operatorname{E}[X_n])(X_1-\operatorname{E}[X_1])\big] &
\operatorname{E}\big[(X_n-\operatorname{E}[X_n])(X_2-\operatorname{E}[X_2])\big] &
\cdots &
\operatorname{E}\big[(X_n-\operatorname{E}[X_n])(X_n-\operatorname{E}[X_n])\big] &
\end{bmatrix}\]
样本的协方差矩阵
与上面的协方差矩阵相同,只是矩阵内各元素以样本的协方差替换。样本集合为\(\{\textbf x_{\cdot j}=[x_{1j},x_{2j},…,x_{nj}]^T|1\leqslant j\leqslant m\}\),\(m\)为样本数量,所有样本可以表示成一个\(n \times m\)的矩阵。我们以\(\hat \Sigma\)表示样本的协方差矩阵,与\(\Sigma\)区分。
q_{11} & q_{12} & \cdots & q_{1n} \\
q_{21} & q_{21} & \cdots & q_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
q_{n1} & q_{n2} & \cdots & q_{nn}
\end{bmatrix} \]
\begin{bmatrix}
{\sum_{j=1}^m{(x_{1j}-\bar x_1)(x_{1j}-\bar x_1)}} &
{\sum_{j=1}^m{(x_{1j}-\bar x_1)(x_{2j}-\bar x_2)}} &
\cdots &
{\sum_{j=1}^m{(x_{1j}-\bar x_1)(x_{nj}-\bar x_n)}} \\
{\sum_{j=1}^m{(x_{2j}-\bar x_2)(x_{1j}-\bar x_1)}} &
{\sum_{j=1}^m{(x_{2j}-\bar x_2)(x_{2j}-\bar x_2)}} &
\cdots &
{\sum_{j=1}^m{(x_{2j}-\bar x_2)(x_{nj}-\bar x_n)}} \\
\vdots &
\vdots &
\ddots &
\vdots \\
{\sum_{j=1}^m{(x_{nj}-\bar x_n)(x_{1j}-\bar x_1)}} &
{\sum_{j=1}^m{(x_{nj}-\bar x_n)(x_{2j}-\bar x_2)}} &
\cdots &
{\sum_{j=1}^m{(x_{nj}-\bar x_n)(x_{nj}-\bar x_n)}}
\end{bmatrix}
\]
\]
公式中\(m\)为样本数量,\(\bar {\textbf x}\)为样本的均值,是一个列向量,\(\textbf x_{\cdot j}\)为第\(j\)个样本,也是一个列向量。
在写程序计算样本的协方差矩阵时,我们通常用后一种向量形式计算。一个原因是代码更紧凑清晰,另一个原因是计算机对矩阵及向量运算有大量的优化,效率高于在代码中计算每个元素。
需要注意的是,协方差矩阵是计算样本不同维度之间的协方差,而不是对不同样本计算,所以协方差矩阵的大小与维度相同。
很多时候我们只关注不同维度间的线性关系,且要求这种线性关系可以互相比较。所以,在计算协方差矩阵之前,通常会对样本进行归一化,包括两部分:
- \(\textbf y_{\cdot j} = \textbf x_{\cdot j } – \bar {\textbf x}\)。即对样本进行平移,使其重心在原点;
- \(\textbf z_{i \cdot} = \textbf y_{i \cdot} / \sigma_i\)。其中\(\sigma_i\)是维度\(i\)的标准差。这样消除了数值大小的影响。
这样,协方差矩阵\(\hat \Sigma\)可以写成
\]
该矩阵内的元素具有可比性。