Phylolab lonk: https://book.phylolab.net/binf8441/chap7.html
Boferroni Correction
Bonferroni校正是一种常用的多重比较问题解决方法,其目的是控制家族错误率(Family-Wise Error Rate,FWER),即在所有假设检验中,至少有一次犯第一类错误(Type I error,即错误地拒绝了真实的零假设)的概率。Bonferroni校正通过调整p值的阈值来实现这一目标,从而减少因多重比较而导致的假阳性结果的风险。
基本原理
在单一假设检验中,如果设定显著性水平为α(例如0.05),那么犯第一类错误的概率是5%。但是,当同时进行多个独立的假设检验时,犯至少一次错误的概率会随着检验次数的增加而增加。例如,如果进行10次独立的检验,那么至少有一次犯错误的概率将不再是5%,而是1 - (1 - 0.05)^10 ≈ 0.41,即41%。
Bonferroni校正通过将原始的显著性水平α除以进行的检验次数m来调整p值的阈值,从而控制FWER。这样,只有当调整后的p值小于或等于新的阈值时,结果才被认为是统计显著的。
计算方法
假设有m个独立的假设检验,原始的显著性水平为α,那么Bonferroni校正后的显著性水平α’为:
\alpha’ = \frac{\alpha}{m}
其中,m是检验的次数。只有当原始p值小于或等于α’时,相应的假设检验结果才被认为是统计显著的。
例子
假设有一个研究,需要对10个基因的表达差异进行假设检验,显著性水平设定为0.05。如果不进行校正,那么每个基因的p值阈值为0.05。但是,使用Bonferroni校正后,每个基因的p值阈值将调整为0.05/10 = 0.005。这意味着,只有当某个基因的p值小于或等于0.005时,才能认为该基因的表达差异在统计上是显著的。
优缺点
优点:
• 简单易行,容易理解和实施。
• 对于小规模的多重比较问题,控制FWER的效果较好。
缺点:
• 对于大规模的多重比较问题,过于保守,可能导致很多真实的显著结果被忽略(即增加第二类错误,Type II error的风险)。
• 减少了研究的统计能力,使得发现真实效应变得更加困难。
由于这些缺点,Bonferroni校正在面对大量多重比较时通常不被推荐。在这种情况下,其他方法如Benjamini-Hochberg方法或Holm-Bonferroni方法等可能更为合适,因为它们在控制假阳性率的同时,提供了更好的统计能力。
FDR
FDR(False Discovery Rate)调整后的p值是一种在多重假设检验中控制假阳性率的方法。它允许在所有被认为是统计显著的结果中,有一定比例的假阳性结果。例如,如果设定FDR为5%,那么意味着在所有被标记为统计显著的结果中,我们预计只有5%是假阳性的。
FDR与p值的主要区别在于,p值是在零假设为真的前提下,观察到当前或更极端结果的概率。而FDR是所有被错误判定为显著的结果中,期望的比例。因此,FDR提供了一种在进行多重比较时,控制假阳性结果比例的方法。
在实际应用中,FDR调整后的p值(也称为q值)可以通过多种方法计算,其中最常用的是Benjamini-Hochberg程序。这个程序首先将所有的原始p值从小到大排序,然后通过一定的公式计算出调整后的p值,以控制FDR在设定的水平以下。具体来说,对于排序后的第i个p值,其调整后的p值是通过将原始p值乘以总测试次数m除以当前的排名i来计算的。如果这个调整后的p值小于或等于预先设定的FDR水平(例如0.05),那么这个结果就被认为是统计显著的。
例如,如果我们有一组p值,并且我们想要控制FDR在5%以下,我们会找到最大的整数i,使得第i个p值乘以总测试次数m除以i小于或等于0.05。所有小于或等于这个阈值的p值都被认为是统计显著的,并且它们的FDR不会超过5%。
在R语言中,可以使用p.adjust函数来计算FDR调整后的p值。例如,如果我们有一组p值,并且我们想要使用Benjamini-Hochberg方法来控制FDR,我们可以这样做:
p <- c(0.0003, 0.0001, 0.02)
adjusted_p <- p.adjust(p, method = “fdr”, n = length§)
这将返回每个p值的FDR调整后的值。需要注意的是,FDR调整后的p值和原始p值的顺序是一样的,但是它们的值会更大,以反映多重比较的校正。
总的来说,FDR调整后的p值是一种在多重比较情况下,平衡假阳性和假阴性率的有用工具,它允许研究者在保持一定比例的假阳性结果的同时,识别出更多的真实显著结果。