Trudno mi znaleźć sposób na obliczenie wartości p dla obszaru pod charakterystyką operatora odbiornika (ROC). Mam zmienną ciągłą i wynik testu diagnostycznego. Chcę sprawdzić, czy AUROC jest statystycznie istotny.
Znalazłem wiele pakietów zajmujących się krzywymi ROC: pROC, ROCR, caTools, weryfikacja, Epi. Ale nawet po wielu godzinach spędzonych na czytaniu dokumentacji i testowaniu nie mogłem znaleźć sposobu. Chyba właśnie tego przegapiłem.
Odpowiedzi:
W twojej sytuacji dobrze byłoby wykreślić krzywą ROC i obliczyć pole pod tą krzywą, ale należy to traktować jako uzupełnienie głównej analizy, a nie samej analizy podstawowej. Zamiast tego chcesz dopasować model regresji logistycznej .
Model regresji logistycznej będzie standardowo wyposażony w test modelu jako całości. (W rzeczywistości, ponieważ masz tylko jedną zmienną, ta wartość p będzie taka sama jak wartość p dla zmiennej wyniku testu.) Ta wartość p jest tą, której szukasz. Model pozwoli ci obliczyć przewidywane prawdopodobieństwo zachorowania obserwacji. Charakterystyczny Receiver Operating powie Ci, jak czułość i swoistość będzie kompromis, jeśli używasz różnych progów przekonwertować przewidywane prawdopodobieństwo do przewidywanej klasyfikacji. Ponieważ przewidywane prawdopodobieństwo będzie funkcją zmiennej wyniku testu, informuje również o tym, jak się one kompromisują, jeśli jako wartość progową zastosujesz różne wartości wyników testu.
Jeśli nie jesteś zbytnio zaznajomiony z regresją logistyczną, w Internecie dostępne są pewne zasoby (oprócz strony Wikipedii, do której prowadzi link powyżej):
R
, UCLA statystykę help strona jest na ogół doskonała i ma odpowiednią stronę tutaj .źródło
summary(GLM.1)
powinien dać ci to, czego potrzebujesz, i myślę, żeanova(GLM.1)
przetestuje to na modelu zerowym bez konieczności dopasowywania go. Ale twoja droga na pewno zadziała, tak.Zasadniczo chcesz przetestować H0 = „AUC jest równe 0,5”.
W rzeczywistości jest to równoważne z powiedzeniem H0 = „Rozkład stopni w dwóch grupach jest równy”.
Ta ostatnia jest zerową hipotezą testu Manna-Whitneya (Wilcoxon) (patrz na przykład Gold, 1999 ).
Innymi słowy, możesz bezpiecznie użyć testu Manna-Whitneya-Wilcoxona, aby odpowiedzieć na twoje pytanie (patrz na przykład Mason i Graham, 2002 ). Właśnie to robi pakiet weryfikacyjny wspomniany przez Francka Dernoncourta.
źródło
Możesz użyć roc.area () z weryfikacji pakietu :
Wróci
$p.value [1] 0.0069930071
źródło
Dwie krzywe ROC można porównać za pomocą pROC
roc.test()
. Daje to również wartość p. Ponadto użycieroc(..., auc=TRUE, ci=TRUE)
da ci niższe i wyższe przedziały ufności wraz z AUC na wyjściu podczas tworzenia obiektu ROC, co może być przydatne.Oto działający przykładowy kod, który sprawdza, czy mile na galon lub masa samochodu są lepszym predyktorem rodzaju przekładni, w którą jest wyposażony (automatyczny lub ręczny):
Wydaje się, że ciężar jest znacznie lepszym predyktorem niż zużycie paliwa. Jest to jednak porównanie dwóch krzywych, a nie pojedynczej krzywej z liczbą taką jak 0,5. Patrząc na przedział ufności, aby zobaczyć, czy zawiera on liczbę 0,5, wiemy, czy jest znacząco różny, ale nie daje wartości p.
źródło