Słownik metodologiczny · Testy statystyczne

Test DeLonga – jak porównać pola pod dwiema krzywymi ROC?

Test DeLonga sprawdza, czy dwa wskaźniki zmierzone u tych samych osób różnią się polem pod krzywą ROC. Pokazujemy, skąd bierze się kowariancja AUC, przykład w pROC i opis do pracy.

Strona główna / Słownik / Test DeLonga
W skrócie: Test DeLonga porównuje pola pod dwiema krzywymi ROC (AUC) uzyskanymi u tych samych osób. Uwzględnia kowariancję obu AUC, dlatego ma większą moc niż porównanie dwóch niezależnych przedziałów ufności.

Co to jest test DeLonga?

Test DeLonga (ang. DeLong's test) porównuje pola pod dwiema krzywymi ROC (AUC), gdy oba wskaźniki zmierzono u tych samych osób. Tak jest, gdy pełną i skróconą wersję skali wypełnia ta sama próba. Obie krzywe mają wtedy wspólny wzorzec rozpoznań, więc ich AUC są skorelowane. DeLong i in. (1988) zaproponowali nieparametryczną metodę opartą na uogólnionych statystykach U. Szacuje ona wariancje obu AUC i ich kowariancję.

Jak to działa?

Statystyka testu to z = (AUC₁ − AUC₂) / SE różnicy. Wariancja różnicy to Var₁ + Var₂ − 2Cov. Im silniej skorelowane są wyniki obu narzędzi, tym większa kowariancja i tym węższy przedział ufności różnicy. Dla krzywych z dwóch niezależnych prób (np. ta sama skala u kobiet i mężczyzn) kowariancja wynosi zero i stosuje się wersję niesparowaną. W pakiecie pROC obie wersje daje funkcja roc.test() z argumentem paired (Robin i in., 2011).

Przykład

W symulowanych danych 240 osób (74 z rozpoznaniem depresji) wypełniło pełną i skróconą skalę objawów. Wyniki obu wersji korelowały na poziomie r = .78. Pełna skala miała AUC = .808, skrócona – .752. Test DeLonga dla krzywych skorelowanych dał różnicę .056, 95% CI [.011, .101], z = 2.45, p = .014. Ten sam test w wersji dla prób niezależnych, z pominiętą korelacją, dał p = .193.

Jak opisać w pracy

Pełna wersja skali lepiej odróżniała osoby z depresją od osób bez rozpoznania niż wersja skrócona (AUC = .808 wobec .752). Różnica pól pod krzywymi ROC, oceniona testem DeLonga dla krzywych skorelowanych, była istotna: ΔAUC = .056, 95% CI [.011, .101], z = 2.45, p = .014.

Na co uważać

  • Nie porównuj AUC „na oko”. Nakładające się przedziały ufności dwóch AUC nie oznaczają braku różnicy. W przykładzie zachodzą na siebie (.751–.864 i .690–.814), a różnica jest istotna.
  • Wersja niesparowana dla danych sparowanych traci moc. pROC ostrzega wtedy, że krzywe wyglądają na sparowane.
  • AUC to nie wszystko. Równe AUC nie oznacza takiej samej czułości i swoistości w wybranym punkcie odcięcia. Przy modelach predykcyjnych oceń też kalibrację.

Cały przebieg analizy, od AUC po wybór punktu odcięcia, pokazuje wpis Krzywa ROC i punkt odcięcia skali krok po kroku. Porównywanie modeli na nowych danych opisuje poradnik o walidacji modeli predykcyjnych.

Przykład reprodukowalny

Test DeLonga w R

Kod tworzy dane z przykładu, liczy dwie krzywe ROC w pakiecie pROC i porównuje ich AUC testem DeLonga w wersji sparowanej i niesparowanej.

Pełna a skrócona skala: dwa skorelowane AUC

Dane wejściowe: rozpoznanie depresji (0/1) oraz wyniki pełnej i skróconej skali u 240 osób (dane symulowane, set.seed(3292)).

Co odczytać: oba AUC i korelację wyników, a w teście sparowanym statystykę Z, p i przedział ufności różnicy; w teście niesparowanym – D i p.

R
suppressPackageStartupMessages(library(pROC))
set.seed(3292)
n <- 240
depresja <- rbinom(n, 1, 0.3)                     # rozpoznanie w wywiadzie klinicznym
cecha <- rnorm(n) + 1.3 * depresja                # nasilenie objawów
dluga <- round(10 + 3 * (cecha + rnorm(n, sd = 0.4)))   # pełna skala, 12 pozycji
krotka <- round(5 + 1.5 * (cecha + rnorm(n, sd = 0.9))) # wersja skrócona, 4 pozycje
r_dl <- roc(depresja, dluga, quiet = TRUE)
r_kr <- roc(depresja, krotka, quiet = TRUE)
round(c(AUC_dluga = auc(r_dl), AUC_krotka = auc(r_kr), r = cor(dluga, krotka)), 3)
roc.test(r_dl, r_kr, method = "delong", paired = TRUE)   # te same osoby
roc.test(r_dl, r_kr, method = "delong", paired = FALSE)  # błąd: pominięta korelacja
Wynik w R
 AUC_dluga AUC_krotka          r
     0.808      0.752      0.775

	DeLong's test for two correlated ROC curves

data:  r_dl and r_kr
Z = 2.4516, p-value = 0.01422
alternative hypothesis: true difference in AUC is not equal to 0
95 percent confidence interval:
 0.01120753 0.10056388
sample estimates:
AUC of roc1 AUC of roc2
  0.8076359   0.7517502


	DeLong's test for two ROC curves

data:  r_dl and r_kr
D = 1.3045, df = 473.64, p-value = 0.1927
alternative hypothesis: true difference in AUC is not equal to 0
sample estimates:
AUC of roc1 AUC of roc2
  0.8076359   0.7517502

Warning message:
In roc.test.roc(r_dl, r_kr, method = "delong", paired = FALSE) :
  The ROC curves seem to be paired. Consider performing a paired roc.test.

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet pROC). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. pROC (wersja 1.19.0.1): Robin, X., Turck, N., Hainard, A., Tiberti, N., Lisacek, F., Sanchez, J.-C., & Müller, M. (2011). pROC: An open-source package for R and S+ to analyze and compare ROC curves. BMC Bioinformatics, 12, 77. https://doi.org/10.1186/1471-2105-12-77

Najczęstsze pytania

Kiedy użyć testu DeLonga w wersji sparowanej?

Gdy oba wskaźniki, np. dwie skale albo dwa modele, oceniono u tych samych osób. W pROC ustaw roc.test(..., paired = TRUE). Wersję niesparowaną stosuj tylko dla dwóch niezależnych prób.

Czy test DeLonga nadaje się do porównania dwóch modeli regresji logistycznej?

Tak, jeśli porównujesz AUC przewidywań obu modeli na tych samych osobach. Licz AUC na danych niewykorzystanych do dopasowania, bo w próbie uczącej bardziej złożony model jest faworyzowany.

Co oznacza ostrzeżenie pROC, że krzywe wyglądają na sparowane?

Funkcja roc.test() wykryła, że obie krzywe pochodzą z tych samych obserwacji, a wybrano test dla prób niezależnych. Taki test pomija kowariancję AUC i zwykle ma mniejszą moc.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. DeLong, E. R., DeLong, D. M., & Clarke-Pearson, D. L. (1988). Comparing the areas under two or more correlated receiver operating characteristic curves: A nonparametric approach. Biometrics, 44(3), 837–845. https://doi.org/10.2307/2531595
  2. Robin, X., Turck, N., Hainard, A., Tiberti, N., Lisacek, F., Sanchez, J.-C., & Müller, M. (2011). pROC: An open-source package for R and S+ to analyze and compare ROC curves. BMC Bioinformatics, 12(1), Article 77. https://doi.org/10.1186/1471-2105-12-77 ● Otwarty dostęp

Cytowania BibTeX

@article{delong1988comparing, author={DeLong, Elizabeth R. and DeLong, David M. and Clarke-Pearson, Daniel L.}, title={{Comparing the areas under two or more correlated receiver operating characteristic curves: A nonparametric approach}}, journal={Biometrics}, year={1988}, volume={44}, number={3}, pages={837--845}, doi={10.2307/2531595}}
@article{robin2011proc, author={Robin, Xavier and Turck, Natacha and Hainard, Alexandre and Tiberti, Natalia and Lisacek, Frédérique and Sanchez, Jean-Charles and Müller, Markus}, title={{pROC: An open-source package for R and S+ to analyze and compare ROC curves}}, journal={BMC Bioinformatics}, year={2011}, volume={12}, number={1}, eid={77}, doi={10.1186/1471-2105-12-77}}
R