重剑无锋!15种相关分析算法,总有一款适合你!

article/2025/10/15 0:57:23

相关系数(Correlation coefficient)可用于评估两个变量之间的线性关系,它的值在-1到1之间,-1或1代表完美的负相关和正相关,0表示不存在线性关系。

计算相关系数的方法种类繁多,各有自己的定义以及适用情况

面对相同的数据,如果采用不同的相关分析,会得出不同的相关系数,如下图: 

图片来源: [1]

一般来说,如果没有特别注明,我们所说的相关系数,通常指的是Pearson'r,由Pearson相关(Pearson’s correlation)计算得出。
不夸张的说,Pearson相关很可能是统计中被使用次数最多的方法。但它的使用也有诸多限制,比如两个变量需为连续变量,呈线性关系,无明显的极值,以及正态分布等。

第二种常见的相关分析方法应该是Spearman相关(Spearman's correlation),是一种非参数检验,受到的限制相对较少,可用于非正态分布的变量。

其实,掌握上述两种方法应该可以解决90%+以上的相关分析问题!

但是,小编接下来将会介绍15种相关分析算法的实操代码,助你在“相关分析”这个领域,可以“一览众山小”

马上进入操作部分


首先,安装R包{correlation}: 

接下来使用R自带的数据集“iris”作为实战演练的例子,想要使用Pearson相关计算“iris”的各个变量之间的相关系数,并且计算它们的95%置信区间,以及p值。
那该怎么办?
代码简单的有点恐怖

输出结果非常的简洁明了!

correlation()在默认情况下,将“iris”中的非连续变量“Species”剔除,只将其他四个连续变量分别进行两两的相关分析,使用的方法为Pearson相关,p值的计算使用了Holm(1979)方法进行多重校正。

此外,也可以采用不同的呈现结果的方法: 

 

那如何进行分组别的相关分析?
即在不同Species组别中进行相关分析,可以这么做: 

 这非常实用

除默认的Pearson相关外,correlation()共含有以下相关分析: 

  • Pearson's correlation (默认)

  • Spearman's rank correlation

  • Kendall's rank correlation

  • Biweight midcorrelation 

  • Distance correlation 

  • Percentage bend correlation 

  • Shepherd's Pi correlation 

  • Blomqvist' coefficient

  • Hoeffding's D

  • Gamma correlation

  • Gaussian rank correlation 

  • Point-Biserial and biserial correlation 

  • Polychoric correlation 

  • Tetrachoric correlation 

  • Auto (根据数据自动选择)

与上述相关方法相对应的R中代码字符如下,只需要选取对应的代码既可以进行想要的相关分析

  • "pearson"

  • "spearman"

  • "kendall"

  • "biweight"

  • "distance"

  • "percentage"

  • "shepherd"

  • "blomqvist"

  • "hoeffding"

  • "gamma"

  • "gaussian"

  • "biserial"

  • "polychoric"

  • "tetrachoric"

  • "auto"

如果想要更加详细的了解上述的相关分析方法,可以?correlation查看帮助文档,见下图:

 

 以使用spearman相关为例,只要将代码改为 method = "spearman" 即可使用:

 

好啦,今天的内容就到这里,感兴趣的小伙伴可以参考以下文献深入学习[1][2]。

如果有帮助,记得分享给需要的人

参考文献

[1]. Makowski et al., (2020). Methods and Algorithms for Correlation Analysis in R.
[2]. https://easystats.github.io/correlation/index.html
人工智能 大气环境 气象水文 土壤地下水视频教程汇总icon-default.png?t=M666https://mp.weixin.qq.com/s?__biz=MzUzMTczMDMwMw==&mid=2247500552&idx=4&sn=0d68a31fcdac77b47f1aec2c04e65f78&chksm=fabc9918cdcb100e706da62a720d2343106238ca2fc4a4aac001bad3e01d066d1355284fa6bd&token=1940394883&lang=zh_CN#rd


http://chatgpt.dhexx.cn/article/5vwt7BbI.shtml

相关文章

Keil MDK5中对结构体变量使用结构体成员运算符.后不自动显示结构体成员

MDK5在对结构体变量使用结构体成员运算符.时是会显示结构体成员的,如图所示: 但是有时候使用结构体成员运算符.时并不会出现结构体成员,导致这个问题的原因是没有将自己写的文件添加到工程之中,解决办法如下: 检查是…

【C语言】结构体的创建和使用与结构体内存对齐

结构体创建 前言结构体的声明全局声明特殊声明 结构体变量定义与成员初始化成员类型变量定义匿名结构体变量定义 结构体的自引用结构体成员的访问成员初始化操作符结构体传参 结构体内存对齐对齐数对齐规则 前言 在生活中我们要描述一个人时是不是要知道他的名字、性别、年龄啊…

C语言struct结构体内存

对齐规则: (i)结构体内 成员存储位置 的起始地址为成员自身长度与默认对齐值 中的较小者的整倍数。 (ii)结构体A嵌套在结构体B内,则A在B内存储位置起始地址为 A内成员最长长度 的整数倍。 (iii&…

嵌入式系统开发:C语言中的位结构体

在嵌入式开发中,经常需要表示各种系统状态,位结构体的出现大大方便了我们,尤其是在进行一些硬件层操作和数据通信时。但是在使用位结构体的过程中,是否深入思考一下它的相关属性?是否真正用到它的便利性,来…

keil中,编写结构体成员运算符(.)后不能自动弹出结构体成员

keil中,编写结构体成员运算符(.)后不能自动弹出结构体成员 解决办法: 1、确保源文件里面包含sys.h/stm32f10x.h文件(或者源文件里面的头文件也行) 2、把源文件路径加载到keil里面(魔术棒->C/…

c++中的结构体案例

结构体案例一 案例描述:学生做毕设项目,每名老师有5个学生,总共有3个老师,需求如下: 设计学生和老师的结构体,在老师的结构体中,有老师的姓名和一个存放了5名学生的数组作为成员学生的成员有姓…

C语言:位结构体

位结构体是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构体比按位运算符更加方便。 一、位结构—简介 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。 例如在存放一个开关量时,只有0和1 两种状…

C 语言编程 — 构造数据类型 — 结构体(struct)

目录 文章目录 目录结构体声明一个结构体类型定义一个结构体类型的变量定义一个结构体类型的指针变量结构体的成员结构体的内存分布 结构体 结构体(Structure)是一种由不同类型的数据成员组成的数据类型。通过定义结构体,我们可以将多个不同…

C语言结构体和其他构造数据类型详解

结构体和其他构造数据类型 结构体 “结构”是一种构造类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构既然是一种“构造”而成的数据类型,那么说明和使用之前必须先定义它,也就是构造它。 结…

C的实用笔记38——结构体的引入和定义

1.为什么要用结构体? 0、原因:实际开发中,我们需要将不同类型的数据组合成一个整体,这就是结构体。结构体是自创的类型。 1、查找一名学生信息的两种方案:在EXCEL表格和数据库中经常有这种情况,比方说一个…

7.IDA-创建结构体

结构体分类 结构体的一个显著特点在于,结构体中的数据字段是通过名称访问,而不是像数组那样通过索引访问。不好的是,字段名称被编译器转换成了数字偏移量。结果,在反汇编代码清单中,访问结构体字段的方式看起来与使用…

结构体的初步认识以及其内存的计算

目录 前言 结构体的定义 结构体的自引用 结构体的初始化 结构体内存的计算 前言 我们知道,通过不同的数据类型我们可以表达不同意义的数据,如长度宽度面积只需要定义一个 int 类型的数据就可以符合大部分的需求。但是,有些东西自存在就是一…

IDA创建结构体方法

1. ida是最好用的逆向分析工具 2.问题 如果你在使用IDA分析时遇到大量的结构体指针偏移形式的变量,肯定想根据自己的分析重命名结构体各项。 3.定义结构体 这是需要先找到结构体初始化的地方 这里记录了每一项的偏移量,记录了结构体总大小Ox110uLL。 …

手把手教你写单片机的结构体

手把手教你写单片机的结构体 摘要:听说还有好多学单片机的小伙伴不会用结构体?指针和结构体是学单片机必须要掌握的,如果你C语言掌握的不牢,单片机根本学不到精髓,只能完成一些低级的项目。看得懂结构体并且能够灵活运…

STM32基于Flash对结构体读写暨再认识结构体内存分配

目录 前言 认识结构体内存分布 模拟结构体搬运 实现FLASH的结构体读写 前言 记录本篇主要是记录我进行stm32学习中利用stm32的flash(闪存)读写结构体的总结。 认识结构体内存分布 结构体,主要要来存放我们的自定义类型的数据,结…

单片机的结构体

手把手教你写单片机的结构体 FROM8号线攻城狮 公众号 电子信息工程硕士在读,分享单片机、嵌入式linux、物联网等知识,致力于打造最硬核的嵌入式技术公众号。 半碗鸡汤,半碗杂粮。 摘要:听说还有好多学单片机的小伙伴不会用结构…

windows下mysql初始密码设置

转载自:http://blog.csdn.net/ofreelander/article/details/50802780 1.my-default.ini 改名my.ini 在解压的目录下面复制my-default.ini一份改名字为 my.ini。 2.打开 Windows 环境变量设置, 新建变量名 MYSQL_HOME , 变量值为 MySQL 安装目录路径, 在 环境变量 …

MYSQL修改初始化密码的方法

解决方法之一: “ ALTER USER rootlocalhost identified by 123456 ; ” 最近安装了mysql,在使用“ set password for rootlocalhostpassword(123456);”时会遇到 “ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that…

Centos下安装mysql查看初始密码并修改密码

题记:当我们在centos成功安装了mysql后,需要查看初始密码,大概率也需要自己修改密码。 一,查看mysql历时密码 cat var/log/mysqld.log二,进入到mysql mysql -u root -p按回车,然后再password:输入刚才所…

MySQL设置初始密码—注意版本mysql-8.0.30

MySQL设置初始密码—注意版本mysql-8.0.30 第一步:使用管理员模式下的命令行,进入mysql的所在文件下的bin目录; 第二步:输入命令mysql -u root -p; 第三步:这里第一次不用输入密码; 第四步: ALTER USER rootlocalhost…