J'ai du mal à trouver un moyen de calculer la valeur de p pour la zone sous une caractéristique d'opérateur de récepteur (ROC). J'ai une variable continue et un résultat de test de diagnostic. Je veux voir si AUROC est statistiquement significatif.
J'ai trouvé de nombreux packages traitant des courbes ROC: pROC, ROCR, caTools, vérification, Epi. Mais même après plusieurs heures passées à lire la documentation et à tester, je n'ai pas trouvé comment. Je pense que je l'ai raté.
Réponses:
Dans votre situation, il serait bien de tracer une courbe ROC et de calculer l'aire sous cette courbe, mais cela devrait être considéré comme complémentaire à votre analyse principale, plutôt que l'analyse primaire elle-même. Au lieu de cela, vous souhaitez adapter un modèle de régression logistique .
Le modèle de régression logistique sera livré en standard avec un test du modèle dans son ensemble. (En fait, puisque vous n'avez qu'une seule variable, cette valeur de p sera la même que la valeur de p pour votre variable de résultat de test.) Cette valeur de p est celle que vous recherchez. Le modèle vous permettra de calculer la probabilité prédite d'une observation d'être malade. Une caractéristique de fonctionnement du récepteur vous indique comment la sensibilité et la spécificité seront arbitrées si vous utilisez différents seuils pour convertir la probabilité prédite en une classification prédite. Étant donné que la probabilité prédite sera fonction de votre variable de résultat de test, elle vous indique également comment ils se négocient si vous utilisez différentes valeurs de résultat de test comme seuil.
Si vous n'êtes pas très familier avec la régression logistique, certaines ressources sont disponibles sur Internet (en plus de la page Wikipedia liée ci-dessus):
R
, le site Web d'aide des statistiques de l'UCLA est généralement excellent et contient une page pertinente ici .la source
summary(GLM.1)
devrait vous donner ce dont vous avez besoin, et je penseanova(GLM.1)
qu'il le testera par rapport au modèle nul sans que vous ayez à l'adapter également. Mais votre chemin fonctionnera certainement, oui.Fondamentalement, vous voulez tester H0 = "L'AUC est égale à 0,5".
Cela équivaut en fait à dire H0 = "La répartition des rangs dans les deux groupes est égale".
Cette dernière est l'hypothèse nulle du test de Mann-Whitney (Wilcoxon) (voir par exemple Gold, 1999 ).
En d'autres termes, vous pouvez utiliser en toute sécurité un test de Mann-Whitney-Wilcoxon pour répondre à votre question (voir par exemple Mason & Graham, 2002 ). C'est exactement ce que fait le package de vérification mentionné par Franck Dernoncourt.
la source
Vous pouvez utiliser roc.area () à partir de la vérification du package :
Il reviendra
$p.value [1] 0.0069930071
la source
Deux courbes ROC peuvent être comparées dans pROC en utilisant
roc.test()
. Cela produit également une valeur p. De plus, l'utilisationroc(..., auc=TRUE, ci=TRUE)
vous donnera les intervalles de confiance inférieurs et supérieurs avec l'ASC dans la sortie lors de la création de l'objet ROC, ce qui peut être utile.Voici un exemple de code qui teste si les miles par gallon ou le poids d'une voiture sont un meilleur indicateur du type de transmission dont elle est équipée (automatique ou manuelle):
Le poids est un prédicteur nettement meilleur que la consommation de carburant, semble-t-il. Cependant, cela compare deux courbes et non une seule courbe avec un nombre tel que 0,5. En regardant l'intervalle de confiance pour voir s'il contient le nombre 0,5 nous indique s'il est significativement différent, mais il ne produit pas de valeur p.
la source