Ich habe Mühe, einen Weg zu finden, um den p-Wert für das Gebiet unter einer Empfängeroperatorcharakteristik (ROC) zu berechnen. Ich habe eine kontinuierliche Variable und ein diagnostisches Testergebnis. Ich möchte sehen, ob AUROC statistisch signifikant ist.
Ich habe viele Pakete gefunden, die sich mit ROC-Kurven befassen: pROC, ROCR, caTools, verification, Epi. Aber selbst nach vielen Stunden, in denen ich die Dokumentation gelesen und getestet hatte, konnte ich nicht herausfinden, wie. Ich glaube, ich habe es einfach verpasst.
Antworten:
In Ihrer Situation ist es in Ordnung, eine ROC-Kurve zu zeichnen und die Fläche unter dieser Kurve zu berechnen. Dies sollte jedoch als Ergänzung zu Ihrer Hauptanalyse und nicht zur Hauptanalyse selbst betrachtet werden. Stattdessen möchten Sie ein logistisches Regressionsmodell anpassen.
Das logistische Regressionsmodell wird standardmäßig mit einem Test des gesamten Modells geliefert. (Da Sie nur eine Variable haben, ist dieser p-Wert der gleiche wie der p-Wert für Ihre Testergebnisvariable.) Dieser p-Wert ist derjenige, nach dem Sie suchen. Mit dem Modell können Sie die vorhergesagte Wahrscheinlichkeit einer Erkrankung einer Beobachtung berechnen. Eine Empfänger-Betriebscharakteristik gibt an, wie sich die Empfindlichkeit und Spezifität auswirken, wenn Sie verschiedene Schwellenwerte verwenden, um die vorhergesagte Wahrscheinlichkeit in eine vorhergesagte Klassifikation umzuwandeln. Da die vorhergesagte Wahrscheinlichkeit eine Funktion Ihrer Testergebnisvariablen ist, erfahren Sie auch, wie sich diese auswirken, wenn Sie unterschiedliche Testergebniswerte als Schwellenwert verwenden.
Wenn Sie mit logistischen Regressionen nicht besonders vertraut sind, stehen im Internet einige Ressourcen zur Verfügung (neben der oben verlinkten Wikipedia-Seite):
R
, die Hilfe - Website Statistiken UCLA ist in der Regel sehr gut und hat eine entsprechende Seite hier .quelle
summary(GLM.1)
sollten Sie geben, was Sie brauchen, und ich denke,anova(GLM.1)
wird es gegen das Nullmodell testen, ohne dass Sie es tatsächlich auch passen müssen. Aber Ihr Weg wird auf jeden Fall funktionieren, ja.Grundsätzlich möchten Sie testen, H0 = "Die AUC ist gleich 0,5".
Dies ist in der Tat gleichbedeutend mit H0 = "Die Verteilung der Reihen in den beiden Gruppen ist gleich".
Letzteres ist die Nullhypothese des Mann-Whitney (Wilcoxon) -Tests (siehe zum Beispiel Gold, 1999 ).
Mit anderen Worten, Sie können sicher einen Mann-Whitney-Wilcoxon-Test verwenden, um Ihre Frage zu beantworten (siehe zum Beispiel Mason & Graham, 2002 ). Genau das leistet das von Franck Dernoncourt erwähnte Verifizierungspaket.
quelle
Sie können mit roc.area () aus der Verpackung Überprüfung :
Es wird zurückkehren
$p.value [1] 0.0069930071
quelle
Mit können zwei ROC-Kurven in pROC verglichen werden
roc.test()
. Dies erzeugt auch einen p-Wert.roc(..., auc=TRUE, ci=TRUE)
Wenn Sie außerdem verwenden , erhalten Sie die niedrigeren und höheren Konfidenzintervalle zusammen mit der AUC in der Ausgabe, während Sie das ROC-Objekt erstellen. Dies kann hilfreich sein.Das Folgende ist ein funktionierender Beispielcode, der testet, ob die Meilen pro Gallone oder das Gewicht eines Autos ein besserer Prädiktor für die Art des Getriebes sind, mit dem es ausgestattet ist (automatisch oder manuell):
Das Gewicht ist anscheinend ein deutlich besserer Prädiktor als der Kraftstoffverbrauch. Dies vergleicht jedoch zwei Kurven und keine einzelne Kurve mit einer Zahl wie 0,5. Wenn Sie sich das Konfidenzintervall ansehen, um festzustellen, ob es die Zahl 0,5 enthält, können Sie feststellen, ob es sich erheblich unterscheidet, aber keinen p-Wert liefert.
quelle