欢迎关注”生信修炼手册”!

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图的含义相关推荐

  1. css股票曲线图图解,如何看懂股票曲线图,一文搞懂这些曲线所代表的含义!

    原标题:如何看懂股票曲线图,一文搞懂这些曲线所代表的含义! 在股票技术分析中,我们经常要分析K线图,分时图等等,有些新手在入门的时候常常把两者弄混,所以统称它们为曲线图,实际它们就是K线图和分时图了, ...

  2. 一文搞懂css中精灵图如何使用

    文章目录 前言 一.精灵图是什么? 1.概念: 2.图片示例: 二.为什么使用精灵图? 1.用户体验而言: 2.就开发者而言: 3.就服务器而言: 三.怎样使用精灵图 1.background-pos ...

  3. 一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  4. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

  5. 一文搞懂如何使用Node.js进行TCP网络通信

    摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...

  6. 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass

    本文将对蓝图类UBlueprint的几个UClass成员变量NativeClass.GeneratedClass.BlueprintClass.ParentClass进行比较深入的讲解,看完之后对蓝图 ...

  7. 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下

    B站实操视频更新 跟着拉面学习AWS--EC2, IGW, RT, NAT, SG 简介 长文多图预警,看结论可以直接拖到"总结"部分 本文承接上一篇文章介绍以下 AWS 基础概念 ...

  8. 一文搞懂 Cocos Creator 3.0 坐标转换原理

    一文搞懂 Cocos Creator 3.0 坐标转换原理 屏幕坐标 UI 触点坐标 UI 多分辨率适配方案 UI 触点获取 不同坐标之间的转换 屏幕坐标与 3D 节点世界坐标互转 3D 节点之间的坐 ...

  9. 一文搞懂指标采集利器 Telegraf

    作者| 姜闻名 来源|尔达 Erda 公众号 ​ 导读:为了让大家更好的了解 MSP 中 APM 系统的设计实现,我们决定编写一个<详聊微服务观测>系列文章,深入 APM 系统的产品.架构 ...

  10. 《一文搞懂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发展 ...

最新文章

  1. CVPR2020论文解析:视频语义检索
  2. pythonbool运算教学_python,_pandas Series bool与运算,python - phpStudy
  3. VBA最常用的基础代码、基础功能写法总结
  4. VNC viewer远程连接linux桌面
  5. SignalR系列教程:SignalR快速入门
  6. C++debug调试出现heap corruption detected: after normal block 可能的原因
  7. MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?
  8. 计算机网络基础系列(八)TCP三次握手、四次挥手、可靠数据传输、拥塞控制和UDP
  9. 周鸿祎的“流氓”可否借鉴?
  10. python编程正方形面积_编程里面的算法真的很难吗?
  11. Web渗透测试-Xss跨站脚本攻击(Cross Site Scripting)
  12. 《读书的力量》读后感作文4000字
  13. 你的手机浏览器不支持webgle_Chrome 不支持 WebGL 怎么办?
  14. 三大微分中值定理与两大积分中值定理
  15. Android计算标准BMI值
  16. aecc2019能装saber吗_【2018年10月重磅】After Effects CC2019 分享新功能介绍
  17. vue 使用fetch 出现问题解决以及 相应知识学习
  18. 一键解锁iPhone屏幕密码
  19. 五、Linux系统中的权限管理
  20. JAVA 使用 Random 实现概率 可控 抽奖算法

热门文章

  1. IT龙门阵161期预告:金山办公软件副总裁章庆元谈WPS的互联网
  2. java typeof_JavaScript中typeof知多少?
  3. jetson nano安装jtop查看资源利用率、jetson nano安装pip3
  4. java+mysql实现简单电影影片管理系统
  5. 2019年EI收录的会议(计算机/网络通信方向)
  6. STM32——RNG随机数
  7. 垂直线在html中怎么做,在html页面的右侧和左侧添加两条垂直线(矩形)
  8. jQuery实现滑动解锁
  9. 怎样画化学实验装置图
  10. BUPT CSAPP lab3 缓冲区溢出