美文网首页
浅谈富集分析的Pvalue

浅谈富集分析的Pvalue

作者: 群体遗传学 | 来源:发表于2020-05-08 17:25 被阅读0次

引言

今天给大家带来一个关于“撒币“的问题,说起”撒币“,最经典就是二项分布,也就是你拿起一枚硬币抛向空中,当它转体n个360°,最后华丽的落在地上,出现正面或者反面的概率。具体的一些计算公式各位可自行找度娘索要。

在这里插入图片描述

除“撒币“问题,在数学中也有一个很好玩的实验,叫“取球实验”,也是就是在盒子里有黑球黑球黑球黑球白球白球白球…,当我们取n个球时,黑球数目为m时的概率,这个实验换个高级点的词汇,就是超几何分布。超几何分布和二项分布同为离散概率分布,超几何分布描述的是不放回的取样,而二项分布的话是放回取样。

超几何分布

在这里,我们为什么要提这个超几何分布呢,这就要从我们的转录组差异基因的下游分析说起。在差异基因下游分析中,GO富集分析和KEGG分析是最常见的,其Pvalue计算都是基于超几何分布。

首先,我们来看超几何分布的计算公式:


超几何分布计算公式

在这里呢,我们可以将N,M,n和k转化为的差异基因的参数,这也便于我们理解怎么计算某个GO term的Pvalue。

  • N:基因组中与该GO term同属于同一层面(BP、CC或者MF)的基因数目
  • M:基因组中含有该GO term的基因数目
  • n:差异基因中与该GO term同属于同一层面(BP、CC或者MF)的基因数目
  • k:n中含有该GO term的基因数目

Python计算超几何分布

目前python中Numpy的random包中提供了产生超几何分布结果的函数:
numpy.random.hyermetric(ngood, nbad, nsample, size=None)
具体可见这里.

  • ngood:做出好的选择的数量,也就是上面的含有该GO term的基因数目,即M
  • nbad:做出坏的选择的数目,也就是上面的不含有该GO term的基因数目,即N-M
  • nsample:取样的数目,也就是差异基因的数目,即n
  • size:采样的组数,即试验组数组数

上面的hypermetric()函数返回一组size大小的数组,数组中的每个数是在一组采样中合格产品的数量,即上面的k。
如:

s=np.random.hypergeometric(10,20,5,size=1000)
print(s)
p1=sum(s>=4)/1000
print(p1)

返回结果如下:


代码返回结果

我们可以看到s返回的一个列表,包含了1000组试验中抽到好样品的数目。其次,当我们选取好样品数>=4时,概率为0.036。

根据这个原理的话,我们也可以自定义一个函数,用于计算超几何分布的概率。

def p_cal(N,M,n,k,x):
    goodList=[]
    knum=0
    for i in range(0,x):            #循环x次,与hypergeometric的size参数相同
        good = 0
        for j in range(0,n):
            random_num=random.randint(1,N)  #随机生成1-N的随机数,当它<=M时,认为是好的样品
            if random_num<=M:
                good+=1
        goodList.append(good)
        if good>=k:
            knum+=1
    #return(goodList)  ##也可以返回类似上面s的列表
    return(knum/x)

这里的话我们就是采用了与超几何分布的相同的参数,我们利用相同的数字来测试:

s=np.random.hypergeometric(10,20,5,size=1000)
p1=sum(s>=4)/1000
print(p1)
p2=p_cal(30,10,5,4,1000)
print(p2)
p3=p_cal(30,10,5,5,1000)
print(p3)

输出结果:


Pvalue

我们可以看到概率相差不大,这表明可以达到超几何分布概率的计算。当知道怎么算pvalue,我们也离富集分析更进一步啦!


[图片上传失败...(image-9ad0db-1588929912338)]

相关文章

  • 浅谈富集分析的Pvalue

    引言 今天给大家带来一个关于“撒币“的问题,说起”撒币“,最经典就是二项分布,也就是你拿起一枚硬币抛向空中,当它转...

  • 富集分析

    写在前面: 1某些富集代码 |关于GSEA|某些主流富集分析工具 两类富集分析 A:差异基因富集分析(不需要...

  • 【R画图学习3.1】富集气泡图

    做生信中,最常做的一个工作就是富集分析,例如GO/Pathway富集分析等,而GO/Pathway分析富集的结果目...

  • 学习:StatQuest-Fisher’s Exact test

    前言 这次我们谈论下富集分析的检验,富集分析通常是来看我们感兴趣的内容知否在某个数据集中有富集 富集分析算法 这里...

  • miRNA功能富集分析

    相信大家都做过基因的功能富集分析,小编前面也花了不少篇幅给大家介绍GO和KEGG富集分析 ☞GO和KEGG富集分析...

  • (日常记录)GSEA富集分析软件的使用

    常用富集分析包括GO富集、KEGG富集,这两种富集方式都是基于已经通过算法确定差异倍数的差异基因来分析的,而对于一...

  • GSEA(Gene Set Enrichment Analysi

    富集分析方法 ORA Over-representation analysis过表达分析,常见的是GO富集分析和K...

  • 将GO、Pathway富集结果整合在一张高颜值圆圈图上

    富集分析是生物医学论文中非常常见的一类分析,例如GO富集分析,Pathway富集分析等。其结果一般包括以下几个要素...

  • LOLA:overlap analysis for enrich

    前言   说到富集分析,大家肯定第一时间会想到GO、KEGG、GSEA等常见的基因富集分析。那什么是基因富集分析呢...

  • 转录因子富集分析

    转录因子富集分析 转录因子因子富集分析背后的原理与GO,KEGG等富集分析是一样的。 这里还是使用Y叔的R包“cl...

网友评论

      本文标题:浅谈富集分析的Pvalue

      本文链接:https://www.haomeiwen.com/subject/rbfqnhtx.html