比较两个分类器的(均值)ROC AUC,敏感性和特异性的统计显着性(p值)


14

我有一个包含100个案例和两个分类器的测试集。

我为这两个分类器生成了预测并计算了ROC AUC,敏感性和特异性。

问题1:如何计算p值,以检查一个总分(ROC AUC,敏感性,特异性)是否明显优于另一个?


现在,对于100个案例的相同测试集,我为每种案例分配了不同且独立的功能。这是因为我的功能是固定的,但主观的,并且由多(5)个主题提供。

因此,我针对我的测试集的5个“版本”再次评估了两个分类器,并获得了5个ROC AUC,5个敏感性和5个特异性。然后,我计算了两个分类器的5个主题的每个性能指标的平均值(平均ROC AUC,平均灵敏度和平均特异性)。

问题2:如何计算p值,以检查一个均值(平均ROC AUC,平均敏感性,平均特异性)是否明显好于另一个?


最好提供一些示例python(最好)或MatLab代码的答案。


直接比较精度,准确度和AuC,以获得两者之间的最佳分类器。P值在这里没有意义。p值用于评估模型是否优于随机/ 50-50分配(作为零假设/替代假设检验)
Nishad18年

2
首先,我不同意使用p值比较两个绩效指标在这里没有意义。我看到一个分类器的AUC为0.80,另一个为0.85。我的零假设是两种分类广告的表现没有差异。我想知道差异在统计上是否显着。
kostek

2
其次,我没有制作5个版本的模型。我在单独的训练集中训练了两个模型,现在我在测试集中的5个不同“版本”上对它们进行了评估。我对两个分类器都有平均表现(例如0.81 AUC和0.84 AUC),并想检查差异是否在统计上显着。
kostek

1
我不会说我正在做的事情接近交叉验证。就我而言,特征的值取决于提供它们的主题。我知道AUC可以用来比较模型,但是我想知道在我的设置中,比较结果是否在统计上有意义。我确信可以做到,而且这样做很有道理。我的问题是怎么做。
kostek

3
我不确定@Nishad在干什么,您可以而且应该使用假设检验来确定您的模型之间是否存在显着差异。指标的标准偏差确实存在,并且随着样本数量的增加而变小(所有其他条件都相同)。如果您只有10个样本,则0.8和0.9之间的AUC差异可能并不明显,但是如果您有10M样本,则可能非常显着。我也看不到与交叉验证的任何关系。如果可以的话,请否决评论。
核王

Answers:


11

Wojtek J. Krzanowski和David J. Hand 连续数据的ROC曲线(2009)是与ROC曲线相关的所有事物的绝佳参考。它收集了许多令人沮丧的广泛文献基础的结果,这些文献经常使用不同的术语来讨论同一主题。

此外,本书提供了对估计相同数量的替代方法的评论和比较,并指出某些方法做出的假设在特定情况下可能站不住脚。这就是这样的背景。其他答案报告了Hanley&McNeil方法,该方法假设分数分布采用双正态模型,这在班级分数分布不(接近)正态分布的情况下可能是不合适的。正态分布分数的假设在现代环境中似乎尤其不合适,典型的通用模型(例如倾向于针对分类任务生成具有“浴缸”分布的分数(即,在接近0和1的极端中具有高密度的分布) )。

问题1-AUC

第6.3节讨论了两条ROC曲线的ROC AUC的比较(第113-114页)。特别是,我的理解是这两个模型相关的,因此有关如何计算的信息在这里至关重要。否则,您的测试统计信息将带有偏差,因为它没有考虑相关性的贡献。r

对于不基于任何参数分布假设的ROC曲线不相关的情况,可以直接基于估算和来比较AUC的tet和置信区间的统计数据3.5.1节中给出的AUC值的估计以及其标准偏差和估计: ^ AUC 2S1S2AUC^1AUC^2S1S2

Z=AUC^1AUC^2S12+S22

要将此类测试扩展到两个分类器使用相同数据的情况,我们需要考虑AUC估计之间的相关性:

z=AUC^1AUC^2S12+S22rS1S2

其中是此相关性的估计。汉利和麦克尼尔(1983)做了这样一个扩展,在副法线情况下根据他们的分析,但只给了示出如何计算所估计的相关系数的表从相关类P内的两个分类的,并且所述相关 N类中两个分类器中的一个,表示可以根据要求提供数学推导。其他各种作者(例如Zou,2001)已经基于双正态模型开发了测试,假设可以找到适当的变换,该变换会将P和N类的得分分布同时变换为正态。[R [R P - [R ÑrrrPrn

DeLong等人(1988)利用AUC和Mann-Whitney检验统计量之间的同一性以及Sen(1960)提出的广义统计量理论的结果,得出了AUC之间的相关性估计,即不依赖于双态假设。实际上,DeLong等人(1988年)提出了以下结果,用于分类器之间的比较。ķ 2Uk2

在3.5.1节中,我们表明经验ROC曲线下的面积等于Mann-Whitney统计量,并由下式给出:U

sPii=1nPPsNjj=1nNNks r N jj=1nNs r P ij=1

AUC^=1nNnPi=1nNj=1nP[I(sPj>sNi)+12I(sPj=sNi)]
其中是类对象和的得分是样本中类对象的得分。假设我们有分类器,产生分数和 [我纠正了这部分的索引错误 ]和。限定sPi,i=1,,nPPsNj,j=1,,nNNksNjr,j=1nN^ A U C rr = 1 ksPir,j=1,,nPAUC^r,r=1,,k

V r 01 =1

V10r=1nNj=1nN[I(sPir>sNjr)+12I(sPir=sNjr)],i=1,,nP
V01r=1nPi=1nP[I(sPir>sNjr)+12I(sPir=sNjr)],j=1,,nN

接下来,用第个元素 定义矩阵 和矩阵,第个元素 然后,曲线下估计面积的向量的估计 协方差矩阵为k×kW10(r,s)

w10r,s=1nP1i=1nP[V10r(sPi)AUC^r][V10s(sPi)AUC^s]
k×kW01(r,s)
w01r,s=1nN1i=1nN[V01r(sNi)AUC^r][V01s(sNi)AUC^s]
(AUC^1,,AUC^k)
W=1nPW10+1nNW01
,元素为。这是对单个估计的AUC的估计方差的结果的概括,也在3.5.1节中给出。因此,在两个分类器的情况下,估计的AUC之间的估计相关性由可以在上面的使用。wr,srw1,2w1,1w2,2z

由于另一个答案给出了AUC方差估计量的Hanley和McNeil表达式,因此在此我将重现p的DeLong估计量。68:

由DeLong等人(1988)提出并由Pepe(2003)举例说明的另一种方法给出的估计可能更简单,并且引入了放置值的额外有用概念。分数相对于指定种群的放置值是该种群的幸存者函数在。在总体N中的放置值为,而在总体P中的放置值为。位置值的经验估计值由明显的比例给出。因此,观测值在总体P中的放置值表示为是来自P的样本值超过sss1F(s)s1G(s)sNisNiPsNi和是每个观测值相对于总体P从N的观察值的方差...var(sPiN)

DeLong等人(1988)根据以下方差给出的方差估计: AUC^

s2(AUC^)=1nPvar(sPiN)+1nNvar(sNiP)

请注意,是总体N中得分的累积分布函数,而是总体P中得分的累积分布函数。估计和标准方法是使用。本书还为ecdf估计提供了一些替代方法,例如内核密度估计,但这不在此答案的范围之内。FGFG

可以假定统计量和为标准正态偏差,并且对原假设的统计检验将以通常的方式进行。(另请参见:Zz

这是假设检验工作原理的简化高级概述:

  • 用您的话来说,检验“一个分类器是否明显优于另一个分类器”可以改写为检验两个模型在统计上相等的AUC的原假设与统计数据不相等的替代假设。

  • 这是一个两尾测试。

  • 如果检验统计量在参考分布的关键区域(在这种情况下为标准正态分布),我们将拒绝零假设。

  • 关键区域的大小取决于测试的水平。对于95%的显着性水平,如果或,则检验统计量将落在关键区域。(这些是标准正态分布的和分位数。)否则,您将无法拒绝原假设,并且两个模型在统计上是绑定的。αz>1.96z<1.96α/21α/2

问题1-敏感性和特异性

比较敏感性和特异性的一般策略是观察到这两种统计量都相当于对比例进行统计推断,这是一个经过充分研究的标准问题。具体来说,敏感度是得分高于某个阈值的总体P的比例,对于人口N的特异性同样如此: t

sensitivity=tp=P(sP>t)1specificity=fp=P(sN>t)

鉴于两个样本的比例将相互关联(因为您已将两个模型应用于相同的测试数据),因此主要的发展点是开发适当的测试。这一点在p上解决。111。

转到特定的测试,几个汇总统计量归结为每条曲线的比例,因此可以使用比较比例的标准方法。例如,固定的值是一个比例,固定阈值的误分类率也是如此。因此,我们可以使用这些测量方法通过标准测试来比较曲线以比较比例。例如,在不成对的情况下,我们可以使用检验统计量,其中是曲线的真实正率作为相关点,而是和的方差之和...tpfpt(tp1tp2)/s12tpiis122tp1tp2

但是,对于成对的情况,可以推导出一种调整,以允许和之间的协方差,但是另一种方法是使用McNemar检验相关比例(Marascuilo和McSweeney,1977)。tp1tp2

所述是适当的,当你有受试者,并且每个受试者被测试两次,一次用于每个两个二分结果。给定敏感性和特异性的定义,很明显,这正是我们寻求的测试,因为您已将两个模型应用于相同的测试数据,并在某个阈值处计算了敏感性和特异性。N

McNemar检验使用不同的统计量,但使用相似的原假设和替代假设。例如,考虑到敏感性,零假设是比例,替代选择是。重新将比例重新设置为原始计数,我们可以写一个列联表 其中细胞计数通过计数给出每个模型的真实肯定和错误否定tp1=tp2tp1tp2

Model 1 Positive at tModel 1 Negative at tModel 2 Positive at tabModel 2 Negative at tcd

a=i=1nPI(sPi1>t)I(sPi2>t)b=i=1nPI(sPi1t)I(sPi2>t)c=i=1nPI(sPi1>t)I(sPi2t)d=i=1nPI(sPi1t)I(sPi2t)

并且我们有检验统计量 ,它以分布,具有1个自由度,是卡方分布。如果水平为,则对于,将拒绝原假设。

M=(bc)2b+c
χ12α=95%M>3.841459

对于特异性,可以使用相同的过程,除了你更换与。sPirsNjr

问题2

似乎通过平均每个响应者的预测值来合并结果就足够了,因此对于每个模型,您都有1个100个平均预测值的向量。然后像往常一样计算ROC AUC,敏感性和特异性统计数据,就好像原始模型不存在一样。这反映了一种建模策略,该策略将5个受访者的模型中的每一个都视为模型的“委员会”之一,有点像一个整体。


感谢您的回答并提供参考。关于敏感性和特异性的p值呢?
kostek

对于Q1,这是否意味着计算敏感性和特异性的p值之间没有区别,并且它们始终具有相同的p值,而我只是制作了一个列联表并对其进行了McNemar测试?
kostek

不,您需要为每个测试一次。
Sycorax说,请恢复莫妮卡

这是一个非常详细的答案,谢谢。关于麦克内马尔测试;到底是什么?这些比例是多少?a,b,c,d
德雷(Drey),

@Drey他们不是比例;他们是计数。我在修订中对此进行了明确说明。
Sycorax说恢复莫妮卡

2

让我简短地回答一下,因为该指南的确做了更多更好的解释

基本上,您有True True阳性()和True Negatives()数量。另外,您还有AUCA。此A的标准误差为:nTPnTN

SEA=A(1A)+(nTP1)(Q1A2)+(nTN1)(Q2A2)nTPnTN

其中和。Q1=A/(2A)Q2=2A2/(1+A)

要比较两个AUC,您需要使用以下方法计算它们的SE:

SEA1A2=(SEA1)2+(SEA2)22r(SEA1)(SEA2)

其中是代表通过研究同一组病例在两个区域之间引起的相关性的量。如果情况不同,则; 否则,您需要查找它(免费提供的文章第3页表1)。rr=0

假设您通过以下方式计算 -Scorez

z=(A1A2)/SEA1A2

在这里,您可以使用标准正态分布的概率密度来计算p值。或者只是使用此计算器。

这有望回答问题1。-至少是比较AUC的部分。ROC / AUC已经以某种方式涵盖了Sens / Spec。否则,我认为答案就在问题2中。

对于问题2中心极限定理告诉我们,您的摘要统计量将服从正态分布。因此,我认为简单的t检验就足够了(一个分类器的5个量度与第二个分类器的5个量度(其中的量度可以是AUC,sens,spec))

编辑:更正了公式()2 r SE2r


感谢提供的链接。对于问题1,如果我将A设为敏感性或特异性,那么SE和z-Score的方程式是否成立?
kostek

不可以,因为sens仅处理TP,spec处理TN。可以使用二项式比例CI计算sen / spec的置信区间,但要保持警惕(小的样本量?)。您的将是sen或spec。如果配置项在比较中重叠,则在Alpha级别下,差异在统计上不会有显着性。p^
德雷(Drey),

0

对于问题1,@ Sycorax提供了全面的答案。

就我所知,对于第2个问题,对受试者的平均预测是不正确的。我决定使用自举来计算p值并比较模型。

在这种情况下,过程如下:

For N iterations:
  sample 5 subjects with replacement
  sample 100 test cases with replacement
  compute mean performance of sampled subjects on sampled cases for model M1
  compute mean performance of sampled subjects on sampled cases for model M2
  take the difference of mean performance between M1 and M2
p-value equals to the proportion of differences smaller or equal than 0

此过程执行一次测试,并假设M1平均性能> M2平均性能。

可以在此GitHub存储库中找到用于计算比较多个读者的p值的自举的Python实现:https : //github.com/mateuszbuda/ml-stat-util

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.