Co to jest NRI?
NRI (ang. net reclassification improvement lub index) – wskaźnik reklasyfikacji netto – mierzy, czy nowy model, zwykle rozszerzony o marker, przesuwa osoby do trafniejszych kategorii ryzyka niż model bazowy. Pencina i in. (2008) zaproponowali go jako uzupełnienie przyrostu AUC, czyli pola pod krzywą ROC.
Wzór i dwie wersje
NRI = [P(w górę | zdarzenie) − P(w dół | zdarzenie)] + [P(w dół | brak zdarzenia) − P(w górę | brak zdarzenia)]. Wersja kategorialna wymaga progów ryzyka ustalonych z góry. Wersja ciągła (bez kategorii) liczy każdy wzrost lub spadek przewidywanego ryzyka. NRI to suma dwóch różnic odsetków, a nie odsetek osób, więc kategorialny przyjmuje wartości od −2 do 2.
Przykład
Na danych symulowanych model bazowy i model z markerem dopasowano na jednej połowie próby, a oceniono na drugiej (n = 409, 60 zdarzeń). Kategorie: <10%, 10–20%, ≥20%. Wśród osób ze zdarzeniem 10 przesunięto w górę, a 12 w dół: −.033. Wśród osób bez zdarzenia 99 trafiło niżej, a 48 wyżej: +.146. NRI = .113, wersja ciągła .354, a AUC wzrosło z .679 do .703.
Jak opisać w pracy
Na co uważać
- Podawaj składowe osobno. Kerr i in. (2014) zalecają raportowanie NRI oddzielnie dla zdarzeń i braku zdarzeń, a przy dwóch kategoriach – po prostu zmian odsetków wyników prawdziwie i fałszywie dodatnich (czułości i swoistości). Przy trzech i więcej kategoriach odradzają NRI, a wersja ciągła może przeceniać poprawę.
- Dodatni NRI nie dowodzi wartości markera. Pepe i in. (2015) pokazali, że przy źle dopasowanych modelach NRI bywa dodatni nawet dla markera bez informacji. Sprawdź kalibrację i korzyść netto.
- Wartości z różnych badań nie są porównywalne, jeśli różnią się kategorie lub wersja wskaźnika.
Pełne porównanie dwóch modeli pokazuje wpis Krzywa decyzyjna (net benefit) i NRI, a różnicę AUC testuje test DeLonga.
NRI w R
Kod porównuje model bazowy z modelem rozszerzonym o marker, buduje tabele reklasyfikacji osobno dla osób ze zdarzeniem i bez niego, liczy ręcznie NRI kategorialny i ciągły oraz AUC obu modeli.
NRI kategorialny i ciągły
R
set.seed(3941)
n <- 800
wiek <- rnorm(n) # predyktor z modelu bazowego
marker <- rnorm(n) # nowy marker
y <- rbinom(n, 1, plogis(-1.8 + 0.8 * wiek + 0.6 * marker))
ucz <- sample(c(TRUE, FALSE), n, replace = TRUE) # połowa do dopasowania, połowa do oceny
nowe <- data.frame(wiek, marker)[!ucz, ]
p0 <- predict(glm(y ~ wiek, binomial, subset = ucz), nowe, type = "response")
p1 <- predict(glm(y ~ wiek + marker, binomial, subset = ucz), nowe, type = "response")
yt <- y[!ucz]
kat <- function(p) cut(p, c(0, .10, .20, 1), right = FALSE, labels = c("<10%", "10-20%", ">=20%"))
table(bazowy = kat(p0), nowy = kat(p1), zdarzenie = yt)
gora <- as.integer(kat(p1)) > as.integer(kat(p0)); dol <- as.integer(kat(p1)) < as.integer(kat(p0))
nri_z <- mean(gora[yt == 1]) - mean(dol[yt == 1]) # osoby ze zdarzeniem
nri_b <- mean(dol[yt == 0]) - mean(gora[yt == 0]) # osoby bez zdarzenia
nri_c_z <- mean(p1[yt == 1] > p0[yt == 1]) - mean(p1[yt == 1] < p0[yt == 1])
nri_c_b <- mean(p1[yt == 0] < p0[yt == 0]) - mean(p1[yt == 0] > p0[yt == 0])
auc <- function(p, y) mean(outer(p[y == 1], p[y == 0], ">") + 0.5 * outer(p[y == 1], p[y == 0], "=="))
round(c(n = length(yt), zdarzenia = sum(yt), NRI_zdarz = nri_z, NRI_bez = nri_b, NRI = nri_z + nri_b,
cNRI_zdarz = nri_c_z, cNRI_bez = nri_c_b, cNRI = nri_c_z + nri_c_b,
AUC_bazowy = auc(p0, yt), AUC_nowy = auc(p1, yt)), 3)Wynik w R
, , zdarzenie = 0
nowy
bazowy <10% 10-20% >=20%
<10% 71 19 3
10-20% 47 53 26
>=20% 13 39 78
, , zdarzenie = 1
nowy
bazowy <10% 10-20% >=20%
<10% 3 2 1
10-20% 6 4 7
>=20% 1 5 31
n zdarzenia NRI_zdarz NRI_bez NRI cNRI_zdarz cNRI_bez
409.000 60.000 -0.033 0.146 0.113 0.133 0.221
cNRI AUC_bazowy AUC_nowy
0.354 0.679 0.703Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats). W pracy podaj wersję R, której faktycznie użyto (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/
Najczęstsze pytania
Czym różni się NRI kategorialny od ciągłego?
Kategorialny liczy tylko przejścia między progami ryzyka ustalonymi z góry, np. <10%, 10–20%, ≥20%. Ciągły liczy każdy wzrost lub spadek przewidywanego ryzyka, więc nie zależy od progów, ale zwykle daje wyższe wartości i łatwo przecenia poprawę.
Czy NRI to odsetek dobrze przeklasyfikowanych osób?
Nie. To suma dwóch różnic odsetków liczonych w różnych mianownikach (osoby ze zdarzeniem i bez niego), dlatego kategorialny NRI mieści się w przedziale od −2 do 2. Podawaj obie składowe osobno.
Czy NRI wystarczy, by wykazać wartość nowego markera?
Nie. NRI bywa dodatni nawet dla markera bez informacji, gdy modele są źle dopasowane. Uzupełnij go o kalibrację, zmianę AUC i krzywą decyzyjną, licząc wszystko na danych walidacyjnych.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Krzywa decyzyjna (net benefit) i NRI
Korzyść netto w zakresie progów, strategie „wszyscy” i „nikt”, NRI kategorialny i ciągły z krytyką oraz dwa modele o tym samym AUC.
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)
- Kerr, K. F., Wang, Z., Janes, H., McClelland, R. L., Psaty, B. M., & Pepe, M. S. (2014). Net reclassification indices for evaluating risk prediction instruments: A critical review. Epidemiology, 25(1), 114–121. https://doi.org/10.1097/ede.0000000000000018 ● Otwarty dostęp: pełny tekst
- Pencina, M. J., D'Agostino, R. B., Sr., D'Agostino, R. B., Jr., & Vasan, R. S. (2008). Evaluating the added predictive ability of a new marker: From area under the ROC curve to reclassification and beyond. Statistics in Medicine, 27(2), 157–172. https://doi.org/10.1002/sim.2929 ● Otwarty dostęp
- Pepe, M. S., Fan, J., Feng, Z., Gerds, T., & Hilden, J. (2015). The net reclassification index (NRI): A misleading measure of prediction improvement even with independent test data sets. Statistics in Biosciences, 7(2), 282–295. https://doi.org/10.1007/s12561-014-9118-0 ● Otwarty dostęp: pełny tekst
Cytowania BibTeX
@article{kerr2014net, author={Kerr, Kathleen F. and Wang, Zheyu and Janes, Holly and McClelland, Robyn L. and Psaty, Bruce M. and Pepe, Margaret S.}, title={{Net reclassification indices for evaluating risk prediction instruments: A critical review}}, journal={Epidemiology}, year={2014}, volume={25}, number={1}, pages={114--121}, doi={10.1097/ede.0000000000000018}}@article{pencina2008evaluating, author={Pencina, Michael J. and D'Agostino, Sr., Ralph B. and D'Agostino, Jr., Ralph B. and Vasan, Ramachandran S.}, title={{Evaluating the added predictive ability of a new marker: From area under the ROC curve to reclassification and beyond}}, journal={Statistics in Medicine}, year={2008}, volume={27}, number={2}, pages={157--172}, doi={10.1002/sim.2929}}@article{pepe2015net, author={Pepe, Margaret S. and Fan, Jing and Feng, Ziding and Gerds, Thomas and Hilden, Jorgen}, title={{The net reclassification index (NRI): A misleading measure of prediction improvement even with independent test data sets}}, journal={Statistics in Biosciences}, year={2015}, volume={7}, number={2}, pages={282--295}, doi={10.1007/s12561-014-9118-0}}