Pearson、Spearman 相关性分析使用

介绍

Pearson 积差相关系数衡量了两个定量变量之间的线性相关程度。 用来衡量两个数据集的线性相关程度,仅当一个变量的变化与另一个变量的比例变化相关时,关系才是线性的。

Spearman等级相关系数则衡量分级定序变量之间的相关程度。斯皮尔曼相关系数不关心两个数据集是否线性相关,而是单调相关。它是基于每个变量的排名值,而不是原始数据,所以斯皮尔曼相关也叫等级相关或者秩相关(即rank)。

简单一句话概括:Pearson 处理变量的数据原始值,而Spearman 处理数据排序值(需要先做变换:transform)

使用比较

皮尔逊 = +1,斯皮尔曼 = +1

皮尔逊 = +0.851,斯皮尔曼 = +1

皮尔逊 = −0.093,斯皮尔曼 = −0.093


如果关系是一个变量减小,而另一个变量增加,但数量不一致,则皮尔逊相关系数为负但大于 −1。在这种情况下,斯皮尔曼系数仍然等于 −1

皮尔逊 = −0.799,斯皮尔曼 = −1

救救孩子!Spearman、Pearson相关系数傻傻分不清? - A Byte of Biology

# 在100-130的范围随机生成30个点
a <- sample(100:130, 30)
b <- sample(100:130, 30)
df <- data.frame(a, b)
# 画散点图,线性拟合
ggplot(df, aes(x=a, y=b)) + geom_smooth(method="lm") + geom_point() + xlim(0, 140) + ylim(0, 140)
# 计算Pearson和Spearman相关系数
cor.test(a, b, method="pearson")
cor.test(a, b, method="spearman")
##########################################
# 再往坐标(0, 0)追加一个点
a <- append(a, 0)
b <- append(b, 0)
df <- data.frame(a, b)
# 再次画散点图,线性拟合
ggplot(df, aes(x=a, y=b)) + geom_smooth(method="lm") + geom_point() + xlim(0, 140) + ylim(0, 140)
# 再次计算Pearson和Spearman相关系数
cor.test(a, b, method="pearson")
cor.test(a, b, method="spearman")

Pearson相关系数要求统计资料要是连续型变量,并且符合正态分布,而Spearman相关系数没有这个要求,Pearson相关系数在出现奇异值,或者长尾分布的时候稳定性差,不太靠,而Spearman要相对稳健很多。

下图可以看出,只需要增加一个离群的点,就可以让Pearson相关系数从“不相关”变为“强相关”,所以这个时候Spearman相对更稳。

除了单纯看基因调控的相关性,有些同学是拿到测序数据之后,想分析转录组样本重复相关性。这个时候就有理由假设样本重复线性相关,所以用得比较多的还是Pearson相关系数。但其实转录组测序的表达量不符合正态分布,并且通常都有个很长的“尾巴”(一些极高表达的基因),会导致Pearson相关系数分析的结果可靠性不佳。但也不能因为转录组不符合正态分布就换用Spearman,这样统计效力更差了。可以在做Pearson相关性分析之前先对数据做变换,另外应该加上其他方法进行验证,比如聚类,不要仅仅使用Pearson相关系数。

参考:

1:数学笔记:pearson correlation coefficient VS spearman correlation coefficient_pearson and spearman correlation coefficients-CSDN博客

2:pearson 和spearman的区别~? - 知乎 (zhihu.com)

3:相关性分析和作图-CSDN博客

4:救救孩子!Spearman、Pearson相关系数傻傻分不清? - A Byte of Biology

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/278695.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从“原神“出知名题,谈面试最佳实践

写在前面 这是一道经典到几乎每个人&#xff08;刷题量超过 200&#xff09;都见过的 Hard 题。 即使在算法内卷到"网络流"都会考的今年&#xff0c;也还是各大互联网的最爱&#xff08;或是面试官脑内题库没有更新 &#x1f923; 据同学们反映&#xff0c;在 抖音提…

【CDP】CDP 集群通过Knox 访问Yarn Web UI,无法跳转到Flink Web UI 问题解决

一、前言 记录下在CDP 环境中&#xff0c;通过Knox 访问Yarn Web UI&#xff0c;无法跳转到Flink Web UI 的BUG 解决方法。 二、问题复现 登录 Knox Web UI 找到任一 Flink 任务 点击 ApplicationMaster 跳转 Flink WEB UI 出问题 内容空白&#xff0c;无法正常跳转到…

Android APP 常见概念与 adb 命令

adb 的概念 adb 即 Android Debug Bridge 。在窗口输入 adb 即可显示帮助文档。adb 实际上就是在后台开启一个 server&#xff0c;会接收 adb 的命令然后帮助管理&#xff0c;控制&#xff0c;查看设备的状态、信息等&#xff0c;是开发、测试 Android 相关程序的最常用手段。…

hadoop3.3.4安装及启动

1.虚拟机的安装 此处我选择的是VMware,激活码可以百度搜索&#xff0c;安装过程比较缓慢&#xff0c;需要耐心等待 --------------------------------------------------------------------------------------------------------------------------------- 2.创建新的虚拟机…

翻译: 为什么需要微调大模型 Why Fine-tuning LLM

虽然RAG提供了一种方式来给大型语言模型提供额外的信息&#xff0c;但还有另一种叫做微调&#xff08;fine-tuning&#xff09;的技术&#xff0c;也是给它更多信息的一种方式。特别是&#xff0c;如果你有的上下文比大型语言模型的输入长度或上下文窗口长度更大&#xff0c;那…

uniGUI学习之UniTreeview

UniTreeview中能改变一级目录的字体和颜色 function beforeInit(sender, config) { ID"#"config.id; Ext.util.CSS.createStyleSheet( ${ID} .x-tree-node-text{color:green;font-weight:800;} ${ID} .x-tree-elbow-line ~ span{color:black;font-weight:400;} ); }

数据分析的基本步骤

了解过数据分析的概念之后&#xff0c;我们再来说下数据分析的常规步骤。 明确目标 首先我们要确定一个目标&#xff0c;即我们要从数据中得到什么。比如我们要看某个指标A随时间的变化趋势&#xff0c;以期进行简单的预测。 数据收集 当确定了目标之后&#xff0c;就有了取…

UniGUI学习之UniImage

UniImage图片填上文字 procedure TMainForm.UniButton2Click(Sender: TObject); Varbmp: tBitmap;ui: TUniImage; Beginui : UniImage2;If ui.Picture.Graphic <> nil Then Beginbmp : tBitmap.Create;bmp.Assign(ui.Picture.Graphic);ui.Picture.Bitmap.Assign(bmp);bm…

第二届“奇安信”杯网络安全技能竞赛Reverse | pyre(需要用到反编译工具 pyinstxtractor.py)

赛题描述 这种exe文件怎么调用py的库&#xff1f; 题目附件&#xff1a;&#xff08;下载可能会有问题&#xff0c;记得直接跳过下载就可以了&#xff09; 抱歉无法处理您这个问题哦&#xff0c;您可以换个问题 PyInstaller Extractor 解包 适用场景 制作exe后丢失源代码 前…

elasticsearch|大数据|kibana的安装(https+密码)

前言&#xff1a; kibana是比较好安装的&#xff0c;但https密码就比较麻烦一些了&#xff0c;下面将就如何安装一个可在生产使用的kibana做一个简单的讲述 一&#xff0c; kibana版本和下载地址 这里我想还是强调一下&#xff0c;kibana的版本需要和elasticsearch的版本一…

【Linux】dump命令使用

dump命令 dump命令用于备份文件系统。使用dump命令可以检查ext2/3/4文件系统上的文件&#xff0c;并确定哪些文件需要备份。这些文件复制到指定的磁盘、磁带或其他存储介质保管。 语法 dump [选项] [目录|文件系统] bash: dump: 未找到命令... 安装dump yum -y install …