Słownik metodologiczny · Modele regresji

NRI – wskaźnik reklasyfikacji netto – co mówi o nowym markerze?

NRI sprawdza, czy model z nowym markerem przesuwa osoby do trafniejszych kategorii ryzyka. Pokazujemy wzór, wersję kategorialną i ciągłą, przykład w R, opis do pracy i krytykę wskaźnika.

Strona główna / Słownik / NRI – wskaźnik reklasyfikacji netto
W skrócie: NRI (wskaźnik reklasyfikacji netto) to suma dwóch różnic: odsetka osób ze zdarzeniem przesuniętych przez nowy model w górę minus w dół oraz odsetka osób bez zdarzenia przesuniętych w dół minus w górę. Składowe trzeba podawać osobno, a dodatni NRI nie dowodzi, że marker coś wnosi.

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

Dodanie markera zwiększyło AUC z .679 do .703. W kategoriach ryzyka <10%, 10–20% i ≥20% NRI dla osób ze zdarzeniem wyniósł −.033, a dla osób bez zdarzenia .146 (łącznie .113); cała poprawa reklasyfikacji dotyczyła osób bez zdarzenia.

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.

Przykład reprodukowalny

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

Dane wejściowe: 800 osób, predyktor, marker i zdarzenie 0/1 (dane symulowane, set.seed(3941)); połowa do dopasowania modeli, połowa do oceny; kategorie ryzyka <10%, 10–20%, ≥20%.

Co odczytać: tabele przejść między kategoriami, składowe NRI dla zdarzeń i braku zdarzeń, ich sumę, wersję ciągłą (cNRI) oraz AUC modelu bazowego i nowego.

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.703

Bibliografia 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()).

  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/

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

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. 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
  2. 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
  3. 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}}
R