zoukankan      html  css  js  c++  java
  • 样本协方差矩阵的定义与计算

    定义

      协方差矩阵是用来衡量一组随机变量之间的线性关系的矩阵。我们都知道,对于$n$个随机变量$X_1,X_2,...,X_n$,总体协方差矩阵定义为:

    $ left[ egin{matrix} D(X_1)&Cov(X_1,X_2)&dots&Cov(X_1,X_n)\ Cov(X_2,X_1)&D(X_2)&dots&Cov(X_2,X_n)\ & &vdots& \ Cov(X_n,X_1)&Cov(X_n,X_2)&dots&D(X_n)\ end{matrix} ight] $

      其中

    $ egin{aligned} &D (X_i) = E(X_i^2)-E(X_i)^2\ &Cov(X_i,X_j) = E(X_iX_j)-E(X_i)E(X_j) end{aligned} $

      但是对于给定样本,怎么算样本协方差矩阵呢?

      假设我们对以上$n$个随机变量同时进行独立抽样$m$次,定义第$j$次抽样获得的$n$个样本值为$x_1^j,x_2^j,...,x_n^j$。我们知道样本对总体方差的无偏估计为:

    $ egin{gather} egin{aligned} &hat{sigma}_i^2 =  frac{1}{m-1}sumlimits_{j=1}^m(x_i^j-overline {x_i})^2\  &overline {x_i} =  frac{1}{m}sumlimits_{j=1}^mx_i^j end{aligned}label{}end{gather} $

      样本对总体协方差的无偏估计也是类似的:

    $ egin{gather} egin{aligned} &hat{Cov}(x_i,x_j) =  frac{1}{m-1}sumlimits_{k=1}^m(x_i^k-overline {x_i})(x_j^k-overline {x_j}) \ end{aligned}label{} end{gather} $

      所以样本协方差矩阵就是由$(1),(2)$两个估计量组成的。根据定义,样本协方差矩阵是能计算了,但是这样一个一个算的话时间复杂度是很高的。下面记录直接对矩阵进行的样本协方差矩阵的计算。

    计算

      对于$n$个随机变量$X_1,X_2,...,X_n$,同时进行$m$次独立抽样,将获得的样本值排列为矩阵:

    $ A = left[ egin{matrix} x_1^1&x_2^1&dots&x_n^1\ x_1^2&x_2^2&dots&x_n^2\ & &vdots& \ x_1^m&x_2^m&dots&x_n^m\ end{matrix} ight] $

      其中每行为某次抽样获得的$n$个随机变量的样本值,每列为某个随机变量在$m$次抽样种获得的样本值。

      首先计算所有随机变量的均值,获得向量:

    $ egin{aligned} mu = frac{1}{m}sumlimits_{i=1}^mA_{i:} end{aligned} $

      然后对$A$和$mu$做差(向量广播到矩阵后做差),获得所有样本减去均值后的矩阵

    $ B= left[ egin{matrix} x_1^1 - overline{x_1}&x_2^1 - overline{x_2}&dots&x_n^1- overline{x_n}\ x_1^2 - overline{x_1}&x_2^2 - overline{x_2}&dots&x_n^2- overline{x_n}\ & &vdots& \ x_1^m - overline{x_1}&x_2^m - overline{x_2}&dots&x_n^m- overline{x_n}\ end{matrix} ight] $

      最后计算$B^TB$再除以$m-1$获得协方差矩阵。为了便于理解理解,下面列出$B^TB$:

    $ B^TB= left[ egin{matrix} left[ egin{matrix} x_1^1- overline{x_1}\x_2^1- overline{x_2}\vdots\x_n^1- overline{x_n} end{matrix} ight] left[ egin{matrix} x_1^2- overline{x_1}\x_2^2- overline{x_2}\vdots\x_n^2- overline{x_n} end{matrix} ight] dots left[ egin{matrix} x_1^m- overline{x_1}\x_2^m- overline{x_2}\vdots\x_n^m- overline{x_n} end{matrix} ight] end{matrix} ight] left[ egin{matrix} left[x_1^1 - overline{x_1} ight.&x_2^1 - overline{x_2}&dots&left.x_n^1- overline{x_n} ight]\ left[x_1^2 - overline{x_1} ight.&x_2^2 - overline{x_2}&dots&left.x_n^2- overline{x_n} ight]\ & &vdots& \ left[x_1^m - overline{x_1} ight.&x_2^m - overline{x_2}&dots&left.x_n^m- overline{x_n} ight]\ end{matrix} ight] $

      矩阵内部的括号表示某次抽样。以上这些操作用Python的numpy库都是很容易实现的。

      实际上,$B^TB$就是$n$个随机变量抽样$m$次获得的$n$个$m$维向量标准化后两两内积所形成的$n$维格拉姆矩阵。

  • 相关阅读:
    JVM运行时数据区与JVM堆内存模型小结
    Java Management Extensions (JMX)
    ubuntu 中 搭建 C编程环境
    个人使用的电脑软件
    Navicat Premium 12 安装 与 激活
    利用 canvas 实现压缩图片
    barcode模块: plus.barcode.scan 进行扫描图片出现无法识别二维码,打印的错误信息是code:8,message:''
    win10 出现 No AMD graphics driver is installed or the AMD driver is not functioning properly .....
    H5项目 使用Cropper.js 实现图片 裁剪 操作 (APP端)
    Java 正则表达式获取两个字符中间的内容
  • 原文地址:https://www.cnblogs.com/qizhou/p/13495598.html
Copyright © 2011-2022 走看看