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
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.
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
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 korelacjaWynik 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()).
- 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/
- 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
Krzywa ROC i punkt odcięcia krok po kroku
AUC z 95% CI, tabela progów, trzy reguły wyboru progu, czułość i swoistość z przedziałami oraz test DeLonga dla dwóch skal – w R z pakietem pROC.
Czytaj →PoradnikModele predykcyjne: walidacja i kalibracja
Liczebność, przeuczenie, walidacja krzyżowa i bootstrap, LASSO i ridge, kalibracja, wynik Briera i TRIPOD+AI – na danych do pobrania, z kodem R.
Czytaj →Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- 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
- 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}}