说一点跟超几何分布检验无关的事情
Y叔昨天我们公众号推文后5分钟推出这个吐槽文,打了我个措手不及~
我们的争论就两点:
首先,丢弃未注释的基因对p值的影响大吗?
其次,这个p值有决定性作用吗?
在我们团队整理生信编程实战练习题的时候遇到了一个问题,就是超几何分布检验是否需要把我们的背景基因和差异基因进行过滤,就是丢弃那些没有被数据库收录的基因!
我不是很确定,只好求助业界前辈Y叔,Y叔语重心长的给我讲解了其中曲折,还给出了他博客里面关于这一点的详细解释:http://guangchuangyu.github.io/2014/08/why-clusterprofiler-fails/
看完全文其实我已经明白了Y叔说丢弃掉那些没有被注释到的基因的理由了!
而我以前一直以程序猿的思维来理解这个问题,就是每个通路单独进行超几何分布检验,然后循环一下即可。那么对具体的某一个通路来说,我们的基因要么属于这个通路,要么不属于这个通路。 不应该把所有通路的基因取一个并集,叫做通路注释基因集。不过这个只是我个人看法,我已经没办法肯定什么是对,什么是错了。
回到我们的争论上面:
丢弃与否的P值差异到底大不大的问题!
我随机模拟的背景基因和差异基因如下:
上面的代码可以在R里面直接运行,得到测试数据,然后你们可以拿到各种做富集分析的网页或者工具里面看看结果。
用很简单的R代码,就可以看到背景基因和差异基因是如何被kegg数据库过滤掉的!
很明显,kegg数据库的过滤,对背景基因和差异基因的效果是一样一样的!!!
本来是300个差异基因,背景是hgu95av2芯片涉及到的8596个基因!
如果用2011.03.15版本的kegg的基因进行过滤,那么差异基因就只有130个了,背景基因也相应的减少到3802个!!!
如果用2017.03.03版本的kegg的基因进行过滤,那么差异基因就只有150个了,背景基因也相应的减少到4392个!!!
我们有理由相信,随着时间的前进,总有一天,差异基因和背景基因,都不会被过滤了,因为他们被注释完全了!!!
现在过滤,只是因为kegg这个数据库收录的基因很有限而已,到目前为止也就7234个基因!!!
这就是Y叔在公众号怼我那一点!!!!
不是就当n也翻倍~~~而是,对我这个随机模拟情况来说,本来就是恰好对背景基因和差异基因过滤的程度是一样一样的!
我之所以给他那个结论,就是因为我发现,的确是差别不大!!!
那么现在回答第二个争论点,p值有决定作用吗?
我的答案是没有!
举个例子,100基因富集,其中15个基因都在某个家族,p值不显著,另外四个基因另一个通路p值显著,但是我还是会考虑那15个基因的,因为它们数量足够部分代表这个基因集。
再举个例子,大家喜欢用0.05来一刀切,难道0.049和0.051差别就大了??这个搞法就不对, 数据需要详细理解,nature上各种文章讨论p值不科学的例子我就不提了,很多人对数据分析人员的要求就是给他一个分界点,他们不管合不合理啊。