精华内容
下载资源
问答
  • 自协方差矩阵
    千次阅读
    2020-06-30 00:08:54

    自适应滤波虽然在上学期间就有过接触,但是近期在复习总结自适应滤波的一些知识的时候,发现当时或许是仅仅为了学习而学习,好多知识点理解的都不是非常的深刻,今天抽时间对自适应滤波中常用的随机过程,自相关函数,互相关函数,自协方差矩阵,互协方差矩阵做一下总结学习。

    1. 随机过程

    通常,我们认为自适应滤波器的输入信号和期望的输出信号一般都是随机的。也就是说,他们都是先验未知的。然而,他们展示出了一些统计特征,在滤波器系数的优化过程中,需要对其进行加以利用。这样的随机信号我们称为随机过程。
    对于离散时间随机过程是指一组有编号的随机变量的集合。{x(n);n=…,-2,-1,0,1,2,3,4,…}
    。对于一个随机信号,编号n与时间或者其他可能的物理维度可能存在一定的关系。

    更多相关内容
  • 由于许多人(大多数是学生)需要以toeplitz矩阵形式的自协方差,因此此函数可以以矩阵形式快速生成输出。 如果需要相关,则可以简单地用函数内部的xcorr替换xcov命令。
  • 目录写在前面的话前置知识自相关矩阵自协方差矩阵自相关矩阵与自协方差矩阵的关系互相关矩阵互协方差矩阵互相关矩阵与互协方差矩阵的关系性质相关系数 写在前面的话 最近看模式识别课程的时候卡在了一个地方,见下图...

    写在前面的话

    最近看模式识别课程的时候卡在了一个地方,见下图:
    在这里插入图片描述
    协方差矩阵倒还知道,自相关矩阵?怎么推导的?它有什么意义?上网查了资料,要么晦涩难懂,要么一堆废话,这里我想尽量用最简洁的语言讲清楚它们。

    前置知识

    向量的内积与外积

    场景:机器学习

    样本(n个样本,N个维度(特征)):
    X = { x 1 , x 2 , . . . , x n } x i = { w i , 1 , w i , 2 , . . . , w i , N } T i ∈ [ 1 , n ] w j = { w 1 , j , w 2 , j , . . . , w n , j } j ∈ [ 1 , N ] X=\left \{ x_1,x_2,...,x_n \right \} \\ x_i=\left \{ w_{i,1},w_{i,2},...,w_{i,N} \right \} ^T \\ i\in \left [ 1,n \right ] \\ w_j=\left \{ w_{1,j},w_{2,j},...,w_{n,j} \right \}\\ j\in \left [ 1,N \right ] \\ X={x1,x2,...,xn}xi={wi,1,wi,2,...,wi,N}Ti[1,n]wj={w1,j,w2,j,...,wn,j}j[1,N]
    这里的i和j与下面的i和j无关!!!

    具体样例(3个样本,4个维度(特征)):
    X = { x 1 , x 2 , x 3 } x 1 = { 1 , 2 , 3 , 4 } T x 2 = { 3 , 2 , 1 , 4 } T x 3 = { 2 , 2 , 3 , 4 } T X=\left \{ x_1,x_2,x_3 \right \} \\ x_1=\left \{ 1,2,3,4 \right \} ^T\\ x_2=\left \{ 3,2,1,4 \right \} ^T\\ x_3=\left \{ 2,2,3,4 \right \} ^T X={x1,x2,x3}x1={1,2,3,4}Tx2={3,2,1,4}Tx3={2,2,3,4}T
    方差(后面会频繁用到方差):
    在这里插入图片描述

    自协方差矩阵

    首先定义由各样本向量均值构成的向量 M X M_X MX ,则样本向量 X X X构成的协方差矩阵记为 :
    M X = E ( X ) = { m 1 , m 2 , . . . , m N } T C X , X = E { ( X − M X ) ( X − M X ) T } = [ c 1 , 1 . . . c 1 , N . . . . . . . . . c N , 1 . . . c N , N ] M_X=E\left ( X \right )=\left \{ m_1,m_2,...,m_N \right \}^T \\ C_{X,X}=E\left\{ \left ( X-M_X \right )\left ( X-M_X \right ) ^T \right\} =\begin{bmatrix} c_{1,1} & ... & c_{1,N}\\ ... & ... & ...\\ c_{N,1} & ... &c_{N,N} \end{bmatrix} MX=E(X)={m1,m2,...,mN}TCX,X=E{(XMX)(XMX)T}=c1,1...cN,1.........c1,N...cN,N
    c i , i c_{i,i} ci,i w i w_i wi的方差:
    c i , i = E { ( w i − M X , i ) ( w i − M X , i ) T } = E { ∣ w i − M X , i ∣ 2 } c_{i,i}=E\left\{ \left ( w_i-M_{X,i} \right )\left ( w_i-M_{X,i} \right ) ^T \right\} =E\left \{ \left | w_i-M_{X,i} \right |^2 \right \} ci,i=E{(wiMX,i)(wiMX,i)T}=E{wiMX,i2}
    c i , j c_{i,j} ci,j w i w_i wi w j w_j wj的协方差:
    c i , j = E { ( w i − M X , i ) ( w j − M X , j ) T } c_{i,j}=E\left\{ \left ( w_i-M_{X,i} \right )\left ( w_j-M_{X,j}\right ) ^T \right\} ci,j=E{(wiMX,i)(wjMX,j)T}
    通过公式可以知道,自协方差矩阵也是Hermitian矩阵。自协方差矩阵也被称为方差矩阵,用符号 V a r ( X ) Var(X) Var(X)表示。

    注意,自协方差矩阵是N*N的方阵,理解协方差矩阵的关键就在于它的计算是不同维度之间的协方差,而不是不同样本之间。拿到一个样本矩阵,最先要明确的就是一行是一个样本还是一个维度。在这里一行是一个维度,一列是一个样本,这一点一定要记住!

    具体样例

    X = { x 1 , x 2 , x 3 } x 1 = { 1 , 2 , 3 , 4 } T x 2 = { 3 , 2 , 1 , 4 } T x 3 = { 2 , 2 , 3 , 4 } T X = [ 1 3 2 2 2 2 3 1 3 4 4 4 ] X=\left \{ x_1,x_2,x_3 \right \} \\ x_1=\left \{ 1,2,3,4 \right \} ^T\\ x_2=\left \{ 3,2,1,4 \right \} ^T\\ x_3=\left \{ 2,2,3,4 \right \} ^T\\ X=\begin{bmatrix} 1 & 3 & 2 \\ 2 & 2 & 2 \\ 3 & 1 & 3 \\ 4 & 4 & 4 \\ \end{bmatrix} X={x1,x2,x3}x1={1,2,3,4}Tx2={3,2,1,4}Tx3={2,2,3,4}TX=123432142234

    M X = E ( X ) = { m 1 , m 2 , . . . , m N } T m 1 = ( 1 + 3 + 2 ) / 3 = 2 m 2 = ( 2 + 2 + 2 ) / 3 = 2 m 3 = ( 3 + 1 + 3 ) / 3 = 2.5 m 4 = ( 4 + 4 + 4 ) / 3 = 4 M X = { 2 , 3 , 2.5 , 4 } T M_X=E\left ( X \right )=\left \{ m_1,m_2,...,m_N \right \} ^T \\ m_1=(1+3+2)/3=2\\ m_2=(2+2+2)/3=2\\ m_3=(3+1+3)/3=2.5\\ m_4=(4+4+4)/3=4\\ M_X=\left \{ 2,3,2.5,4 \right \} ^T MX=E(X)={m1,m2,...,mN}Tm1=(1+3+2)/3=2m2=(2+2+2)/3=2m3=(3+1+3)/3=2.5m4=(4+4+4)/3=4MX={2,3,2.5,4}T
    C X , X = E { ( X − M X ) ( X − M X ) T } = [ c 1 , 1 . . . c 1 , N . . . . . . . . . c N , 1 . . . c N , N ] C_{X,X}=E\left\{ \left ( X-M_X \right )\left ( X-M_X \right ) ^T \right\} =\begin{bmatrix} c_{1,1} & ... & c_{1,N}\\ ... & ... & ...\\ c_{N,1} & ... &c_{N,N} \end{bmatrix} CX,X=E{(XMX)(XMX)T}=c1,1...cN,1.........c1,N...cN,N
    X − M X = [ 1 − 2 3 − 2 2 − 2 2 − 3 2 − 3 2 − 3 3 − 2.5 1 − 2.5 3 − 2.5 4 − 4 4 − 4 4 − 4 ] = [ − 1 1 0 − 1 − 1 − 1 0.5 − 1.5 0.5 0 0 0 ] X-M_X =\begin{bmatrix} 1-2 & 3-2 & 2-2 \\ 2-3 & 2-3 & 2-3 \\ 3-2.5 & 1-2.5 & 3-2.5 \\ 4-4 & 4-4 & 4-4 \\ \end{bmatrix}= \begin{bmatrix} -1 & 1 & 0 \\ -1 & -1 & -1 \\ 0.5 & -1.5 & 0.5 \\ 0 & 0 & 0 \\ \end{bmatrix} XMX=122332.544322312.544222332.544=110.50111.50010.50
    ( X − M X ) T = [ − 1 − 1 0.5 0 1 − 1 − 1.5 0 0 − 1 0.5 0 ] \left ( X-M_X \right ) ^T=\begin{bmatrix} -1 & -1 & 0.5 & 0\\ 1 & -1 & -1.5 & 0\\ 0 & -1 & 0.5 & 0\\ \end{bmatrix} (XMX)T=1101110.51.50.5000
    c i , i c_{i,i} ci,i w i w_i wi的方差:
    c i , i = E { ( w i − M X , i ) ( w i − M X , i ) T } = E { ∣ w i − M X , i ∣ 2 } w 1 − M X , 1 = [ 1 − 2 3 − 2 2 − 2 ] T = [ − 1 1 0 ] T ( x 1 − M X , 1 ) ( x 1 − M X , 1 ) T = ( − 1 ) ∗ ( − 1 ) + ( 1 ) ∗ ( 1 ) + 0 ∗ 0 = 2 E { ∣ w 1 − M X , 1 ∣ 2 } = 2 / n = 2 / 3 c_{i,i}=E\left\{ \left ( w_i-M_{X,i} \right )\left ( w_i-M_{X,i} \right ) ^T \right\} =E\left \{ \left | w_i-M_{X,i} \right |^2 \right \} \\ w_1-M_{X,1} =\begin{bmatrix} 1-2 & 3-2 & 2-2 \\ \end{bmatrix}^T=\begin{bmatrix} -1 & 1 & 0 \\ \end{bmatrix}^T\\ \left ( x_1-M_{X,1} \right )\left ( x_1-M_{X,1} \right ) ^T=(-1)*(-1)+(1)*(1)+0*0=2\\ E\left \{ \left | w_1-M_{X,1}\right |^2 \right \} =2/n=2/3 ci,i=E{(wiMX,i)(wiMX,i)T}=E{wiMX,i2}w1MX,1=[123222]T=[110]T(x1MX,1)(x1MX,1)T=(1)(1)+(1)(1)+00=2E{w1MX,12}=2/n=2/3

    在matlab里面是除以样本数减1的差值,即n-1。

    c i , j c_{i,j} ci,j w i w_i wi w j w_j wj的协方差:
    c i , j = E { ( w i − M X , i ) ( w j − M X , j ) T } w 1 − M X , 1 = [ 1 − 2 3 − 2 2 − 2 ] T = [ − 1 1 0 ] T w 2 − M X , 2 = [ 2 − 3 2 − 3 2 − 3 ] T = [ − 1 − 1 − 1 ] T ( x 1 − M X , 1 ) ( x 2 − M X , 2 ) T = ( − 1 ) ∗ ( − 1 ) + ( 1 ) ∗ ( − 1 ) + 0 ∗ ( − 1 ) = 0 E { ( w i − M X , i ) ( w j − M X , j ) T } = 0 / n = 0 c_{i,j}=E\left\{ \left ( w_i-M_{X,i} \right )\left ( w_j-M_{X,j}\right ) ^T \right\} \\ w_1-M_{X,1} =\begin{bmatrix} 1-2 & 3-2 & 2-2 \\ \end{bmatrix}^T=\begin{bmatrix} -1 & 1 & 0 \\ \end{bmatrix}^T\\ w_2-M_{X,2} =\begin{bmatrix} 2-3 & 2-3 & 2-3 \\ \end{bmatrix}^T=\begin{bmatrix} -1 & -1 & -1 \\ \end{bmatrix}^T\\ \left ( x_1-M_{X,1} \right )\left ( x_2-M_{X,2} \right ) ^T=(-1)*(-1)+(1)*(-1)+0*(-1)=0\\ E\left\{ \left ( w_i-M_{X,i} \right )\left ( w_j-M_{X,j}\right ) ^T \right\}=0/n=0 ci,j=E{(wiMX,i)(wjMX,j)T}w1MX,1=[123222]T=[110]Tw2MX,2=[232323]T=[111]T(x1MX,1)(x2MX,2)T=(1)(1)+(1)(1)+0(1)=0E{(wiMX,i)(wjMX,j)T}=0/n=0

    自相关矩阵

    自相关矩阵定义为样本向量与自身的外积的数学期望,其实就是自协方差矩阵不减均值向量就好:
    R X , X = E ( X X T ) = [ r 1 , 1 . . . r 1 , N . . . . . . . . . r N , 1 . . . r N , N ] R_{X,X}=E\left ( XX^T \right ) =\begin{bmatrix} r_{1,1} & ... & r_{1,N}\\ ... & ... & ...\\ r_{N,1} & ... &r_{N,N} \end{bmatrix} RX,X=E(XXT)=r1,1...rN,1.........r1,N...rN,N

    r i , i r_{i,i} ri,i w i w_i wi的自相关系数:
    r i , i = E { w i w i T } = E { ∣ w i ∣ 2 } r_{i,i}=E\left\{ w_i w_i ^T \right\}=E\left \{ \left | w_i \right |^2 \right \} ri,i=E{wiwiT}=E{wi2}
    r i , j r_{i,j} ri,j w i w_i wi w j w_j wj的互相关系数:
    r i , j = E { w i w j T } r_{i,j}=E\left \{ w_iw_j^T \right \} ri,j=E{wiwjT}
    自相关矩阵是复共轭对称的,即为Hermitian矩阵。

    这里就不举例了,计算方法都相似~

    自相关矩阵与自协方差矩阵的关系

    自相关矩阵与自协方差矩阵存在如下关系:
    C X , X = R X , X − M X M X T C_{X,X}=R_{X,X}-M_XM_X^T CX,X=RX,XMXMXT

    互协方差矩阵

    考虑又一个数据集,样本数量无所谓,但是特征数一定要是N:
    Y = { y 1 , y 2 , . . . , y n } T Y=\left \{ y_1,y_2,...,y_n \right \}^T Y={y1,y2,...,yn}T
    通过自协方差矩阵的推广,可以得到样本向量 X X X Y Y Y的互协方差矩阵,定义为:
    M X = E ( X ) M Y = E ( Y ) C X , Y = E { ( X − M X ) ( Y − M Y ) T } = [ c w x 1 , w y 1 . . . c w x 1 , w y N . . . . . . . . . c w x N , w y 1 . . . c w x N , w y N ] M_X=E\left ( X \right ) \\ M_Y=E\left ( Y \right ) \\ C_{X,Y}=E\left\{ \left ( X-M_X \right )\left ( Y-M_Y \right ) ^T \right\} =\begin{bmatrix} c_{w_{x1},w_{y1}} & ... & c_{w_{x1},w_{yN}}\\ ... & ... & ...\\ c_{w_{xN},w_{y1}} & ... &c_{w_{xN},w_{yN}} \end{bmatrix} MX=E(X)MY=E(Y)CX,Y=E{(XMX)(YMY)T}=cwx1,wy1...cwxN,wy1.........cwx1,wyN...cwxN,wyN
    互协方差表示两个向量对应元素减去各自期望,再相乘再做期望。

    ( X − M X ) , ( Y − M Y ) T \left ( X-M_X \right ),\left ( Y-M_Y \right ) ^T (XMX),(YMY)T表示两个零期望的随机序列。

    互相关矩阵

    通过自相关矩阵的推广,可以得到样本向量 X X X Y Y Y的互相关矩阵,定义为:
    R X , Y = E ( X Y T ) = [ r w x 1 , w y 1 . . . r w x 1 , w y N . . . . . . . . . r w x N , w y 1 . . . r w x N , w y N ] R_{X,Y}=E\left ( XY^T \right ) =\begin{bmatrix} r_{w_{x1},w_{y1}} & ... & r_{w_{x1},w_{yN}}\\ ... & ... & ...\\ r_{w_{xN},w_{y1}} & ... &r_{w_{xN},w_{yN}} \end{bmatrix} RX,Y=E(XYT)=rwx1,wy1...rwxN,wy1.........rwx1,wyN...rwxN,wyN
    互相关表示两个向量对应元素相乘的期望。

    互相关矩阵与互协方差矩阵的关系

    互相关矩阵与互协方差矩阵存在如下关系:
    C X , Y = R X , Y − M X M Y T C_{X,Y}=R_{X,Y}-M_XM_Y^T CX,Y=RX,YMXMYT
    当样本向量 X X X Y Y Y的维数不同时,他们的互相关矩阵和互协方差矩阵为非方阵,当他们的维数相同时,他们的互相关矩阵与互协方差矩阵为方阵,但仍不为复共轭对称矩阵。

    如果 X X X Y Y Y这两个序列的期望 E ( X ) E(X) E(X) E ( Y ) E(Y) E(Y)为0,那么互相关矩阵和互协方差矩阵是一样的。

    性质

    协方差矩阵与互协方差矩阵由如下的性质:
    (1)自协方差矩阵是复共轭转置对称的;
    (2)线性组合向量 A x + b Ax+b Ax+b的自协方差矩阵 C A x + b = C A x = A C x A T C_{Ax+b}=C_{Ax}=AC_xA^T CAx+b=CAx=ACxAT
    (3)互协方差矩阵不是复共轭转置对称的,但是满足 C x , y = C y , x T C_{x,y}=C_{y,x}^T Cx,y=Cy,xT
    (4) C x 1 + x 2 , y = C x 1 , y + C x 2 , y C_{x_1+x_2,y}=C_{x_1,y}+C_{x_2,y} Cx1+x2,y=Cx1,y+Cx2,y
    (5)若随机向量 X X X Y Y Y具有相同的维数,则 C x + y = C x + C x , y + C y , x + C y C_{x+y}=C_x+C_{x,y}+C_{y,x}+C_y Cx+y=Cx+Cx,y+Cy,x+Cy;
    (6) C A x , B y = A C x , y B T C_{Ax,By}=AC_{x,y}B^T CAx,By=ACx,yBT

    相关系数

    自协方差矩阵和互协方差矩阵主要用于描述矩阵各行,列向量之间的相关程度,但由于其元素是自协方差矩阵,互协方差函数的绝对大小,有的时候在衡量相关度的时候并不准确,因而需要引入相关系数的概念,定义为:
    ρ x y ⇒ d e f c x , y σ x σ y \rho_{xy}\overset{def}{\Rightarrow}\frac{c_{x,y}}{\sigma_x\sigma_y} ρxydefσxσycx,y
    其中, 是随机变量 X X X Y Y Y的互协方差, σ x 2 \sigma_x^2 σx2 σ y 2 \sigma_y^2 σy2则表示 X X X Y Y Y的方差。由Caucht-Schwartz不等式可以知道 0 ≤ ∣ ρ x y ∣ ≤ 1 0\le\left|\rho_{xy}\right|\le1 0ρxy1。相关系数 ρ x y \rho_{xy} ρxy给出了随机向量 X X X Y Y Y的相关程度,接近于0说明两个向量的相似度越小,越接近于1说明两个向量的相似度越大。

    展开全文
  • WEIGHTEDCOV 返回加权协方差的对称矩阵 C,该矩阵根据输入 T×N 矩阵 Y 计算,该矩阵 Y 的行是观察值,列是变量,以及输入 T×1 的观察值权重向量 w。 如果观察结果并非完全相同并且需要根据某些理论假设或知识进行...
  • 说明 首先需要说明的是:协方差矩阵和互协方差矩阵都不是针对单变量,而是多变量的统计量。 使用随机向量xxx来表示多个变量: 每一个元素代表一个随机变量,ξ\xiξ表示样本点,每个元素都是一个...自协方差矩阵,...

    说明

    首先需要说明的是:协方差矩阵和互协方差矩阵都不是针对单变量,而是多变量的统计量。
    使用随机向量 x x x来表示多个变量:
    在这里插入图片描述
    每一个元素代表一个随机变量, ξ \xi ξ表示样本点,每个元素都是一个随机过程或者随机信号。

    自协方差矩阵

    自协方差矩阵,是一个随机向量元素之间的协方差。
    在这里插入图片描述
    即(向量 x x x减去其均值向量)乘以 (向量 x x x减去其均值向量)的复共轭。
    在实数情况下,复共轭即转置。

    自协方差矩阵,也叫协方差矩阵,有时也叫方差矩阵。

    互协方差矩阵

    互协方差矩阵,是两个随机向量元素之间的协方差
    在这里插入图片描述
    即(向量 x x x减去其均值向量)乘以 (向量 y y y减去其均值向量)的复共轭。

    展开全文
  • 该函数是原生 matlab cov2... 这个问题可以简单地通过将所有对角线元素设置为 1(怪异的方式)或在计算相关矩阵时使用方差而不是 std 来解决(covariance(x,y)/sqrt(var(x)*var(y)) 代替协方差(x,y)/(std(x)*std(y)))。
  • 通过C语言实现三维协方差矩阵运算,包含例程,调用函数传相应参数就可以了,需要显示协方差矩阵可自行编写代码遍历数组
  • 文章目录一、 协方差1、为什么需要协方差2、协方差的定义二、协方差矩阵1、协方差矩阵的定义2、协方差矩阵公式推导参考博客 一、 协方差 1、为什么需要协方差 定义:假如有N个样本的集合{X1,X2,…XNX_1,X_2,…X_NX1...
  • 协方差矩阵的python实现

    千次阅读 2020-12-13 19:35:07
    给出协方差矩阵的定义: 这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为 可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。 Matlab协方差实战 ...

    学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧,一带而过。

    很显然,均值描述的是样本集合的中间点,它告诉我们的信息是很有限的,而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均。以这两个集合为例,[0,8,12,20]和[8,9,11,12],两个集合的均值都是10,但显然两个集合差别是很大的,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是除以n,是因为这样能使我们以较小的样本集更好的逼近总体的标准差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方。

    为什么需要协方差?

    上面几个统计量看似已经描述的差不多了,但我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子欢迎程度是否存在一些联系啊,嘿嘿~协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:

    来度量各个维度偏离其均值的程度,标准差可以这么来定义:

    协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义),也就是说一个人越猥琐就越受女孩子欢迎,嘿嘿,那必须的~结果为负值就说明负相关的,越猥琐女孩子越讨厌,可能吗?如果为0,也是就是统计上说的“相互独立”。

    从协方差的定义上我们也可以看出一些显而易见的性质,如:

    协方差多了就是协方差矩阵

    上一节提到的猥琐和受欢迎的问题是典型二维问题,而协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算 n! / ((n-2)!*2) 个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:

    这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为

    可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。

    Matlab协方差实战

    上面涉及的内容都比较容易,协方差矩阵似乎也很简单,但实战起来就很容易让人迷茫了。必须要明确一点,协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。这个我将结合下面的例子说明,以下的演示将使用Matlab,为了说明计算原理,不直接调用Matlab的cov函数(蓝色部分为Matlab代码)。

    首先,随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。

    mysample = fix(rand(10,3)*50)

    根据公式,计算协方差需要计算均值,那是按行计算均值还是按列呢,我一开始就老是困扰这个问题。前面我们也特别强调了,协方差矩阵是计算不同维度间的协方差,要时刻牢记这一点。样本矩阵的每行是一个样本,每列为一个维度,所以我们要按列计算均值。为了描述方便,我们先将三个维度的数据分别赋值:

    >> dim1 = mysample(:,1);

    >> dim2 = mysample(:,2);

    >> dim3 = mysample(:,3);

    计算dim1与dim2,dim1与dim3,dim2与dim3的协方差:

    >> sum((dim1 - mean(dim1)) .* (dim2 - mean(dim2))) / (size(mysample, 1) - 1) %得到 -147.0667

    >> sum((dim1 - mean(dim1)) .* (dim3 - mean(dim3))) / (size(mysample, 1) - 1) %得到 -82.2667

    >> sum((dim2 - mean(dim2)) .* (dim3 - mean(dim3))) / (size(mysample, 1) - 1) %得到 76.5111

    搞清楚了这个后面就容易多了,协方差矩阵的对角线就是各个维度上的方差,下面我们依次计算:

    >> var(dim1) %得到 227.8778

    >> var(dim2) %得到 179.8222

    >> var(dim3) %得到 156.7111

    这样,我们就得到了计算协方差矩阵所需要的所有数据,调用Matlab自带的cov函数进行验证:

    >> cov(mysample)

    把我们计算的数据对号入座,是不是一摸一样?

    Update

    今天突然发现,原来协方差矩阵还可以这样计算,先让样本矩阵中心化,即每一维度减去该维度的均值,使每一维度上的均值为0,然后直接用新的到的样本矩阵乘上它的转置,然后除以(N-1)即可。其实这种方法也是由前面的公式推导而来,只不过理解起来不是很直观,但在抽象的公式推导时还是很常用的!同样给出Matlab代码实现:

    >> temp = mysample - repmat(mean(mysample), 10, 1);

    >> result = temp' * temp ./ (size(mysample, 1) - 1)

    总结

    理解协方差矩阵的关键就在于牢记它计算的是不同维度之间的协方差,而不是不同样本之间,拿到一个样本矩阵,我们最先要明确的就是一行是一个样本还是一个维度,心中明确这个整个计算过程就会顺流而下,这么一来就不会迷茫了~

    在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。其定义的数学形式是:Cov(X,Y)=E[(X−E(X))(Y−E(Y))]=E[XY]−E[X]E[Y]Cov(X,Y)=E[(X-E(X))(Y-E(Y))] =E[XY]-E[X]E[Y]Cov(X,Y)=E[(X−E(X))(Y−E(Y))]=E[XY]−E[X]E[Y]

    np.cov详解

    协方差数学形式

    协方差代码形式

    函数原型:def cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None)

    m:一维或则二维的数组,默认情况下每一行代表一个变量(属性),每一列代表一个观测

    y:与m具有一样的形式的一组数据

    rowvar:默认为True,此时每一行代表一个变量(属性),每一列代表一个观测;为False时,则反之

    bias:默认为False,此时标准化时除以n-1;反之为n。其中n为观测数

    ddof:类型是int,当其值非None时,bias参数作用将失效。当ddof=1时,将会返回无偏估计(除以n-1),即使指定了fweights和aweights参数;当ddof=0时,则返回简单平均值。

    frequency weights:一维数组,代表每个观测要重复的次数(相当于给观测赋予权重)

    analytic weights:一维数组,代表观测矢量权重。对于被认为“重要”的观察,这些相对权重通常很大,而对于被认为不太重要的观察,这些相对权重较小。如果ddof = 0,则可以使用权重数组将概率分配给观测向量。

    代码示例

    基本使用

    import numpy as np

    # 计算协方差的时候,一行代表一个特征

    # 下面计算cov(T, S, M)

    T = np.array([9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])

    S = np.array([39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])

    M = np.asarray([38, 56, 90, 63, 56, 77, 30, 80, 41, 79, 64, 88])

    X = np.vstack((T, S, M))

    # X每行代表一个属性

    # 每列代表一个示例,或者说观测

    print(np.cov(X))

    # [[ 47.71969697 122.9469697 129.59090909]

    # [122.9469697 370.08333333 374.59090909]

    # [129.59090909 374.59090909 399. ]]

    重点:协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间。拿到一个样本矩阵,首先要明确的就是行代表什么,列代表什么。

    fweights

    frequency weights:一维数组,代表每个观测要重复的次数(相当于给观测赋予权重)

    T = np.array([9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])

    S = np.array([39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])

    M = np.asarray([38, 56, 90, 63, 56, 77, 30, 80, 41, 79, 64, 88])

    X = np.vstack((T, S, M))

    print(np.cov(X, None, True, False, fweights=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))

    # 和上面例子结果一样

    # [[ 47.71969697 122.9469697 129.59090909]

    # [122.9469697 370.08333333 374.59090909]

    # [129.59090909 374.59090909 399. ]]

    T = np.array([9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])

    S = np.array([39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])

    M = np.asarray([38, 56, 90, 63, 56, 77, 30, 80, 41, 79, 64, 88])

    X = np.vstack((T, S, M))

    print(np.cov(X, None, True, False, fweights=[2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]))

    # 结果变了,就是因为相当于在X中增加了一列[9,39,38].T

    # [[ 45.6025641 121.55769231 128.43589744]

    # [121.55769231 381.42307692 389.30769231]

    # [128.43589744 389.30769231 415.76923077]]

    T = np.array([9, 9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])

    S = np.array([39, 39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])

    M = np.asarray([38, 38, 56, 90, 63, 56, 77, 30, 80, 41, 79, 64, 88])

    X = np.vstack((T, S, M))

    print(np.cov(X, None, True, False))

    # 这样就验证了上面的话咯~

    # [[ 45.6025641 121.55769231 128.43589744]

    # [121.55769231 381.42307692 389.30769231]

    # [128.43589744 389.30769231 415.76923077]]

    aweights

    很遗憾,暂时不知道它的计算方式,等有时间我仔细看看源码怎么算的,再修正!

    注意事项

    参数y

    T = np.array([9, 15, 25, 14, 10, 18, 0, 16, 5, 19, 16, 20])

    S = np.array([39, 56, 93, 61, 50, 75, 32, 85, 42, 70, 66, 80])

    M = np.asarray([38, 56, 90, 63, 56, 77, 30, 80, 41, 79, 64, 88])

    X = np.vstack((T, S, M))

    # 你会惊奇发现,这个结果和上面的结果一致,这就是参数 m, y,不知道为什么要设置这样一个参数,hhh

    print(np.cov(X[0:1], X[1:]))

    # [[ 47.71969697 122.9469697 129.59090909]

    # [122.9469697 370.08333333 374.59090909]

    # [129.59090909 374.59090909 399. ]]

    和方差的区别

    >>> a = [1,2,3,4] # 当a是一维向量时

    >>> import numpy as np

    >>> np.cov(a) # 计算样本方差

    array(1.66666667)

    >>> np.var(a) # 计算总体方差

    1.25

    下面是 cov(a) 和 var(a)的区别

    >>> 1.666666666666666667*3/4

    1.25

    >>>

    协方差矩阵实例:

    import numpy as np

    x = np.array([2,4,5,3,6,9,40,25,32])

    print(np.mean(x))

    print(x-np.mean(x))

    print((x-np.mean(x))**2)

    print(np.sum((x-np.mean(x))**2))

    print(np.cov(x),np.cov(x)*8)

    print(np.var(x)*9)

    y = np.array([[1,5,6],[4,3,9],[4,2,9],[4,7,2]])

    print(y.shape)

    print(np.cov(y,rowvar=False))

    #其中rowvar是布尔类型。默认为true是将行作为独立的变量、如果是flase的话,则将列作为独立的变量。

    输出结果:

    14.0

    [-12. -10. -9. -11. -8. -5. 26. 11. 18.]

    [144. 100. 81. 121. 64. 25. 676. 121. 324.]

    1656.0

    207.0 1656.0

    1656.0

    (4, 3)

    [[ 2.25 -0.75 0.5 ]

    [-0.75 4.91666667 -7.16666667]

    [ 0.5 -7.16666667 11. ]]

    以下使用鸢尾花数据集计算数据的协方差矩阵,由于数据包含4个特征,因此这个协方差矩阵一定是一个4*4的矩阵的代码

    import numpy as np

    from sklearn import datasets

    iris = datasets.load_iris()

    # print(iris.data)

    print(iris.data.shape)

    print(np.cov(iris.data,rowvar=True).shape)

    print(np.cov(iris.data,rowvar=False))

    输出结果:

    (150, 4)

    (150, 150)

    [[ 0.68569351 -0.042434 1.27431544 0.51627069]

    [-0.042434 0.18997942 -0.32965638 -0.12163937]

    [ 1.27431544 -0.32965638 3.11627785 1.2956094 ]

    [ 0.51627069 -0.12163937 1.2956094 0.58100626]]

    展开全文
  • 大维协方差矩阵和高维数据分析
  • 对于概率模型未知的多维数据样本容量扩充问题,根据主成分分析原理以及多维正态分布的性质,讨论并给出了与已知多维样本数据有相同协方差结构的模拟数据生成算法,并在此基础上给出了变量的离散化处理方法。...
  • 该Python软件包包含一个函数cov_shrink ,该函数为协方差矩阵实现了插件收缩估算器。 估计量由,在此称为“目标D :(对角线,不等方差)”。 有关更多详细信息,请参见。 安装 pip install covar 依存关系 ...
  • 自协方差函数(Autocovariance function)自协方差函数是描述随机信号X(t)在任意两个不同时刻t1,t2,的取值之间的二阶混合中心矩,用来描述X(t)在两个时刻取值的起伏变化(相对与均值)的相关程度,也称为中心化的...
  • Matlab 求矩阵均值和协方差矩阵 ∈ Matlab 使用笔记

    千次阅读 多人点赞 2020-06-16 16:41:14
    我们想算他的均值和协方差矩阵,期望得到的均值是一个5行1列的列向量,希望得到的协方差矩阵是一个3行3列 (实际上是5x5)的矩阵。 我们还想得到一种协方差矩阵,它是5行5列的矩阵。 2.为了验证,matlab 计算的正确...
  • 其中是协方差矩阵协方差矩阵的逆可以记作,也叫信息矩阵。当变量xx是三维变量时,协方差矩阵为: 其中 其实在应用中,往往我们直接操作的是信息矩阵,而不是协方差矩阵。下面从一个例子来体会一下协方差矩阵...
  • Dr.Can在他的教学视频(【卡尔曼滤波器】2_数学基础_数据融合_协方差矩阵_状态空间方程_观测器问题)中使用了足球运动员的数据介绍了协方差矩阵的概念和计算方法,原始数据如下图,那么协方差矩阵到底是什么?...
  • 通过C语言实现二维协方差矩阵运算,包含例程,调用函数传相应参数就可以了,需要显示协方差矩阵可自行编写代码遍历数组
  • 考虑一个多维高斯分布的数据集,每个维度上的不确定度量等于变量的方差,最后要得到整个数据集的不确定度,在各个变量独立的情况下,显然需要将各个维度上的方差进行连乘,否则需要连乘数据矩阵对应的协方差矩阵的本...
  • 阵列信号基础(协方差矩阵

    千次阅读 2020-09-08 11:32:19
    故使用协方差矩阵能够获得这些,因为协方差矩阵是每一维度下(也就是阵元)信号的相关性。当两个维度相关时,信号的协方差也是最大的。 源代码 %--------------阵列信号基础(协方差矩阵)------------% clc;close ...
  • 文章目录协方差协方差定义举例说明方差相关系数协方差矩阵(covariance matrix)举例说明数学符号表示协方差矩阵的应用马氏距离数学符号定义PCA降维使用sklearn中的np.cov遇到的坑 协方差 协方差定义 协方差...
  • tips:MATLAB如何计算协方差矩阵

    千次阅读 2020-11-03 08:26:47
    MATLAB输入矩阵X是m*n大小。请注意: m是#features,n是#samples。 计算的主要代码是: xc = x - sum(x,1)./m; % Remove mean c = (xc' * xc) ./ denom; denom为m-1(m>1)或m(m = 1)。非常有意思的是: a.先...
  • 协方差矩阵是什么在统计学与概率论中,协方差矩阵的每个元素是各个向量元素之间的协方差,是从标量随机变量到高维度随机向量的自然推广。矩阵中的数据按行排列与按列排列求出的协方差矩阵是不同的,这里默认数据是按...
  • 一种协方差矩阵自适应优化算法的说明文档和MATLAB实现。测试函数经测试可以运行。
  • Gencov 生成随机协方差矩阵,并使用它们绘制MVN样本。协方差矩阵: genS和genArray函数产生具有指定方差结构的随机协方差矩阵(如ndarray或javascript数组)。 可以指定协方差矩阵的特征值(主成分方差)V,或者可以...
  • 协方差矩阵

    2022-02-10 23:31:04
    1.n维数据之间的数学关系 ...4. 协方差 当出现多维集合时,各个维度间的数据有无关联,可以参照一维的方法,首先将每个维度样本集合中每一个点的数据值减去该维度的平均值,再乘以另外一个维度的同样
  • 针对特定杂波背景下的最优或次优杂波协方差矩阵估计方法难以适应过渡杂波环境的问题,提出协方差矩阵结构的融合估计方法,通过调整参数涵盖现有的3种杂波协方差矩阵估计方法,并分析所提出方法对应的自适应归一化匹配...
  • 协方差与协方差矩阵

    2022-04-02 20:43:31
    一、协方差 协方差用于衡量两个随机变量的联合变化程度。 方差为协方差的一种特殊情况,即该变量与其自身之协方差。 若变量X的较大值主要与另一个变量Y的较大值相对应,而两者的较小值也相对应,则可称两变量倾向于...
  • 样本协方差矩阵

    2014-08-14 08:39:02
    数学建模 协方差分析 数学基础知识 线性代数基础知识
  • 返回给定数据矩阵 X 的协方差矩阵(行 = 对象,列 = 特征) % @作者:Kardi Teknomo % http://people.revoledu.com/kardi/index.html 在...Mahalanobis 距离计算的用法
  • 在存在多个资产类别的情况下,现有的收缩技术难以对资产回报的协方差矩阵进行建模。 因此,我们引入了一个 Blockbuster 收缩估计器,它相应地对协方差矩阵进行聚类。 除了定义和推导新的渐近最优线性收缩估计器之外...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,423
精华内容 17,369
关键字:

自协方差矩阵

友情链接: stereo.zip