做生信分析最烦人的就是啥?就是看着一堆差异基因,P值一个个小得吓人,结果拿去做GO富集,发现富集出来的东西跟你的实验结果半毛钱关系没有,或者干脆就是那些housekeeping genes在刷存在感。这时候你心里肯定在骂娘:这GEO2R到底靠不靠谱?特别是那个P值,到底要不要矫正?
说实话,很多新手小白第一次用GEO2R,看到那个Adjusted P value(校正后的P值)和P value(原始P值)差了好几个数量级,第一反应就是懵圈。有人觉得校正后P值都大于0.05了,那这分析不是废了吗?有人又觉得不校正就是假阳性泛滥。今天咱们就掰开了揉碎了聊聊,GEO2R分析的P值需要矫正吗这个问题,真不是简单的Yes or No。
先说结论,必须矫正,而且是一定要矫正。别听那些说“样本量小就不需要校正”的鬼话。GEO数据库里的数据,很多都是微阵列芯片数据,或者是小样本的RNA-seq数据。当你一次性检测成千上万个基因时,根据统计学原理,哪怕所有基因都没差异,纯粹靠运气,也会有不少基因的P值小于0.05。这就是多重假设检验带来的问题。如果你不矫正,你筛选出来的那些“显著差异基因”,大概率是一堆噪音。所以,GEO2R分析的P值需要矫正吗?答案是肯定的,不然你就是在玩火。
但是,矫正也有讲究。GEO2R默认用的是Benjamini-Hochberg方法,也就是控制FDR(错误发现率)。这个方法在生物信息学里算是比较温和且常用的。它不像Bonferroni校正那么严厉,Bonferroni会把P值乘以基因总数,对于几万个基因来说,校正后的P值基本都会变成1,那样你就一个基因都选不出来了,那分析还有什么意义?
那具体怎么操作呢?别光听我啰嗦,直接上步骤,照着做就行。
第一步,进去GEO2R界面,上传你的GDS数据集或者GSE系列数据。这里有个坑,很多人直接选GSE,结果发现样本分组搞不定。最好找那种已经整理好GDS的,或者确保你的GSM样本信息里分组明确。
第二步,设置对比组。在“Compare”那里,选你的病例组和对照组。注意,这里要仔细检查样本标签,别把健康人和病人搞反了,不然你得到的差异基因全是反的,后面哭都来不及。
第三步,运行分析。点“Analyze”按钮。这时候你会得到一堆结果。别急着往下拉,先看那个Table。
第四步,筛选基因。这是最关键的一步。很多人只看P value < 0.05,这是大错特错。你要看的是Adj P value。通常建议设置Adj P value < 0.05,同时Fold Change(倍数变化)> 2。为什么要有Fold Change?因为有些基因P值很小,但变化倍数只有1.1倍,这种在生物学意义上往往没太大意义,属于统计显著但无生物学显著。
这里我要吐槽一下,GEO2R的界面确实有点老旧,操作起来不如R语言灵活。如果你发现校正后的P值还是很大,或者筛选出来的基因太少,别慌。这可能是样本量太小导致的统计效能不足。这时候,你可以尝试放宽一点Adj P value的标准,比如到0.1,或者结合Fold Change一起看。但这只是权宜之计,最好还是找更多的样本或者用其他方法验证。
还有个容易被忽视的点,就是异常值。GEO2R虽然能自动处理,但有时候某个样本的芯片质量极差,会拉偏整个结果。在分析前,最好先看看PCA图或者聚类图,如果有明显的离群样本,手动排除掉,结果会更靠谱。
最后,别忘了验证。GEO2R只是初步筛选,你筛选出来的核心基因,一定要去其他数据库比如TCGA或者GEO里的其他独立数据集里验证一下。如果能在另一个数据集里重复出来,那你的结论才站得住脚。
总之,GEO2R分析的P值需要矫正吗?当然需要。不矫正就是耍流氓。但也不要迷信校正后的P值,要结合生物学背景、倍数变化以及独立验证来看。生信分析不是点鼠标那么简单,它需要你懂统计,更要懂生物学。别为了发文章而分析,要为了搞清楚机制而分析。希望这篇干货能帮你在分析路上少踩点坑,毕竟头发已经够少了,别再为这些基础问题秃头了。