ROC和 区别p值和q值

ROC和 区别p值和q值
ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。
灵敏度是指受患病者中被某种诊断方法检出阳性的百分率,也叫真阳率;特异度是指无病者中被某诊断方法检出阴性的百分率,也叫真阴性。使用任何一种检测方法通过“阳性”“阴性”来判断疾病都有可能出现以下四种情况:

1.真阳性(true positive,TP):有病且检测结果为阳性

2.假阴性(false negative,FN):有病但检测结果为阴性

3.假阳性(falsepositive,FP):无病但检测结果为阳性

4.真阴性(truenegative,TN):无病且检测结果为阴性
再以灵敏度(即TPR)为纵坐标、1-特异度(即FPR)为横坐标绘制成ROC曲线,分别反映了A,B两种方法对某种疾病的的诊断结果。

   阳性        阴性           合计

有 TP真阳性 FN假阴性 实际病人数TP+FN

无 FP假阳性 TN真阴性 实际非病人数FP+TN

当需要确定诊断标准的时候必须从若干个临界值中选择一个最佳的临界点(最佳工作点,Optimal Operating Point)。每个临界值都有相应的灵敏度与特异度,因此最佳临界点应当是灵敏度与特异度的最佳组合。当某一临界值所对应的灵敏度与特异度都为1.0时,则说明该临界值对阳性以及阴性的准确率都达到了100%,这一个临界值自然是理想的最佳临界点,但是在临床现场或是研究中常常是很难达到这一水准的。

若我们使用甲,乙,丙三种找诊断方法对同一疾病进行诊断并在同一个坐标系中画出其ROC曲线如下图4-1:(甲=红,乙=黄,丙=蓝)

(1)图中的横纵坐标

纵坐标代表的是灵敏度,该指标越高代表诊断的准确率越高;横坐标代表的是1-特异度,该指标越低就代表误判率越低。所以总的来看越是靠近ROC空间的左上角的点,其诊断效果越好。

(2) 图中四个特殊的点和一条特殊的线

第一个点是(0,1)即FPR=0,TPR=1的点,这一点意味着这个分类器很强大,他将所有的样本都正确分类了;

第二个点(1,0)即FPR=1,TPR=0,类似的可以发现这是一个很糟糕的分类器,它成功的避开了所有的正确答案。

第三个点(0,0)即FPR=TPR=0,可以发现该分类器将所有的样本都分为负样本。

第四个点(1,1)即FPR=TPR=1,同理该分类器将所有的样本都分成正样本。

(3)特殊的线

一条特殊的线是图中的虚线y=x。在这条对角线上的点其实表示的是一个采用随机猜测策略的分类器对样本进行分类的结果,例如(0.5,0.5)就表示分类器随机对一半的样本猜测为正样本,另一半的样本为负样本的分类结果。

(4)红,黄,蓝三条线比较

最后我们来看看甲,乙,丙三种方法对应的三条线,前面已经说到了越是靠近左上角的ROC曲线,其对应的分类器性能越好。

从图中可以直观地看出红线最靠近左上角的ROC曲线,即甲分类器的性能最好,其最佳临界点就是最靠近的左上角的A点。

相比于甲方法来说,乙方法就要差一点。我们可以在X轴上做一条垂线,经过红,黄两条线上的两个点,可以知道两个点的FPR值相同即两个方法此时的误判率相同;但是红线上点的TPR值大于黄线上的点,即甲方法的灵敏度大于乙方法,这就意味着在这一点甲方法的准确率高于乙方法。

再说丙方法,像蓝线这样的ROC曲线一般是不会出现的,因为ROC曲线基本都是在对角线之上的。硬要分析的话只能说丙方法实在是太糟糕了,以至于随机分类的正确率都要比该方法高。一般我们以对角线作为参照线,认为在对角线以上的ROC曲线有诊断意义,对角线以下的ROC曲线没有诊断意义。如果很不幸,你在实验中得到一个为于对角线下方的ROC曲线的话,一个最直观的补救方法就是将所有的预测结果反向,即若分类器输出的结果为正,则最终的分类结果就为负,反之就分为正。

还有一点要说的是ROC曲线之所以是从左下角到右上角,即ROC曲线单调递增是因为从保守分类到激进分类,其TPR与FPR都是上升的。这其实很好理解,你的标准越来越低,那么实际有病的人被诊断为有病的概率上升,但是原本将健康的人被判为有病的概率也升高。

H0 is true H1is true Total
Not Significant TN FN TN+FN
Significant FP TP FP+TP
Total TN+FP FN+TP m

             无                                有

阴性不显著 TN真阴性 FN假阴性

阳性显著 FP假阳性 TP真阳性

total 实际非病人数FP+TN 实际病人数TP+FN

首先从上面的混淆矩阵来展示p值域q值的计算公式,就可以看出它们之间的区别:

p值实际上就是false positive rate(FPR,假正率):直观来看,p值是用上面混淆矩阵的第一列算出来的.p值衡量的是一个原本应该是 H0 的判断被错误认为是H1的比例,所以它是针对单次统计推断的一个置信度评估;
q值实际上就是false discovery rate (FDR):直观来看,q值是用上面混淆矩阵的第二行算出来的.q值衡量的是在进行多次统计推断后,在所有被判定为显著性的结果里,有多大比例是误判的

最近用limma作差异分析,接触p.value和adj.p.value比较多,今天就重点解释下p.value和FDR吧:
在topTable函数的结果里,我们都会看到p.value和adj.p.value:
对H0和H1的一个较好的解释:

H0:差别是由抽样误差所致;

H1:差别不是由抽样误差所致,即并不来自同一总体;

将所有p.value直接用p.adjust中的‘BH’方法进行校正,head展示前六个结果,可以看出得到的结果与topTable一致;

仅将第一个p.value用p.adjust中的‘BH’方法进行校正,得到的结果其实与p.value一致;

综上:
在多重检验的时候,需要对p值进行校正;

FDR(Benjamini and Hochberg(BH))是p值的校正方法之一;(所以,统计学家对统计方法抱有的态度比较客观,认为其本身并不完美,需要进行校正)
FDR计算方法:

总计m次检验的结果按由小到大进行排序,k为其中一次检验结果的P值所对应的排名;

找到符合原始阈值α的最大的k值,满足P(k)<=αk/m,认为排名从1到k的所有检验存在显著差异,并计算对应的q值公式为q = p(m/k),q值即FDR;

若后一个FDR小于前一个FDR,则以前一位的计算结果为FDR,所以会在结果中看到相同的数值;

  1. 多重假设检验的必要性
    统计学中的假设检验的基本思路是:

设立零假设(null hypothesis)H0 以及与零假设H0 相对应的非零假设(alternative hypothesis, or reject null hypothesis)H1,在假设H0 成立的前提下,计算出H0 发生的概率,若H0 的发生概率很低,基于小概率事件几乎不可能发生,所以可以拒绝零假设

但是这些传统的假设检验方法研究的对象,都是一次试验

在一次试验中(注意:是一次试验, 即single test),0.05 或0.01的cutoff足够严格了(想象一下,一个口袋有100个球,95个白的,5个红的, 只让你摸一次,你能摸到红的可能性是多大?)

但是对于多次试验,又称多重假设检验,再使用p值是不恰当的,下面来分析一下为什么:

大家都知道墨菲定律:如果事情有变坏的可能,不管这种可能性有多小,它总会发生

用统计的语言去描述墨菲定律:

在数理统计中,有一条重要的统计规律:假设某意外事件在一次实验(活动)中发生的概率为p(p>0),则在n次实验(活动)中至少有一次发生的概率为

pn = 1 - (1 - p)n

由此可见,无论概率p多么小(即小概率事件),当n越来越大时,pn越来越接近1

这和我们的一句俗语非常吻合:常在河边走,哪有不湿鞋;夜路走多了,总能碰见鬼

在多重假设检验中,我们一般关注的不再是每一次假设检验的准确性,而是控制在作出的多个统计推断中犯错误的概率,即False Discover Rate(FDR),这对于医院的诊断情景下尤其重要:

假如有一种诊断艾滋病(AIDS)的试剂,试验验证其准确性为99%(每100次诊断就有一次false positive)。对于一个被检测的人(single test))来说,这种准确性够了;但对于医院 (multiple test))来说,这种准确性远远不够

因为每诊断10 000个个体,就会有100个人被误诊为艾滋病(AIDS),每一个误诊就意味着一个潜在的医疗事故和医疗纠纷,对于一些大型医院,一两个月的某一项诊断的接诊数就能达到这个级别,如果按照这个误诊率,医院恐怕得关门,所以医院需要严格控制误诊的数量,宁可错杀一万也不能放过一个,因为把一个没病的病人误判为有病,总比把一个有病的病人误判为没病更保险一些

利用Benjamini–Hochberg方法计算FDR的计算及R语言实现
FDR的计算相当简单,包括以下几步:

1.对p值进行从小到大的排序,标记上序号1~n;

2.其中,最大的FDR(不考虑重复则为第n位)等于最大的p值;

3.对于n-1位的FDR,取下面两者的较小值:

上一步(第n位)计算得出的FDR值;

p-value*n/(n-1)

4.不断迭代第三步(n-2,n-3…),直至计算到最小p值对应的FDR。

下面直接在R里实现:

###例如这10个p值进行校正

temp <- c(0.01,0.11,0.21,0.31,0.41,0.51,0.61,0.71,0.81,0.91)
p.adjust(temp, method=“fdr”)

temp <- c(0.01,0.11,0.21,0.31,0.41,0.51,0.61,0.71,0.81,0.91)
p.adjust(temp, method=“fdr”)
[1] 0.1000000 0.5500000 0.7000000 0.7750000 0.8200000 0.8500000 0.8714286 0.8875000 0.9000000 0.9100000

根据上述定义,我们知道以此计算出的FDR是有可能出现相同值的—即使其原始p值不同。在上面的例子中,第9位的p值为0.81,根据公式计算出的待选FDR值为0.81*10/9=0.9,比第10位的0.91要小,因此成为真正的FDR。如果我们更改一下条件,将0.81改成0.90,那么结果就会有所不同:
###将0.81改为0.9

temp <- c(0.01,0.11,0.21,0.31,0.41,0.51,0.61,0.71,0.9,0.91)
p.adjust(temp, method=“fdr”)
[1] 0.1000000 0.5500000 0.7000000 0.7750000 0.8200000 0.8500000 0.8714286 0.8875000 0.9100000 0.9100000

因此这个现象是很正常的。
Benjamini–Hochberg方法的几何解释
我们已经知道,p值实际上是拒绝0假设的置信度。这也就意味着,对于n个样本,我们就会期望产生n*p个错误判断。换而言之,对于实际上没有区别的分布进行随机抽样,我们计算出来的p值应该是均一分布的。

注:也就是说有5%的可能性抽出假阳性出来。

如果我们从两个有差别的分布中抽样,那么p值的分布将富集在左侧,而这种趋势与差异程度显然是正相关的:

你可能感兴趣的:(R,统计学)