一文搞懂Q-Q plot图的含义
欢迎关注”生信修炼手册”!
Q-Q plot是关联分析结果可视化的一种经典方案,这里的Q代表quantile, 分位数的意思,关联分析的Q-Q plot示意如下
x轴代表期望p值,y轴代表实际p值。在解释这张图的含义之前,有必要先来了解下什么是分位数。
分位数,也称之为分位点,最常见的有中位数,四分位数等。以中位数为例,将数据集从小到大排列后,50%区域对应的点就是中位数。同理,四分位数分别对应25%, 50%, 75%, 依次称之为第一四分位数,第二四分位数,第三四分位数,其中第二四分位数就是中位数了,3个四分位数将数据划分为了4个区间,这也是其名字中四的由来。
四分位数只是分位数中的3个点,起始分位数可以是任何一个比例,比如10%的分位数,20%的分位数。给定一个数据集,在R中计算分位数的代码如下
分位数可以很好的展示数据从最小值到最大值的跨度变化,在分位数点取值足够多的情况下, 可以用来代表整体数据。
Q-Q plot就是基于这样的原理,分别计算两个数据的分位数,然后绘制散点图。可以想象,如果两个总体完全一致,其Q-Q plot是一条y=x的直线,代码如下
结果如下图所示
在此基础上进一步推论,如果两个数据符合同一分布,则其分位数应该符合线性关系,验证如下
输出结果如下
上述代码中x和y由两个范围不同的均匀分布抽样产生,可以看到其Q-Q plot近似一条直线。通过这个例子可以看到,Q-Q plot的核心作用就是比较两个数据的分布是否一致。上述代码只是用于展示Q-Q plot的原理,分位数的求解过程本质是将数据从小到大排序之后计算百分比,在实际绘制Q-Q plot图示,直接将两个数据从小到大排序之后绘图就可以了,代码如下
输出结果如下
可以看到,趋势和用分位数来画是一样的。Q-Q plot适用范围广泛,可以比较任意两个数据集的分布。常见的用法有两种,第一种直接拿两个真实的数据集进行比较,查看分布是否一致, 第二种那一个真实数据,和一个基于理论分布计算的数据来比较,查看是否符合理论分布。
关联分析的Q-Q plot就是第二种用法,, 理论分布是均匀分布,拿实际关联分析的p值来和理论分布进行比较。为什么理论分布是均匀分布呢?
要判断一个数据的理论分布,最直观的方式是绘制实际数据的密度分布图,GWAS中p值分布的密度直方图如下
在上图中,每个bin内的密度基本是一样的,是典型的均匀分布的特征。将实际数据的密度分布图和各种理论分布的密度分布图进行比较,可以快速确定候选的理论分布。从峰型的比较来看,也只有均匀分分布和该数据的分布接近。用qqman中的数据集展示Q-Q plot绘制的方法,代码如下
输出结果如下
Q-Q pot绘制非常简单,三句代码就可以搞定。绘图时对p值做了-log10转换,所以图中越靠右的点代表的是p值显著的snp位点。可以看到左侧的点基本服从均匀分布,而显著的snp位点位于标准直线的上方,说明p值显著的点导致了实际的分位数小于了理论的分位数,示意图如下
说明在较小的p值范围内,实际数据的分布更加紧密,当检测到关联信号时,关联位点的p值肯定较为紧密和偏小,数据产生上图的分布是正常现象。如果完全服从均匀分布,即基本和直线重合,说明p值的产生就是一个随机性的过程,gwas分析的可信度较低。
·end·
—如果喜欢,快分享给你的朋友们吧—
扫描关注微信号,更多精彩内容等着你!
一文搞懂Q-Q plot图的含义相关推荐
- css股票曲线图图解,如何看懂股票曲线图,一文搞懂这些曲线所代表的含义!
原标题:如何看懂股票曲线图,一文搞懂这些曲线所代表的含义! 在股票技术分析中,我们经常要分析K线图,分时图等等,有些新手在入门的时候常常把两者弄混,所以统称它们为曲线图,实际它们就是K线图和分时图了, ...
- 一文搞懂css中精灵图如何使用
文章目录 前言 一.精灵图是什么? 1.概念: 2.图片示例: 二.为什么使用精灵图? 1.用户体验而言: 2.就开发者而言: 3.就服务器而言: 三.怎样使用精灵图 1.background-pos ...
- 一文搞懂RNN(循环神经网络)
基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...
- 一文搞懂 Python 的 import 机制
一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...
- 一文搞懂如何使用Node.js进行TCP网络通信
摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...
- 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass
本文将对蓝图类UBlueprint的几个UClass成员变量NativeClass.GeneratedClass.BlueprintClass.ParentClass进行比较深入的讲解,看完之后对蓝图 ...
- 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下
B站实操视频更新 跟着拉面学习AWS--EC2, IGW, RT, NAT, SG 简介 长文多图预警,看结论可以直接拖到"总结"部分 本文承接上一篇文章介绍以下 AWS 基础概念 ...
- 一文搞懂 Cocos Creator 3.0 坐标转换原理
一文搞懂 Cocos Creator 3.0 坐标转换原理 屏幕坐标 UI 触点坐标 UI 多分辨率适配方案 UI 触点获取 不同坐标之间的转换 屏幕坐标与 3D 节点世界坐标互转 3D 节点之间的坐 ...
- 一文搞懂指标采集利器 Telegraf
作者| 姜闻名 来源|尔达 Erda 公众号 导读:为了让大家更好的了解 MSP 中 APM 系统的设计实现,我们决定编写一个<详聊微服务观测>系列文章,深入 APM 系统的产品.架构 ...
- 《一文搞懂NMS发展历程》Soft-NMS、Weighted NMS、IoU-Net、Softer-NMS、Adaptive NMS、DIoU-NMS
<一文搞懂NMS发展历程>Soft-NMS.Weighted NMS.IoU-Net.Softer-NMS.Adaptive NMS.DIoU-NMS 文章目录 <一文搞懂NMS发展 ...
最新文章
- CVPR2020论文解析:视频语义检索
- pythonbool运算教学_python,_pandas Series bool与运算,python - phpStudy
- VBA最常用的基础代码、基础功能写法总结
- VNC viewer远程连接linux桌面
- SignalR系列教程:SignalR快速入门
- C++debug调试出现heap corruption detected: after normal block 可能的原因
- MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?
- 计算机网络基础系列(八)TCP三次握手、四次挥手、可靠数据传输、拥塞控制和UDP
- 周鸿祎的“流氓”可否借鉴?
- python编程正方形面积_编程里面的算法真的很难吗?
- Web渗透测试-Xss跨站脚本攻击(Cross Site Scripting)
- 《读书的力量》读后感作文4000字
- 你的手机浏览器不支持webgle_Chrome 不支持 WebGL 怎么办?
- 三大微分中值定理与两大积分中值定理
- Android计算标准BMI值
- aecc2019能装saber吗_【2018年10月重磅】After Effects CC2019 分享新功能介绍
- vue 使用fetch 出现问题解决以及 相应知识学习
- 一键解锁iPhone屏幕密码
- 五、Linux系统中的权限管理
- JAVA 使用 Random 实现概率 可控 抽奖算法