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.
Respostas:
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 de aprendizado de máquina , modelos comuns típicos como xgboost 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
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:
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 ecdfF G F G . 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:Z z teste de hipóteses )
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.96 z<−1.96 α/2 1−α/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
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
The mcnemar-test is appropriate when you haveN 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 proportiontp1=tp2 , and the alternative is tp1≠tp2 . Re-arranging the proportions to instead be raw counts, we can write a contingency table
and we have the test statistic
For the specificity, you can use the same procedure, except that you replace thesrPi with the srNj .
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.
fonte
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:
withQ1=A/(2−A) and Q2=2A2/(1+A) .
To compare two AUCs you need to compute the SE of them both using:
wherer 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 thez -Score by
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 forSE (…−2r… )
fonte
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:
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
fonte