统计假设检验 Statistical hypothesis testing
假设检验是使用来自总体的采样(sampling)提供的信息,做出关于一个对总体的决策。需注意抽样应能够代表总体。
对总体的某种规律提出一个假设,通过样本数据推断,决定是否拒绝这一假设,这样的统计活动称为假设检验。
假设检验的基本步骤
1. 建立检验假设,确定检验水准
2. 选择并计算检验统计量
3. 确定p值,做出推断
假设 hypothesis
统计假设是一种关于感兴趣的总体的陈述。一般我们有一个原假设/零假设/无效假设/H0/ null hypothesis和一个备择假设/替代假设/HA/alternative hypothesis。无效假设通常代表“无效”的状态,即“没有影响、没有效果、没有差异”。
例如:H0 性别对身高没有影响/男女平均身高没有差异。
p值
A p-value is the probability that random chance generated the data, or something else that is equal or rarer.
p值是生成某数据的随机机率,包括三部分:随机产生这个事件的概率,产生与该事件相同概率的其它事件的概率,产生比该事件的概率更小的事件的概率,这三部分概率加起来就是p值。
统计假设检验的结果通常用p值来表示。为了从我们的变量的观测值获得p值,首先需要构造一个测试统计量,如果零假设确实成立,我们可以从理论上计算统计量的分布情况。然后,我们可以将从我们的采样数据中计算出的值与该分布进行比较,并假设如果零假设为真,那么将获得观测数据或比观测数据更极端的测试统计值的概率是p值。
p值是当原假设成立时,出现目前观察到的情况的概率、加上出现和目前情况概率相同或概率更低的事件的概率。如果p值比较小,可以认为当原假设成立时出现目前的情况是小概率事件,不太可能发生,而更有可能是原假设不成立。
注意:
p值并不能告诉你零假设是真的可能性。同样,它也没有告诉你替代假设是真的可能性。
如果你不能拒绝零假设,你还没有证明零假设是正确的。但简单地说,当前的数据集没有提供足够的证据来拒绝它。
p值只关心数据与原假设有多么不一致,不能代表你所发现的效应(差异)的大小,更不能告诉我们这种效应是否有实际意义。
显著性水平α
规定一个显著性水平α,如果p值小于显著水平,就可以拒绝原假设,认为得到的结果是显著的。从另一个角度看,α是在原假设为真时拒绝原假设的概率(假阳性错误),是在大量重复实验时我们能承受的第一类错误的概率的上限。从相同的总体取样进行检验的p值是均匀分布的,假阳性的比率与α值相等。
假设检验的两类错误
第I类错误(type I error):假阳性错误。 把没有差异说成有差异,把没病说成有病,把无效说成有效等。
第II类错误(type II error):假阴性错误。 把有差异说成没有差异,把有病说成没病,把有效说成无效等。
多重假设检验
如果我们只执行一个测试(在数据集中只有一个变量),那么使用p值来解释统计测试的结果很好。一旦测试次数增加,p值作为显著性度量的有用性就会降低。
多重比较使假阳性的概率大量增加。对一个变量进行统计检验,假阳性的概率为α=5%,不犯假阳性错误的概率为95%;对5个变量一起进行检验,不犯假阳性错误的概率为0.95^5=0.77,至少出现一次第I类错误的概率就是1-0.95^5=0.23;如果检验的次数m更多,几乎必然会有至少1个假阳性错误。我们把这个“至少有1个错误”的概率称为总体错误率(Family-Wise Error Rate,FWER),FWER = 1- (1- α)^m。
假设我们的数据集中有10000个变量,并且对于每一个变量,原假设都是正确的(没有差异)。现在对每个变量进行统计检验。在这个例子中我们将有大约0.05×10000=500个变量的p值低于0.05。这些都被称为假发现或假阳性(false discoveries or false positives)。如果数据中存在一些确实有差异的变量,则它们将与假阳性混合。在判断差异表达基因时,大部分基因都是没有明显变化的,小部分基因是显著差异的,这样统计得到的显著性结果中,会有很大比例的假阳性。
p值校正
在进行多次假设检验的时候,为了避免增大犯I型错误的概率,常用bonferroni、fdr(BH) 以及q值等方法对比较结果的p值进行校正(严格来说,q值并不是用来校正p值的)。
padj
adjust p-values是经过校正后的p值,通过一些算法,比如Benjamini-Hochberg method,使p值变的更大一些,从而控制假阳性的数量。
bonferroni校正
bonferroni是特别保守的一种多重比较校正方法,它拒绝了所有的假阳性结果发生的可能性。FWER = 0.05,α = 0.05/m,p<0.05/m时才拒绝原假设。相当于每一个检验做出来的p值都要乘以m,作为校正后的P值。这样进行10000次检验后,平均假阳性次数也依然被控制在0.05次。
t.df1$bon <- p.adjust(t.df1$sim_p, method = "bonferroni")
FDR
错误发现率(false discovery rate,FDR)是假阳性的预期分数,即假阳性数量除以所有认为是阳性结果的数量,FDR=FP/(FP+TP)。
如果FDR<0.05,那么在显示为显著性的结果里,有不到5%为假阳性。当FDR=0.05时,一共有1805个阳性,但是这些阳性样本中,有5%是假阳性,即有90个是误诊的。
有多种模型用来从p-value估算FDR值,其中使用的最多的是Benjaminiand Hochberg的方法,简称 BH法。BH法虽然不够精确,但是简单好用。
Benjamini-Hochberg校正方法
fdr默认Benjamini-Hochberg method,仍然略显保守。它关注的是所有认为是阳性的结果中,假阳性的比例,FDR的目的就是要将这个比例降低到α。
其方法是:把所有的p值从小到大排序并编号i,然后最大的p值不变,其余的p值调整后变成 原始p值×(p值总数m/这个p值排序的编号i)。可以从数学上证明经过BH方法校正后的adjust p-values(即q-values或FDR)可以控制FDR在α以内。
实际上,BH法的原始算法是找到一个最大的编号i,满足P≤i/m*FDR阈值,此时所有编号小于i的数据就都可以认为是显著的。在实践中,为了能够在比较方便的用不同的FDR阈值对数据进行分析,会计算所有的FDR,这样无论FDR阈值选择多少,都可以直接根据FDR的数值来直接找到所有显著的数据。
t.df1$fdr <- p.adjust(t.df1$sim_p, method = "fdr")
q值
FDR的控制方法,延伸出了一个被校正后的p value的概念(比P value更严格),称之为Q value,这个概念是最早是John Storey(2002)提出的。一般情况下,我们可以认为q value = FDR = adjusted p value。据说Storey方法是最流行的FDR control procedure(For details see Storey's paper published on PNAS ,2003)。这是一种利用多重比较结果中的p value 分布,来预估真实的阳性率的方法,从而提高了FDR值预估的准确性。
q值是传统p值的FDR模拟(analog)。对于给定的变量(p-value = p*),q值估计p值低于p*的所有变量中错误发现的分数。q值表示在检测阳性个体中,假阳性个体所占的比例。取q=0.05,假阳性/(假阳性+真阳性)=0.05。此时p值并不是0.05(可能是0.058)。
t.q1 <- qvalue(t.df1$sim_p)
t.df1$qval <- t.q1$qvalue
独立筛选 independent filtering
FDR控制了假阳性,但是也丢失了很多真正有差异的结果。所以还有独立筛选(independent filtering)减少假阴性。独立筛选认为表达量很低的基因可能不能提供有用信息,可以先把它们去掉,减少参与分析的基因总数,从而减少丢失的真阳性结果。