协方差的计算方法

协方差的计算方法版权声明 本文绝大部分转自 CSDN 博主 lslrh 123 文章 在此感谢 原文链接 https blog csdn net lslrh 123 article details 协方差的定义对于一般的分布 直接代入 E X 之类的就可以计算出来了 但真给你一个具体数值的分布 要计算协方差矩阵 根据这个公式来计算 还真不容易反应过来 网上值得参考的资料也不多 这里用一个例子

协方差的定义

协方差定义
对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协方差矩阵,根据这个公式来计算,还真不容易反应过来。网上值得参考的资料也不多,这里用一个例子说明协方差矩阵是怎么计算出来的吧。

计算方法

Σ i j = ( 第 i 列 的 所 有 元 素 − 第 i 列 的 均 值 ) ∗ ( 第 j 列 的 所 有 元 素 − 第 j 列 的 均 值 ) \Sigma_{ij}=(第i列的所有元素-第i列的均值)*(第j列的所有元素-第j列的均值) Σij=iijj

Σ = ( 8.75 − 1 − 1 12 ) \Sigma=\bigl( \begin{matrix} 8.75 & -1 \\ -1 & 12 \end{matrix} \bigr) Σ=(8.751112)

用matlab计算这个例子

z=[1,2;3,6;4,2;5,2]

cov(z)

可以看出,matlab计算协方差过程中还将元素统一缩小了3倍。所以,协方差的matlab计算公式为:

Σ i j \Sigma_{ij} Σij=(第i列所有元素-第i列均值)*(第j列所有元素-第j列均值)/(样本数-1)

与matlab计算验证

 Z=[1 2 3 4;3 4 1 2;2 3 1 4] cov(Z) ans = 1.0000 1.0000 -1.0000 -1.0000 1.0000 1.0000 -1.0000 -1.0000 -1.0000 -1.0000 1.3333 0.6667 -1.0000 -1.0000 0.6667 1.3333 

R语言中的计算结果

是与matlab的结算结果相同的,验证程序如下:

> c1=matrix(c(1,2,3,4, 3,4,1,2, 2,3,1,4),nrow = 3,byrow = T) > cov(c1) [,1] [,2] [,3] [,4] [1,] 1 1 -1.0000000 -1.0000000 [2,] 1 1 -1.0000000 -1.0000000 [3,] -1 -1 1. 0. [4,] -1 -1 0. 1. 

可知该计算方法是正确的。我们还可以看出,协方差矩阵都是方阵,它的维度与样本维度有关(相等)。参考2中还给出了计算协方差矩阵的源代码,非常简洁易懂,在此感谢一下!

参考:

[1] http://en.wikipedia.org/wiki/Covariance_matrix

[2] http://www.cnblogs.com/cvlabs/archive/2010/05/08/1730319.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231632.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java restcontroller_java中的RestController

    java restcontroller_java中的RestController从Spring4开始,Spring以Servlet3为进行开发,如果用SpringMVC测试框架的话需要指定Servlet3兼容的jar包(因为其Mock的对象都是基于Servlet3的)。另外为了方便Rest开发,通过新的@RestController指定在控制器上,这样就不需要在每个@RequestMapping方法上加@ResponseBody了。而且添加了一个AsyncRestTemp…

    2022年6月16日
    68
  • oracle sysdate毫秒,Oracle sysdate常用「建议收藏」

    oracle sysdate毫秒,Oracle sysdate常用「建议收藏」SELECT*FROM(SELECT*FROMcalenderDetailAORDERBYa.calenderdesc)WHERErownum<3;//计算时间大于当前时间的最近2条记录取当前小时,以及相隔一小时v_begin_date:=to_date(to_char(sysdate,‘yyyy-mm-ddhh24‘),‘yyyy-mm-ddhh24‘);…

    2025年8月7日
    3
  • 编译树莓派Linux内核[通俗易懂]

    编译树莓派Linux内核[通俗易懂]  RaspberryPi内核Linux代码存储在GitHub中,可以在github.com/raspberrypi/linux上查看。一、下载linux内核源码gitclone–depth=1https://github.com/raspberrypi/linux  上面的命令将下载当前的活动分支。省略–depth=1将下载整个存储库,包括所有分支的完整历史记录,但占用更多的存储空间。要下载不同的分支,可以使用以下–branch选项:gitclone–depth=1–b

    2022年7月23日
    11
  • uml的什么模型图由活动图顺序图状态图和协作图组成_uml9种图

    uml的什么模型图由活动图顺序图状态图和协作图组成_uml9种图uml是程序员需要掌握一个重要工具,特别在研究hadoop(http://www.iigrowing.cn/hadoop)系统中,有很多相关的uml图形需要绘制,为了方便大家了解uml,在网络上找了些uml方面的文章(http://www.iigrowing.cn/?s=uml)在参考资料中,在uml参考资料中缺少活动图方面的介绍,因此特地在网络上寻找了一些资料,然后整理成一篇文章,供大家参考,水…

    2025年6月11日
    4
  • Laravel数据库操作的三种方式

    Laravel数据库操作的三种方式

    2021年10月26日
    40
  • Drone2Map:如何使用带有POS信息的无人机数据生成三维模型「建议收藏」

    Drone2Map:如何使用带有POS信息的无人机数据生成三维模型「建议收藏」使用Drone2Map生成slpk,将slpk加载至ArcGISPro中,slpk悬浮在空中。首先想到的是在pro中调整一下模型高度不就行了,遗憾的是slpk格式是压缩包,不支持模型高度的调整,所以,就必须追根溯源,考虑在Drone2Map生成三维模型的过程中如何解决此问题。 问题分析:一般用户拿到的无人机数据,基本分为两种,一种是无人机拍摄的照片自身带有xyz

    2022年8月15日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号