热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

matlab皮尔逊和斯皮尔曼,利用matlab计算Pearson和Spearman相关系数

Pearson相关系数考察两个事物(在数据里我们称之为变量)之间的相关程度,简单来说就是衡量两个数据集合是否在一条线上面。其计算公式为:或或N表示变量取

Pearson相关系数

考察两个事物(在数据里我们称之为变量)之间的相关程度,简单来说就是衡量两个数据集合是否在一条线上面。其计算公式为:

763b0133ba98a8a1bf263eb1e234f2de.pngc9bc44c02b551b218490a3ba2667b4bc.pngb5d54a87ffedd2a8988add2c13fa7c93.png

N表示变量取值的个数。

相关系数r的值介于–1与+1之间,即–1≤r≤+1。其性质如下:

当r>0时&#xff0c;表示两变量(当X的值增大(减小)&#xff0c;Y值增大(减小))正相关&#xff0c;r<0时&#xff0c;两变量为负相关(当X的值增大(减小)&#xff0c;Y值减小(增大))。

当|r|&#61;1时&#xff0c;表示两变量为完全线性相关&#xff0c;即为函数关系。

当r&#61;0时&#xff0c;表示两变量间无线性相关关系。

当0

当两个变量的标准差都不为零时&#xff0c;相关系数才有定义&#xff0c;皮尔逊相关系数适用于&#xff1a;

两个变量之间是线性关系&#xff0c;都是连续数据。

两个变量的总体是正态分布&#xff0c;或接近正态的单峰分布。

两个变量的观测值是成对的&#xff0c;每对观测值之间相互独立。

一个具体的计算例子&#xff1a;

X Y

1 2

2 5

3 6

15389d67cbe2ad856fea4e929e040f84.png

而利用matlab计算的话则可以使用函数 corrcoef或corr

先看一下help corrcoef的内容&#xff1a;

57bbceaa3d15822a4ca4100cc0aea434.png

再看一下help corr的内容

c9fe5237184bf0df742283690c12abca.png

对于前面提到的具体的计算例子&#xff0c;可以在matlab中实现如下&#xff1a;

x&#61;[1;2;3];

y&#61;[2;5;6];

r1&#61;corr(x,y,&#39;type&#39;,&#39;pearson&#39;);

r2&#61;corrcoef(x,y);最后可以看到

r1&#61;0.9608

r2&#61;

1.0000 0.9608

0.9608 1.0000

均与前面的计算结果相符。需要注意的是&#xff0c;使用corr函数时默认计算皮尔逊相关系数

Spearman相关系数

斯皮尔曼相关系数用来估计两个变量X、Y之间的相关性&#xff0c;其中变量间的相关性可以使用单调函数来描述。如果两个变量取值的两个集合中均不存在相同的两个元素&#xff0c;那么&#xff0c;当其中一个变量可以表示为另一个变量的很好的单调函数时(即两个变量的变化趋势相同)&#xff0c;两个变量之间的相关系数可以达到&#43;1或-1。

假设两个随机变量分别为X、Y(也可以看做两个集合)&#xff0c;它们的元素个数均为N&#xff0c;两个随机变量取的第i(1<&#61;i<&#61;N)个值分别用Xi、Yi表示。对X、Y进行排序(同时为升序或降序)&#xff0c;得到两个元素排行集合x、y&#xff0c;其中元素xi、yi分别为Xi在X中的排行以及Yi在Y中的排行。将集合x、y中的元素对应相减得到一个排行差分集合d&#xff0c;其中di&#61;xi-yi&#xff0c;1<&#61;i<&#61;N。随机变量X、Y之间的斯皮尔曼相关系数可以由x、y或者d计算得到&#xff0c;其计算方式如下所示&#xff1a;

由排行差分集合d计算而得(公式一)&#xff1a;

055f00b181f13ee88d28e3b30a1bdc26.png

由排行集合x、y计算而得(斯皮尔曼相关系数同时也被认为是经过排行的两个随机变量的皮尔逊相关系数&#xff0c;以下实际是计算x、y的皮尔逊相关系数)(公式二)&#xff1a;

9e8d53b46d5665958064d2a19d9cd221.png

以下是一个计算集合中元素排行的例子(仅适用于斯皮尔曼相关系数的计算)

338b0b36eb9306e063b2247c587bef85.png

这里需要注意&#xff1a;当变量的两个值相同时&#xff0c;它们的排行是通过对它们位置进行平均而得到的。

斯皮尔曼相关系数对数据条件的要求没有皮尔逊相关系数严格&#xff0c;只要两个变量的观测值是成对的&#xff0c;或者是由连续变量观测资料转化得到的&#xff0c;不论两个变量的总体分布形态、样本容量的大小如何&#xff0c;都可以用斯皮尔曼相关系数来进行研究。

使用matlab计算spearman相关系数则比较简单&#xff0c;也是使用corr函数&#xff0c;如下&#xff1a;

r&#61; corr(x, y, &#39;type&#39; , &#39;Spearman&#39;);

对于上面的例子&#xff0c;则可以计算出r&#61;1。

注意&#xff1a;使用Matlab自带函数计算斯皮尔曼相关系数时&#xff0c;需要保证X、Y均为列向量&#xff1b;Matlab自带的函数是通过公式二计算序列的斯皮尔曼相关系数的。



推荐阅读
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 本文整理了Java中com.evernote.android.job.JobRequest.getTransientExtras()方法的一些代码示例,展示了 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 关于两个RTC时钟闹钟,求助?
    在系统启动2秒后,实时时钟(RTC)每3秒钟产生一个闹钟事件(Alarmevent),使系统进入停机模式以降低功耗设置实时时钟。 ... [详细]
  • mysql如何插入一列数据
    mysql插入一列数据的方法:首先打开终端;然后给表添加一列,代码为【altertableuseraddgendervarchar(2);】,其中列名为gender,类型为var ... [详细]
  • Harmony 与 Game Space 达成合作,在 Shard1 上扩展 Web3 游戏
    旧金山20 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • 【具体报错信息】ErrorparsingD:\android-sdks\system-images\android-22\android-wear\armeabi-v7a\devi ... [详细]
author-avatar
淡漠初夏0_176
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有