Eu luto para encontrar uma maneira de calcular o valor-p da área sob uma característica de operador de receptor (ROC). Eu tenho uma variável contínua e um resultado de teste de diagnóstico. Quero ver se o AUROC é estatisticamente significativo.
Encontrei muitos pacotes que tratam de curvas ROC: pROC, ROCR, caTools, verificação, Epi. Mas mesmo depois de muitas horas lendo a documentação e os testes, não consegui descobrir como. Eu acho que acabei de errar.
Respostas:
Na sua situação, seria bom plotar uma curva ROC e calcular a área sob essa curva, mas isso deve ser pensado como suplementar à sua análise principal, e não à análise primária em si. Em vez disso, você deseja ajustar um modelo de regressão logística .
O modelo de regressão logística virá como padrão com um teste do modelo como um todo. (Na verdade, como você tem apenas uma variável, esse valor p será o mesmo da variável de resultado do teste.) Esse valor p é o que você procura. O modelo permitirá calcular a probabilidade prevista de uma observação estar doente. Uma característica de operação do receptor informa como a sensibilidade e a especificidade serão trocadas, se você usar limites diferentes para converter a probabilidade prevista em uma classificação prevista. Como a probabilidade prevista será uma função da variável de resultado do teste, também será informado como eles serão trocados se você usar diferentes valores de resultado do teste como seu limite.
Se você não está muito familiarizado com a regressão logística, existem alguns recursos disponíveis na internet (além da página da Wikipedia vinculada acima):
R
, o site de ajuda de estatísticas da UCLA geralmente é excelente e tem uma página relevante aqui .fonte
summary(GLM.1)
deve fornecer o que você precisa, e achoanova(GLM.1)
que o testará contra o modelo nulo sem que você realmente precise ajustá-lo. Mas seu caminho definitivamente funcionará, sim.Basicamente, você deseja testar H0 = "A AUC é igual a 0,5".
Isso é de fato equivalente a dizer H0 = "A distribuição das classificações nos dois grupos é igual".
Esta última é a hipótese nula do teste de Mann-Whitney (Wilcoxon) (ver, por exemplo , Gold, 1999 ).
Em outras palavras, você pode usar com segurança um teste de Mann-Whitney-Wilcoxon para responder sua pergunta (ver, por exemplo, Mason & Graham, 2002 ). É exatamente isso que o pacote de verificação mencionado por Franck Dernoncourt faz.
fonte
Você pode usar roc.area () na verificação do pacote :
Vai voltar
$p.value [1] 0.0069930071
fonte
Duas curvas ROC podem ser comparadas no pROC usando
roc.test()
. Isso também produz um valor-p. Além disso, o usoroc(..., auc=TRUE, ci=TRUE)
fornecerá intervalos de confiança mais altos e mais baixos, juntamente com a AUC na saída, ao criar o objeto ROC, o que pode ser útil.A seguir, é apresentado um exemplo de código que testa se as milhas por galão ou o peso de um carro são um melhor indicador do tipo de transmissão com a qual vem equipado (automático ou manual):
O peso é um indicador significativamente melhor do que o consumo de combustível, ao que parece. No entanto, isso está comparando duas curvas, e não uma única curva contra um número como 0,5. Observar o intervalo de confiança para ver se ele contém o número 0,5 nos diz se é significativamente diferente, mas não produz um valor-p.
fonte