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·