JoVE Logo

Anmelden

Zum Anzeigen dieser Inhalte ist ein JoVE-Abonnement erforderlich. Melden Sie sich an oder starten Sie Ihre kostenlose Testversion.

In diesem Artikel

  • Zusammenfassung
  • Zusammenfassung
  • Einleitung
  • Protokoll
  • Ergebnisse
  • Diskussion
  • Offenlegungen
  • Danksagungen
  • Materialien
  • Referenzen
  • Nachdrucke und Genehmigungen

Zusammenfassung

Das vorliegende Protokoll beschreibt Codes in R zur Bewertung der Unterscheidungs- und Kalibrierungsfähigkeiten eines konkurrierenden Risikomodells sowie Codes für die interne und externe Validierung eines Modells.

Zusammenfassung

Das Cox-Modell der proportionalen Gefährdung wird häufig für Überlebensanalysen im klinischen Umfeld eingesetzt, ist jedoch nicht in der Lage, mehrere Überlebensergebnisse zu bewältigen. Im Gegensatz zum traditionellen Cox-Proportional-Hazard-Modell berücksichtigen konkurrierende Risikomodelle das Vorhandensein konkurrierender Ereignisse und deren Kombination mit einem Nomogramm, einem grafischen Berechnungsgerät, das ein nützliches Werkzeug für Kliniker ist, um eine präzise prognostische Vorhersage durchzuführen. In dieser Studie berichten wir über eine Methode zur Etablierung des konkurrierenden Risikonomogramms, d.h. die Bewertung seiner Diskriminationsfähigkeit (d.h. Konkordanzindex und Fläche unter der Kurve) und Kalibrierungsfähigkeiten (d.h. Kalibrierungskurven) sowie des Nettonutzens (d.h. Entscheidungskurvenanalyse). Darüber hinaus wurden auch eine interne Validierung mit Bootstrap-Resamples des ursprünglichen Datensatzes und eine externe Validierung mit einem externen Datensatz des etablierten konkurrierenden Risikonomogramms durchgeführt, um dessen Extrapolationsfähigkeit zu demonstrieren. Das Nomogramm des konkurrierenden Risikos sollte als nützliches Instrument für Kliniker dienen, um die Prognose unter Berücksichtigung konkurrierender Risiken vorherzusagen.

Einleitung

In den letzten Jahren wurden mit der Entwicklung der Präzisionsmedizin neue Prognosefaktoren identifiziert, und Prognosemodelle, die molekulare und klinisch-pathologische Faktoren kombinieren, erregen zunehmend Aufmerksamkeit im klinischen Umfeld. Nicht-grafische Modelle, wie z. B. das Cox-Proportional-Hazard-Modell, mit Ergebnissen von Koeffizientenwerten, sind für Kliniker jedoch schwer zu verstehen1. Im Vergleich dazu ist ein Nomogramm ein Visualisierungswerkzeug von Regressionsmodellen (einschließlich des Cox-Regressionsmodells, des konkurrierenden Risikomodells usw.), ein zweidimensionales Diagramm, das für die näherungsweise grafische Berechnung einer mathematischen Funktion2 entwickelt wurde. Es ermöglicht die Bewertung verschiedener Variablenebenen in einem klinischen Modell und die Berechnung von Risiko-Scores (RS) zur Vorhersage der Prognose.

Die Modellbewertung ist im Modellbau unerlässlich, und zwei Merkmale werden allgemein für die Bewertung akzeptiert: Unterscheidung und Kalibrierung. In klinischen Modellen bezieht sich Unterscheidung auf die Fähigkeit eines Modells, Individuen, die Ereignisse entwickeln, von denen zu unterscheiden, die keine Ereignisse entwickeln, wie z. B. Patienten, die sterben, von denen, die am Leben bleiben, und der Konkordanzindex (C-Index) oder die Fläche unter der Empfänger-Betriebskennlinie (AUC) werden typischerweise verwendet, um sie zu charakterisieren 3,4. Die Kalibrierung ist ein Prozess, bei dem die vorhergesagten Wahrscheinlichkeiten eines Modells mit den tatsächlichen Wahrscheinlichkeiten verglichen werden, und Kalibrierungskurven werden häufig verwendet, um sie darzustellen. Darüber hinaus ist die Modellvalidierung (interne und externe Validierung) ein wichtiger Schritt in der Modellkonstruktion, und nur validierte Modelle können weiter extrapoliert werden5.

Das Cox-Proportional-Hazard-Modell ist ein Regressionsmodell, das in der medizinischen Forschung verwendet wird, um die Zusammenhänge zwischen prognostischen Faktoren und dem Überlebensstatus zu untersuchen. Das proportionale Cox-Hazard-Modell berücksichtigt jedoch nur zwei Ergebnisstatus [Y (0, 1)], während die Studienteilnehmer oft mit mehr als zwei Status konfrontiert sind und konkurrierende Risiken auftreten [Y (0, 1, 2)]1. Das Gesamtüberleben (OS), definiert als die Zeit vom Entstehungsdatum (z. B. Behandlung) bis zum Todesdatum aufgrund einer beliebigen Ursache, ist der wichtigste Endpunkt in der Überlebensanalyse. Das OS unterscheidet jedoch nicht zwischen krebsspezifischen Todesfällen und nicht-krebsspezifischen Todesfällen (z. B. kardiovaskuläre Ereignisse und andere nicht verwandte Ursachen) und ignoriert daher konkurrierende Risiken6. In diesen Situationen wird das konkurrierende Risikomodell für die Vorhersage des Überlebensstatus unter Berücksichtigung konkurrierender Risikenbevorzugt 7. Die Methodik zur Konstruktion und Validierung von Cox-Proportional-Hazard-Modellen ist gut etabliert, während es nur wenige Berichte über die Validierung konkurrierender Risikomodelle gibt.

In unserer vorangegangenen Studie wurden ein spezifisches Nomogramm für konkurrierende Risiken, eine Kombination aus einem Nomogramm und einem Modell für konkurrierende Risiken sowie eine Schätzung des Risiko-Scores auf der Grundlage eines konkurrierenden Risikomodells erstellt8. Ziel dieser Studie ist es, verschiedene Methoden zur Evaluierung und Validierung des etablierten konkurrierenden Risikonomogramms vorzustellen, die als nützliches Werkzeug für Kliniker dienen sollen, um die Prognose unter Berücksichtigung konkurrierender Risiken vorherzusagen.

Protokoll

Die Datenbank Surveillance, Epidemiology, and End Results (SEER) ist eine frei zugängliche Krebsdatenbank, die nur anonymisierte Patientendaten enthält (SEER-ID: 12296-Nov2018). Daher wurde diese Studie von der Genehmigung durch den Prüfungsausschuss des angeschlossenen Jinhua-Krankenhauses, Zhejiang University School of Medicine, ausgenommen.

1. Datenaufbereitung und Vorbereitung von R-Paketen

  1. Bereiten Sie die Daten vor und importieren Sie sie.
    > Datensatz <- read.csv(".../Brustkrebsdaten.xlsx") #Import Daten.
    HINWEIS: Die Daten werden in die Ergänzungsdatei 1 hochgeladen.
  2. Installieren und laden Sie die R-Pakete.
    > Pakete <- c("rms","cmprsk","mstate","survival","riskRegression","
    prodlim")
    > req.pcg <- function(pcg){
    Neue <- PCG[!( pcg %in% installed.packages()[, "Paket"])]
    if (length(new)) install.packages(new, dependencies = T)
    sapply(pcg, erfordern, ch = T)
    }
    > req.pcg(Pakete)

    Hinweis: Führen Sie die folgenden Verfahren basierend auf der R-Software (Version 3.6.2) mit den Paketen rms, cmprsk, mstate, survival, riskRegression und prodlim (http://www.r-projectrg/) aus.

2. Konkurrierende Risikonomogramme mit zwei unterschiedlichen Methoden erstellen

  1. Legen Sie das konkurrierende Risikonomogramm in einer direkten Methode fest.
    > mod_cph <- cph(Surv(Überlebensmonate, Status) ~ Faktor1+ Faktor2+...,
    x=T, y=T, surv=T, data=Datensatz)
    > nom <- nomogram(mod_cph, fun=list(function(x) 1-surv_cph(36, x)...),
    funlabel=c("3-Jahres-Ereignis1 Prob." ...), lp=F)
    #Take den 36. Monat als Beispiel.
    > mod_crr <- crr(Überlebensmonate, fstatus, failcode=1, cov1=cov)
    > Ergebnis <- log(log((1-real.3y),(1-cif.min36)))/(maxbeta/100)
    > plot(nom)
  2. Ermitteln Sie das konkurrierende Risikonomogramm in einer gewichteten Methode.
    > df.w <- crprep("Überlebensmonate"," fstatus",
    data=Datensatz, trans=c(1,2), cens=0,
    keep=c("Faktor1",Faktor2"...))
    > mod.w <- cph(Surv(Tstart, Tstop, status==1) ~ factor1+factor2+...,
    data=df.w, weight=weight.cens, subset=failcode==1, surv=T)
    > nom.w <- Nomogramm(mod.w...)

3. Unterscheidungsfähigkeit des konkurrierenden Risikonomogramms

  1. C-Index für Diskriminierung
    1. Passen Sie die Matrix-Haube in das konkurrierende Risikomodell mod_crr. ein und erhalten Sie einen prognostizierten Matrix-SUV.
      > SUV <- predict.crr(mod_crr, cov)
    2. Holen Sie sich die kumulierten Inzidenzen in einem bestimmten Monat von suv und berechnen Sie den C-Index mit der Funktion rcorr.cens.
      > CIF36 <- SUV[which(suv[,1]==36),][-1]
      > rcorr <- rcorr.cens(1-cif36,Surv(Dataset$Survivalmonths,Dataset$tumordeath))
      > cindex <- rcorr[1]
  2. AUC für Diskriminierung
    1. Bewerten Sie die Vorhersageleistung des konkurrierenden Risikomodells mit der Funktion Score (riskRegressionspaket).
      > fgr.w <- FGR(Hist(Überlebensmonate, fstatus) ~ Faktor1+ Faktor2+..., data=Datensatz, Ursache=1)
      > Partitur <- Score(list("Fine-Gray" = fgr.w),
    2. Extrahieren Sie die AUC aus dem "Score".
      > score$AUC

4. Kalibrierfähigkeit konkurrierender Risikomodelle

  1. Kalibrierkurven mit einem 95%-Konfidenzintervall des konkurrierenden Risikomodells
    1. Rufen Sie einen Datenrahmen mit den kumulativen Vorfällen jedes Einzelnen in einer bestimmten Fehlerzeit ab.
      > cif36 <- data.frame(cif36) #Take den 36 . Monat als Beispiel.
      > colnames(cif36.36_o)<-c("36m")
    2. Teilen Sie die Kohorte gemäß den geschätzten kumulativen Inzidenzen in fünf Untergruppen ein und berechnen Sie die durchschnittlichen prognostizierten kumulativen Inzidenzen jeder Untergruppe.
      > Gruppe36 <- Cut(cif36$'36m',
      quantil(cif36$'36m', seq(0, 1, 0.2)),
      include.lowest = TRUE, labels = 1:5)
      > Mittelwert36 <- as.vector(by(cif36 $'36m', group36, mean))
    3. Berechnen Sie die beobachteten kumulativen Inzidenzen, d. h. die tatsächlichen kumulativen Inzidenzen, mithilfe der Funktion cuminc, und erhalten Sie dann die beobachteten kumulativen Inzidenzen mit einem Konfidenzintervall von 95 % in einer bestimmten Fehlerzeit.
      > cum36 <- cuminc(Dataset$Survivalmonths,Dataset$fstatus,group36)
      > obs36 <- timepoints(cum36,Dataset$Survivalmonths)$est[c(1:5),36]
      > obs36var <- timepoints(cum36,Dataset$Survivalmonths)$var[c(1:5),36]
      > df <- data.frame(mean36, obs36, obs36var)
    4. Zeichnen Sie die Kalibrierungskurve mit den vorhergesagten kumulativen Inzidenzen als x-Achse und den beobachteten kumulativen Inzidenzen als y-Achse mit der Funktion ggplot.
      > ggplot(df)+ geom_point(aes(x=mean36,y=obs36),col="red")+
      geom_point(AES(x=Mittelwert36,y=obs36),col="rot",pch=4)+
      geom_line(col="rot",aes(x=mean36,y=obs36))+
      geom_errorbar(col="rot",aes(x=mean36,y=obs36+1.96
      *sqrt(obs36var)),
      ymin = obs36-1.96*sqrt(obs36var), ymax = obs36+1.96
      *sqrt(obs36var))
      geom_abline(lty=3,lwd=2,col=c(rgb(0,118,192,
      maxColorValue=255)))
  2. Kalibrierkurve mit Risiko-Scores des konkurrierenden Risikomodells
    1. Bewerten Sie jede Stufe aller Variablen und erhalten Sie die Gesamt-RS.
      > Dataset$factor1[Dataset$factor1==1] <- factor1.scale["Factor1_level1"]
      >
      ... #For Beispiel: Dataset$histology[Dataset$histology==1]<-histology.scale["Histology1"]
      > Dataset$rs <- Dataset$factor1+Dataset$factor2+Dataset$factor3+...
      HINWEIS: Ermitteln Sie die Gesamt-RS für jeden Patienten, indem Sie die Punkte jeder Variablen summieren.
    2. Zählen Sie die Häufigkeiten und berechnen Sie die beobachteten kumulativen Inzidenzen der verschiedenen Gesamtrisikobewertungen.
      > rs.freq <- as.data.frame(table(Dataset$rs))
      > obs.36 <- vector(mode="numeric", length=nrow(rs.freq))
      > für (i in 1: nrow(rs.freq)) {
      Datensatz <- Teilmenge(Datensatz,Datensatz$rs== rs.freq [i,1])
      cif.dataset <- cuminc(dataset$Survivalmonths,dataset$death3)
      cif36.dataset <- timepoints(cif.dataset,36)
      obs.36[i] <- cif36.dataset$est[1]}
    3. Legen Sie den Bereich der x-Achse fest, und berechnen Sie die prognostizierten kumulativen Inzidenzen der Gesamtrisikobewertungen.
      > RS <- Bereich(nom$total.points)
      > x.36 <- seq(min(RS),max(RS),01)
      > pre.36 <- 1-(1-cif.min36)^exp(x.36*maxbeta/100)
    4. Zeichnen Sie die Kalibrierungskurve mit Risikobewertungen.
      > plot(x.36, pre.36, type='l'...)
      > par(new=TRUE)
      > plot(as.vector(rs.freq[,1]), obs.36... )

5. Entscheidungskurvenanalyse konkurrierender Risikomodelle

  1. Beziehen Sie die stdca-Funktion , um die Entscheidungskurvenanalyse durchzuführen.
    > source("stdca. R")
  2. Extrahieren Sie die Polynomgleichungen aus dem Nomogramm, um die Überlebenswahrscheinlichkeit zu berechnen.
    > nomogramEx(nomo = nom)
    > Datensatz$Prädiktoren <- A * (Datensatz$rs ^3) + B * (Datensatz$rs ^2) + C * Datensatz$rs + D
    #predictors sind vorhergesagte Wahrscheinlichkeiten für krebsspezifische Todesfälle, die durch das etablierte Nomogramm berechnet werden
  3. Führen Sie die Entscheidungskurvenanalyse durch.
    > stdca(data = Datensatz, outcome = "status", ttoutcome = "Überlebensmonate", timepoint = 36,
    predictors = "predictors", cmprsk = TRUE, smooth = FALSE, probability = FALSE)

    HINWEIS: Für die Bewertung eines Ergebnisses bei Vorliegen eines konkurrierenden Risikos sollte für cmprsk TRUE gewählt werden.

6. Interne Validierung mit der Bootstrap-Methode

  1. Rufen Sie die durchschnittlichen prognostizierten kumulativen Inzidenzen mithilfe der Bootstrap-Methode ab.
    1. Führen Sie ein Resampling des ursprünglichen Datasets (Dataset) durch Ersetzen durch, um das Bootstrap-Dataset (Dataset_in) zu generieren. Richten Sie ein konkurrierendes Risikomodell (mod.in_crr) mit dem Bootstrap-Dataset ein. Verwenden Sie die Funktion predict.crr, um mod.in_crr vorherzusagen, und schleifen Sie b-Zeiten, um suvall.in zu generieren.
      B=b
      suvall.in <- list()
      for(j in 1:B){
      Dataset_in <- Datensatz[Beispiel(c(1:nrow(Datensatz)),nrow(Datensatz),
      replace = TRUE),]
      anhängen(Dataset_ in)
      cov. in <- model.matrix(~Faktor1+ Faktor2+...) [,-1]
      Mod. in _crr <- crr(Überlebensmonate, fstatus, failcode=1, cov1=cov.in)
      detach(Datensatz. inner)
      SUV. in <- predict.crr(mod. in _crr, cov)
      suvall.in[[j]] <- suv.in}
    2. Ermitteln Sie die durchschnittliche prognostizierte kumulative Inzidenz in einem bestimmten Monat.
      cif36all. inner <- vector(mode="numeric", length=nrow(Dataset))
      for (k in 1:B) {
      cif36all. Innen<- CIF36ALL. inner+ suvall. inner[[k]][which(suvall. inner[[k]][,1]==36),][-1]
      }
      cif36.in <- cif36all.in/B
  2. Berechnen Sie den C-Index mithilfe der internen Kreuzvalidierung mit der Funktion rcorr.cens.
    rcorr. innere <- rcorr.cens(1-cif36.in,Surv(Dataset$Survivalmonths,Dataset$tumordeath))
    cindex. Inneres <- rcorr. inner[1]
  3. Kalibrieren Sie mit der internen Kreuzvalidierung.
    HINWEIS: Die Codes der Kalibrierungskurve des konkurrierenden Risikomodells mit interner Validierung ähneln den Codes in Abschnitt 4, während SUV durch suv.in ersetzt wurde.

7. Externe Validierung des konkurrierenden Risikomodells

  1. Rufen Sie die prognostizierten kumulativen Inzidenzen mithilfe externer Daten ab. Rufen Sie die prognostizierten kumulativen Inzidenzen mit der Matrix der externen Datenvariablen (cov.ex) ab.
    suv.ex <- predict.crr(mod_crr,cov.ex)
    cif36.ex <- suv.ex [which(suv.ex $time=="36"),][-1]
  2. Berechnen Sie den C-Index mithilfe einer externen Validierung.
    rcorr.ex <- rcorr.cens(1-cif36.ex,Surv(Dataset.ex$Survivalmonths,Dataset.ex$tumordeath))
    cindex.ex <- rcorr.ex[1]
  3. Kalibrieren Sie mit externer Validierung.
    HINWEIS: Die Codes der Kalibrierungskurve des konkurrierenden Risikomodells mit interner Validierung ähneln den Codes in Abschnitt 4, während suv durch suv.ex ersetzt wird.

Ergebnisse

In dieser Studie wurden Daten von Patientinnen mit Brustkrebs aus der SEER-Datenbank abgerufen und als Beispieldaten dient. Die SEER-Datenbank enthält Daten zu Krebserkrankungen, die etwa 34,6 % der Bevölkerung der Vereinigten Staaten ausmachen, und es wurde die Erlaubnis für den Zugriff auf die Datenbank eingeholt (Referenznummer 12296-Nov2018).

Zwei Nomogramme (Abbildung 1), die beide den histologischen Typ, den differenzierten Grad, das T-Stadium und das N-S...

Diskussion

In dieser Studie wurden konkurrierende Risikonomogramme, die mit zwei unterschiedlichen Methoden erstellt wurden, verglichen und die etablierten Nomogramme ausgewertet und validiert. Konkret wurde in dieser Studie eine Schritt-für-Schritt-Anleitung zur Erstellung des Nomogramms auf der Grundlage einer direkten Methode sowie zur Berechnung des C-Index und zur Darstellung der Kalibrierungskurven bereitgestellt.

Das rms-Paket in der R-Software wird häufig für die Konstruktion und Bewe...

Offenlegungen

Die Autoren erklären, dass sie keine Interessenkonflikte haben.

Danksagungen

Die Studie wurde durch Zuschüsse aus dem Medical Science & Technology Plan Project der Provinz Zhejiang (Fördernummern 2013KYA212), dem allgemeinen Programm der Zhejiang Province Natural Science Foundation (Fördernummer Y19H160126) und dem Schlüsselprogramm des Jinhua Municipal Science & Technology Bureau (Fördernummern 2016-3-005, 2018-3-001d und 2019-3-013) unterstützt.

Materialien

NameCompanyCatalog NumberComments
R softwareNoneNot ApplicableVersion 3.6.2 or higher 
Computer systemMicrosoft Windows 10 Windows 10 or higher

Referenzen

  1. Andersen, P. K., Gill, R. D. Cox's regression model for counting processes: A large sample study. The Annals of Statistics. 10 (4), 1100-1120 (1982).
  2. Lubsen, J., Pool, J., vander Does, E. A practical device for the application of a diagnostic or prognostic function. Methods of Information in Medicine. 17 (2), 127-129 (1978).
  3. Harrell, F. E., Lee, K. L., Mark, D. B. Multivariable prognostic models: Issues in developing models, evaluating assumptions and adequacy, and measuring and reducing errors. Statistics In Medicine. 15 (4), 361-387 (1996).
  4. Hung, H., Chiang, C. -. T. Estimation methods for time-dependent AUC models with survival data. The Canadian Journal of Statistics / La Revue Canadienne de Statistique. 38 (1), 8-26 (2010).
  5. Moons, K. G. M., et al. Risk prediction models: I. Development, internal validation, and assessing the incremental value of a new (bio)marker. Heart. 98 (9), 683-690 (2012).
  6. Fu, J., et al. Real-world impact of non-breast cancer-specific death on overall survival in resectable breast cancer. Cancer. 123 (13), 2432-2443 (2017).
  7. Fine, J. P., Gray, R. J. A proportional hazards model for the subdistribution of a competing risk. Journal of the American Statistical Association. 94 (446), 496-509 (1999).
  8. Wu, L., et al. Establishing a competing risk regression nomogram model for survival data. Journal of Visualized Experiments. (164), e60684 (2020).
  9. Zhang, Z., Geskus, R. B., Kattan, M. W., Zhang, H., Liu, T. Nomogram for survival analysis in the presence of competing risks. Annals of Translational Medicine. 5 (20), 403 (2017).
  10. Zhang, Z. H., et al. Overview of model validation for survival regression model with competing risks using melanoma study data. Annals Of Translational Medicine. 6 (16), 325 (2018).
  11. Newson, R. Confidence intervals for rank statistics: Somers' D and extensions. Stata Journal. 6 (3), 309-334 (2006).
  12. Davison, A. C., Hinkley, D. V., Schechtman, E. Efficient bootstrap simulation. Biometrika. 73 (3), 555-566 (1986).
  13. Roecker, E. B. Prediction error and its estimation for subset-selected models. Technometrics. 33 (4), 459-468 (1991).
  14. Steyerberg, E. W., Harrell, F. E. Prediction models need appropriate internal, internal-external, and external validation. Journal of Clinical Epidemiology. 69, 245-247 (2016).
  15. Zhang, Z., Chen, L., Xu, P., Hong, Y. Predictive analytics with ensemble modeling in laparoscopic surgery: A technical note. Laparoscopic, Endoscopic and Robotic Surgery. 5 (1), 25-34 (2022).

Nachdrucke und Genehmigungen

Genehmigung beantragen, um den Text oder die Abbildungen dieses JoVE-Artikels zu verwenden

Genehmigung beantragen

Weitere Artikel entdecken

KrebsforschungHeft 187Konkurrierendes RisikomodellNomogrammDiskriminationKalibrierungModellvalidierung

This article has been published

Video Coming Soon

JoVE Logo

Datenschutz

Nutzungsbedingungen

Richtlinien

Forschung

Lehre

ÜBER JoVE

Copyright © 2025 MyJoVE Corporation. Alle Rechte vorbehalten