假设检验与P是如何矫正的?

假设检验

假设检验的基本思想是小概率反证法思想。小概率事件是指小概率事件(P<0.01|0.05)在一次实验中基本不会发生。反证法的思想是先提出假设(检验假设\(H_0\)),再用适当的方法确认假设成立的可能性大小,如果可能性小,则认为假设不成立;若可能性大,则没有充分的证据说明假设不成立。

假设检验的步骤主要有 1)提出原假设,根据以往经验提出的默认假设 2)显著性水平的确定 3)证据收集,计算检验统计量 4)检验1。假设检验最后结果如下表所示:

金标准代表客观正确的事实;决策代表检验者得出的结论。

如表所示:假阳性,第一类错误α,拒绝了实际上成立的H0,为“弃真”错误;假阴性,第二类错误β,接受了实际上不成立的H0,为“纳伪”错误。

假阳性和假阴性

假阴性和假阳性是针对于筛查方法产生的结果来说的。假设检验中,原假设H0一般为阴性结果,备择假设一般为阳性结果。

假阳性意思为,看起来显著但是实际上是阴性的结果,在实验中如果选择了假阳性的结果会导致后面的实验失败。

假阴性意思为,看起来是不显著但是实际上是阳性的结果,在实验中如果假阴性检出率过大,会影响新的独特的实验结果,以及对表达差异不大的基因会漏样,进而掩盖那些真正有差异的基因。

实际上,\(\alpha\)\(\beta\)之间是互斥的,我能可以直观的从标准想像出:当\(\alpha\)显著水平趋于零时,则决策中完全的消除了阳性结果,决策为H0,此时存在很多假阴性结果(\(\beta\));反之\(\beta\)趋于零时,做出的结果为HA,则其中存在很多假阳性结果(\(\alpha\))。在生物学实验中,对假阳性的容忍程度一般低于假阴性,即尽量保守的减少阴性的结果的产生而不在意新的结果的检出,这是一种保守的做法。

检验的势

当得出P>0.05时,一方面认为没有证据拒绝H0;另一方面也应该注意是否由于样本数量小,检验功效不够大导致的不能检出阳性结果HA。

检验的势(power of the test)定义为在原假设是错误的情况下正确拒绝原假设的概率。检验的势等于1减去犯第二类错误的概率:1-β;当两个总体参数的确存在差异时,所使用的统计检验能够发现这种差异的概率。 1-β最好大于80%。

可通过如下公式计算β:

\[ Z_\beta = \frac{\sqrt{n}\delta}{\sigma}-Z_\alpha \] 其中 n为样本量;\(\delta\)偏差;\(\sigma\)总体标准差;\(Z_\alpha\):标准正态分布临界值,单侧检验取单侧,双侧取双侧;\(Z_\beta\):标准正态分布上侧尾部\(\beta\)临界值。

通过计算\(Z_\beta\)反查正态分布表获得\(\beta\),进而获得检验的势,一个具体的例子可从此链接找到2

P值的矫正方法

差异基因分析需要进行多重假设检验。在多重假设检验中,尽管假阳性阈值控制为p = 0.05已经很低了,但是由于次数很多,其总的检出数目也会很大(5%*20000=1000)。

严格的Bonferroni校正

直观的想法是设定一个及其严格的阈值,排除所有假阳性。Bonferroni校正将阈值限定为\(\alpha(1/n)\),每次检验的阈值为5%/20000 = 0.0000025;因此20000次检验中,只有20000*0.0000025 =0.5次假阳性,不到1次。这样未免矫枉过正,会遗漏很多区别不大但却是阳性的结果。

FDR计算

FDR错误发现率,假阳性/真阳性+假阳性,让其小于0.05,这样允许存在假阳性的结果,是一种折中的方法;例如20000基因,其中1000个是差异基因,其中假阳性基因数目小于50个,可以接受。

有很多近似估算FDR的计算方法,其中常用的是BH(Benjaminiand Hochberg)法3,主要步骤如下:

首先给定一系列P值:p = [0.054,0.032,0.044,0.012,0.002,0.027,0.036];

然后从小到大排序:\(p_i\) = [0.002,0.012,0.027,0.032,0.036,0.044,0.054]

计算q值:\(q= p\frac{n}{i}\),n为检验次数,i为排序位置,结果为:q = [0.014,0.042,0.063,0.056,0.050,0.051,0.054]取q阈值为0.05,因此这里前两个(0.002,0.012)为矫正后显著的结果。 # 使用 qvalue 计算q值 R中的 qvalue4 可以对 p值进行矫正。

library(qvalue)
#hedenfalk  P-values and test-statistics from the Hedenfalk et al. (2001) gene expression dataset
data("hedenfalk")
pvalue <- hedenfalk$p
qobj <- qvalue(pvalue)
# q值
qvalue <- qobj$qvalues
summary(qobj)
## 
## Call:
## qvalue(p = pvalue)
## 
## pi0: 0.669926    
## 
## Cumulative number of significant calls:
## 
##           <1e-04 <0.001 <0.01 <0.025 <0.05 <0.1   <1
## p-value       15     76   265    424   605  868 3170
## q-value        0      0     1     73   162  319 3170
## local FDR      0      0     3     30    85  167 2241
hist(qobj)

π0:the proportion of true null hypotheses π0,

在生物样本分析中,例如一个转录组分析,一个默认假设是:通常差异基因只有总体基因的10%以下,大部分都是非差异的,服从均匀分布;差异的部分远小于非差异,其中p<0.05时,大部分(仅有0.17为阳性)为无差异的结果(如图所示),所以BH的目的提高筛选阈值,尽可能保留真阳性。

Ref


  1. 概率论与数理统计. 作者:— 茆诗松, 周纪芗编著. 索书号:O21-43/4434. ISBN: 978-7-5037-5332-9. 出版社:中国统计出版社2007↩︎

  2. 检验的势↩︎

  3. BH论文↩︎

  4. Storey JD, Bass AJ, Dabney A, Robinson D (2020). qvalue: Q-value estimation for false discovery rate control. R package version 2.22.0, http://github.com/jdstorey/qvalue.↩︎

comments powered by Disqus