Significância estatística (valor-p) para comparar dois classificadores em relação à (média) AUC ROC, sensibilidade e especificidade

14

Eu tenho um conjunto de testes de 100 casos e dois classificadores.

Gerei previsões e AUC ROC computada, sensibilidade e especificidade para os dois classificadores.

Pergunta 1: Como posso calcular o valor-p para verificar se um é significativamente melhor que o outro em relação a todas as pontuações (AUC ROC, sensibilidade, especificidade)?


Agora, para o mesmo conjunto de testes de 100 casos, tenho atribuições de recursos diferentes e independentes para cada caso. Isso ocorre porque meus recursos são fixos, mas subjetivos, e são fornecidos por vários (5) assuntos.

Portanto, avaliei meus dois classificadores novamente para 5 "versões" do meu conjunto de testes e obtive 5 AUCs ROC, 5 sensibilidades e 5 especificidades para ambos os classificadores. Em seguida, calculei a média de cada medida de desempenho para 5 indivíduos (AUC média do ROC, sensibilidade média e especificidade média) para ambos os classificadores.

Pergunta 2: Como posso calcular o valor-p para verificar se um é significativamente melhor que o outro em relação às pontuações médias (AUC média do ROC, sensibilidade média, especificidade média)?


Respostas com algum exemplo de código python (preferencialmente) ou MatLab são bem-vindas.

Kostek
fonte
Faça comparação direta de precisão, exatidão, AuC para obter o melhor classificador entre os dois. O valor P não faz sentido aqui. O valor p é usado no contexto da avaliação se o modelo está indo melhor do que as atribuições aleatórias / 50-50 (como um teste de hipótese nula / alternativa)
Nishad
2
Primeiro, não concordo que a comparação de duas medidas de desempenho usando valor-p não faça sentido aqui. Vejo que um classificador possui AUC 0,80 e o outro 0,85. Minha hipótese nula seria que não há diferença no desempenho de ambos os classificados. Quero saber se a diferença é estatisticamente significativa.
Kostek
2
Segundo, não faço 5 versões do meu modelo. Eu tenho dois modelos treinados em um conjunto de treinamento separado e agora os avalio em 5 "versões" diferentes do meu conjunto de teste. Tenho um desempenho médio para ambos os classificadores (por exemplo, 0,81 AUC e 0,84 AUC) e quero verificar se a diferença é estatisticamente significativa.
Kostek
1
Eu não diria que o que estou fazendo é quase uma validação cruzada. No meu caso, os valores dos recursos dependem do assunto que os está fornecendo. Sei que a AUC pode ser usada para comparar modelos, mas quero saber se, na minha configuração, o resultado da minha comparação é estatisticamente significativo. Estou certo de que isso pode ser feito e que faz muito sentido fazê-lo. Minha pergunta é como fazê-lo.
Kostek
3
Não tenho certeza do que o @Nishad está chegando, você pode e deve usar um teste de hipótese para determinar se seus modelos são significativamente diferentes um do outro. Os desvios padrão de suas métricas existem e diminuem à medida que o tamanho da amostra aumenta (todas as outras coisas são iguais). Uma diferença de AUC entre 0,8 e 0,9 pode não ser significativa se você tiver apenas 10 amostras, mas pode ser muito significativa se você tiver 10 milhões de amostras. Também não vejo qualquer relação com a validação cruzada. Iria votar os comentários se eu pudesse.
Wang Nuclear

Respostas:

11

Wojtek J. Krzanowski e David J. Hand ROC de curvas para dados contínuos (2009) é uma ótima referência para tudo relacionado a curvas ROC. Ele reúne vários resultados em uma base de literatura frustrantemente ampla, que geralmente usa terminologia diferente para discutir o mesmo tópico.

Além disso, este livro oferece comentários e comparações de métodos alternativos que foram derivados para estimar as mesmas quantidades e destaca que alguns métodos fazem suposições que podem ser insustentáveis ​​em contextos específicos. Este é um desses contextos; outras respostas relatam o método Hanley & McNeil, que assume o modelo binormal para distribuição de pontuações, o que pode ser inapropriado nos casos em que a distribuição das pontuações das turmas não é (quase) normal. A suposição de pontuações normalmente distribuídas parece especialmente inapropriada nos tempos modernos. contextos , modelos comuns típicos como tendem a produzir pontuações com uma distribuição "banheira" para tarefas de classificação (ou seja, distribuições com altas densidades nos extremos próximos a 0 e 1 )

Pergunta 1 - CUA

A Seção 6.3 discute comparações da AUC ROC para duas curvas ROC (pp 113-114). Em particular, meu entendimento é que esses dois modelos estão correlacionados, portanto as informações sobre como calcular são criticamente importantes aqui; caso contrário, sua estatística de teste será enviesada porque não leva em consideração a contribuição da correlação.r

Para o caso de curvas ROC não correlacionadas que não se baseiam em nenhuma premissa de distribuição paramétrica, as estatísticas de tets e intervalos de confiança comparando as AUCs podem ser diretamente baseadas nas estimativas e ^ AUC 2 dos valores da AUC e nas estimativas de seus desvios padrão S 1 e S 2 , conforme indicado na seção 3.5.1:AUC^1AUC^2S1S2

Z=AUC^1AUC^2S12+S22

Para estender esses testes ao caso em que os mesmos dados são usados ​​para ambos os classificadores, precisamos levar em consideração a correlação entre as estimativas da AUC:

z=AUC^1AUC^2S12+S22rS1S2

onde é a estimativa dessa correlação. Hanley e McNeil (1983) fizeram essa extensão, baseando sua análise no caso binormal, mas apenas forneceram uma tabela mostrando como calcular o coeficiente de correlação estimado r a partir da correlação r P dos dois classificadores da classe P e a correlação de r nrrrPrn dos dois classificadores da classe N, dizendo que a derivação matemática estava disponível mediante solicitação. Vários outros autores (por exemplo, Zou, 2001) desenvolveram testes baseados no modelo binormal, assumindo que uma transformação apropriada possa ser encontrada, que transformará simultaneamente as distribuições de pontuação das classes P e N em normais.

DeLong et al (1988) aproveitaram a identidade entre a AUC e a estatística do teste de Mann-Whitney, juntamente com os resultados da teoria da estatística generalizada devido a Sen (1960), para derivar uma estimativa da correlação entre as AUCs que não se baseia na suposição binormal. De fato, DeLong et al (1988) apresentaram os seguintes resultados para comparações entre k 2 classificadores.Uk2

Na Seção 3.5.1, mostramos que a área sob a curva ROC empírica era igual à estatística Mann-Whitney e era dada porU

em quesPi,i=1,...,nPé a pontuação para a classePobjectos esNj,j=1,...,nNsão as pontuações para osobjetosda classeNna amostra. Suponha que temoskclassificadores, produzindo pontuaçõess r N j ,

AUC^=1nNnPi=1nNj=1nP[I(sPj>sNi)+12I(sPj=sNi)]
sPi,i=1,,nPPsNj,j=1,,nNNk. Definir e s r P i , j = 1 , , n P [Corrigi um erro de indexação nesta parte - Sycorax] e ^ A U C r , r = 1 , , ksNjr,j=1nNsPir,j=1,,nPAUC^r,r=1,,k

e 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

Em seguida, definir o matriz W 10 com ( r , s ) ésimo elemento w r , s 10 = 1k×kW10(r,s) e okxkmatrizW01com(r,s)th elemento w r

w10r,s=1nP1i=1nP[V10r(sPi)AUC^r][V10s(sPi)AUC^s]
k×kW01(r,s) Em seguida, a matriz de covariância estimada para o vetor( ^ A U C 1,, ^ A U C k
w01r,s=1nN1i=1nN[V01r(sNi)AUC^r][V01s(sNi)AUC^s]
das áreas estimadas sob as curvas é W = 1(AUC^1,,AUC^k)com elementosde wr,s. Esta é uma generalização do resultado para a variação estimada de uma única AUC estimada, também fornecida na seção 3.5.1. No caso de dois classificadores, a correlaçãoestimadarentre as AUC estimadas é dada porw1,2
W=1nPW10+1nNW01
wr,sr que pode ser usado emzacima.w1,2w1,1w2,2z

Como outras respostas fornecem as expressões de Hanley e McNeil para estimadores da variação da AUC, reproduzirei aqui o estimador DeLong da p. 68:

A abordagem alternativa devida a DeLong et al (1988) e exemplificada por Pepe (2003) fornece talvez uma estimativa mais simples e uma que introduz o conceito extra útil de um valor de posicionamento. O valor de colocação de uma pontuação com referência a uma população especificada é a função sobrevivente da população em s . Esse valor de colocação para s na população N é 1 - F ( s ) e para s na população P é 1 - G ( s ) . Estimativas empíricas dos valores de posicionamento são dadas pelas proporções óbvias. Assim, o valor de colocação da observação s Nsss1F(s)s1G(s)sNi na população P denota , é a proporção dos valores da amostra de P que excede s N i , e var ( s N P i ) é a variação dos valores de colocação de cada observação de N em relação à população P. ..sNiPsNivar(sPiN)

A estimativa de DeLong et al (1988) da variação de é dada em termos dessas variações: s 2 ( ^ A U C ) = 1AUC^

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

Observe que é a função de distribuição cumulativa das pontuações na população N e G é a função de distribuição cumulativa das pontuações na população P. Uma maneira padrão de estimar F e G é usar o FGFG . O livro também fornece alguns métodos alternativos para as estimativas de ecdf, como estimativa de densidade do kernel, mas que estão fora do escopo desta resposta.

As estatísticas e z podem ser consideradas desvios normais padrão e os testes estatísticos da hipótese nula prosseguem da maneira usual. (Veja também:Zz )

Este é um esboço simplificado e de alto nível de como o teste de hipóteses funciona:

  • Testar, em suas palavras, "se um classificador é significativamente melhor que o outro" pode ser reformulado como testando a hipótese nula de que os dois modelos têm AUCs estatisticamente iguais em comparação com a hipótese alternativa de que as estatísticas são desiguais.

  • Este é um teste bicaudal.

  • Rejeitamos a hipótese nula se a estatística do teste estiver na região crítica da distribuição de referência, que é uma distribuição normal padrão neste caso.

  • O tamanho da região crítica depende do nível do teste. Para um nível de significância de 95%, a estatística do teste cai na região crítica se z > 1,96 ou z < - 1,96 . (Esses são os quantis α / 2 e 1 - α / 2 da distribuição normal padrão.) Caso contrário, você falha em rejeitar a hipótese nula e os dois modelos estão estatisticamente vinculados.αz>1.96z<1.96α/21α/2

Pergunta 1 - Sensibilidade e especificidade

A estratégia geral para comparar sensibilidade e especificidade é observar que essas duas estatísticas equivalem a realizar inferência estatística em proporções, e esse é um problema padrão e bem estudado. Especificamente, sensibilidade é a proporção da população P que tem uma pontuação maior que algum limiar , e também para a especificidade da população N: sensibilidade = t pt

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

O principal ponto de discórdia é o desenvolvimento do teste apropriado, pois as duas proporções da amostra serão correlacionadas (como você aplicou dois modelos aos mesmos dados de teste). Isso é tratado na p. 111

tpfp is a proportion, as is the misclassification rate for fixed threshold t. We can thus compare curves, using these measures, by means of standard tests to compare proportions. For example, in the unpaired case, we can use the test statistic (tp1tp2)/s12, where tpi is the true positive rate for curve i as the point in question, and s122 is the sum of the variances of tp1 and tp2...

For the paired case, however, one can derive an adjustment that allows for the covariance between tp1 and tp2, but an alternative is to use McNemar's test for correlated proportions (Marascuilo and McSweeney, 1977).

The is appropriate when you have N subjects, and each subject is tested twice, once for each of two dichotomous outcomes. Given the definitions of sensitivity and specificity, it should be obvious that this is exactly the test that we seek, since you've applied two models to the same test data and computed sensitivity and specificity at some threshold.

The McNemar test uses a different statistic, but a similar null and alternative hypothesis. For example, considering sensitivity, the null hypothesis is that the proportion tp1=tp2, and the alternative is tp1tp2. Re-arranging the proportions to instead be raw counts, we can write a contingency table

Model 1 Positive at tModel 1 Negative at tModel 2 Positive at tabModel 2 Negative at tcd
where cell counts are given by counting the true positives and false negatives according to each model

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)

and we have the test statistic

M=(bc)2b+c
which is distributed as χ12 a chi-squared distribution with 1 degree of freedom. With a level α=95%, the null hypothesis is rejected for M>3.841459.

For the specificity, you can use the same procedure, except that you replace the sPir with the sNjr.

Question 2

It seems that it is sufficient to merge the results by averaging the prediction values for each respondent, so that for each model you have 1 vector of 100 averaged predicted values. Then compute the ROC AUC, sensitivty and specificity statistics as usual, as if the original models didn't exist. This reflects a modeling strategy that treats each of the 5 respondents' models as one of a "committee" of models, sort of like an ensemble.

Sycorax says Reinstate Monica
fonte
Thanks for your answer and provided references. What about p-values for sensitivity and specificity?
kostek
For Q1, does it mean that there is no difference between computing p-value for sensitivity and specificity and that they both always have the same p-value and I simply make a contingency table and run McNemar test on it?
kostek
No, you’d do one test for each.
Sycorax says Reinstate Monica
That is a very detailed answer, thank you. About McNemar-test; what are exactly a,b,c,d? What proportions are these?
Drey
@Drey They're not proportions; they're counts. I make this explicit in a revision.
Sycorax says Reinstate Monica
2

Let me keep the answer short, because this guide does explain a lot more and better.

Basically, you have your number of True Postives (nTP) and number of True Negatives (nTN). Also you have your AUC, A. The standard error of this A is:

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

with Q1=A/(2A) and Q2=2A2/(1+A).

To compare two AUCs you need to compute the SE of them both using:

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

where r is a quantity that represents the correlation induced between the two areas by the study of the same set of cases. If your cases are different, then r=0; otherwise you need to look it up (Table 1, page 3 in freely available article).

Given that you compute the z-Score by

z=(A1A2)/SEA1A2

From there you can compute p-value using probability density of a standard normal distribution. Or simply use this calculator.

This hopefully answers Question 1. - at least the part comparing AUCs. Sens/Spec is already covered by the ROC/AUC in some way. Otherwise, the answer I think lies in the Question 2.

As for Question 2, Central Limit Theorem tells us that your summary statistic would follow a normal distribution. Hence, I would think a simple t-test would suffice (5 measures of one classifier against 5 measures of the second classifier where measures could be AUC, sens, spec)

Edit: corrected formula for SE (2r)

Drey
fonte
Thanks for provided links. For Question 1, If I set A to be sensitivity or specificity, would the equations for SE and z-Score hold?
kostek
Não, porque o sens lida apenas com TPs e as especificações tratam de TNs. É possível calcular intervalos de confiança para sens / spec com IC de proporção binomial , mas seja vigilante (tamanho pequeno da amostra?). Seup^ would be sens or spec. If CIs overlap in your comparison, then the difference would be not statistically significant under the alpha-level.
Drey
0

For Question 1, @Sycorax provided a comprehensive answer.

For Question 2, to the best of my knowledge, averaging predictions from subjects is incorrect. I decided to use bootstrapping to compute p-values and compare models.

In this case, the procedure is as follows:

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

This procedure performs one-tailed test and assumes that M1 mean performance > M2 mean performance.

A Python implementation of bootstrapping for computing p-values comparing multiple readers can be found in this GitHub repo: https://github.com/mateuszbuda/ml-stat-util

kostek
fonte