Accedi

È necessario avere un abbonamento a JoVE per visualizzare questo. Accedi o inizia la tua prova gratuita.

In questo articolo

  • Riepilogo
  • Abstract
  • Introduzione
  • Protocollo
  • Risultati
  • Discussione
  • Divulgazioni
  • Riconoscimenti
  • Materiali
  • Riferimenti
  • Ristampe e Autorizzazioni

Riepilogo

Il presente protocollo descrive i codici in R per valutare le capacità di discriminazione e calibrazione di un modello di rischio concorrente, nonché i codici per la convalida interna ed esterna di esso.

Abstract

Il modello di rischio proporzionale di Cox è ampiamente applicato per le analisi di sopravvivenza in contesti clinici, ma non è in grado di far fronte a esiti di sopravvivenza multipli. A differenza del tradizionale modello di rischio proporzionale di Cox, i modelli di rischio concorrenti considerano la presenza di eventi concorrenti e la loro combinazione con un nomogramma, un dispositivo grafico di calcolo, che è uno strumento utile per i medici per condurre una previsione prognostica precisa. In questo studio, riportiamo un metodo per stabilire il nomogramma di rischio concorrente, cioè la valutazione delle sue capacità di discriminazione (cioè indice di concordanza e area sotto la curva) e calibrazione (cioè curve di calibrazione), nonché il beneficio netto (cioè l'analisi della curva decisionale). Inoltre, sono state eseguite anche la convalida interna utilizzando ricampioni bootstrap del set di dati originale e la convalida esterna utilizzando un set di dati esterno del nomogramma di rischio concorrente stabilito per dimostrare la sua capacità di estrapolazione. Il nomogramma del rischio concorrente dovrebbe servire come strumento utile per i medici per prevedere la prognosi con la considerazione dei rischi concorrenti.

Introduzione

Negli ultimi anni, i fattori prognostici emergenti sono stati identificati con lo sviluppo della medicina di precisione e i modelli prognostici che combinano fattori molecolari e clinicopatologici stanno attirando una crescente attenzione in ambito clinico. Tuttavia, i modelli non grafici, come il modello di rischio proporzionale di Cox, con risultati dei valori dei coefficienti, sono difficili da comprendere per i medici1. In confronto, un nomogramma è uno strumento di visualizzazione di modelli di regressione (incluso il modello di regressione di Cox, il modello di rischio concorrente, ecc.), un diagramma bidimensionale progettato per il calcolo grafico approssimativo di una funzione matematica2. Consente la valutazione di diversi livelli di variabili in un modello clinico e il calcolo dei punteggi di rischio (RS) per prevedere la prognosi.

La valutazione del modello è essenziale nella costruzione del modello e due caratteristiche sono generalmente accettate per la valutazione: discriminazione e calibrazione. Nei modelli clinici, la discriminazione si riferisce alla capacità di un modello di separare gli individui che sviluppano eventi da quelli che non lo fanno, come i pazienti che muoiono rispetto a quelli che rimangono in vita, e l'indice di concordanza (indice C) o l'area sotto la curva caratteristica operativa del ricevitore (AUC) sono tipicamente utilizzati per caratterizzarlo 3,4. La calibrazione è un processo di confronto delle probabilità previste di un modello con le probabilità effettive e le curve di calibrazione sono state ampiamente utilizzate per rappresentarlo. Inoltre, la convalida del modello (convalida interna ed esterna) è un passo importante nella costruzione del modello e solo i modelli convalidati possono essere ulteriormente estrapolati5.

Il modello di rischio proporzionale di Cox è un modello di regressione utilizzato nella ricerca medica per studiare le associazioni tra fattori prognostici e stato di sopravvivenza. Tuttavia, il modello di rischio proporzionale di Cox considera solo due stati di esito [Y (0, 1)], mentre i soggetti dello studio spesso affrontano più di due stati e sorgono rischi concorrenti [Y (0, 1, 2)]1. La sopravvivenza globale (OS), che è definita come il tempo che intercorre tra la data di origine (ad esempio, il trattamento) e la data di morte dovuta a qualsiasi causa, è l'endpoint più importante nell'analisi della sopravvivenza. Tuttavia, l'OS non riesce a distinguere la morte specifica per cancro dalla morte non specifica per cancro (ad esempio, eventi cardiovascolari e altre cause non correlate), ignorando così i rischi concorrenti6. In queste situazioni, il modello di rischio concorrente è preferito per la previsione dello stato di sopravvivenza con la considerazione dei rischi concorrenti7. La metodologia di costruzione e convalida dei modelli di rischio proporzionale di Cox è ben consolidata, mentre ci sono state poche relazioni riguardanti la convalida di modelli di rischio concorrenti.

Nel nostro studio precedente, sono stati stabiliti uno specifico nomogramma di rischio concorrente, una combinazione di un nomogramma e un modello di rischio concorrente e una stima del punteggio di rischio basata su un modello di rischio concorrente8. Questo studio mira a presentare diversi metodi di valutazione e convalida del nomogramma di rischio concorrente stabilito, che dovrebbe servire come strumento utile per i medici per prevedere la prognosi con la considerazione dei rischi concorrenti.

Protocollo

Il database di sorveglianza, epidemiologia e risultati finali (SEER) è un database di tumori ad accesso aperto che contiene solo dati di pazienti non identificati (ID SEER: 12296-Nov2018). Pertanto, questo studio è stato esentato dall'approvazione del comitato di revisione dell'ospedale affiliato Jinhua, Zhejiang University School of Medicine.

1. Preparazione dei dati e preparazione dei pacchetti R

  1. Preparare e importare i dati.
    > Dataset <- read.csv(".../Breast cancer Data.xlsx") #Import dati.
    NOTA: i dati vengono caricati nel file supplementare 1.
  2. Installare e caricare i pacchetti R.
    > pacchetti <- c("rms","cmprsk","mstate","sopravvivenza","rischioRegressione","
    prodlim")
    > req.pcg <- function(pcg){
    Nuovo <- PCG[!( pcg %in% installed.packages()[, "Package"])]
    if (length(new)) install.packages(new, dependencies = T)
    sapply(pcg, require, ch = T)
    }
    > req.pcg(pacchetti)

    Nota : eseguire le seguenti procedure basate sul software R (versione 3.6.2) utilizzando i pacchetti rms, cmprsk, mstate, survival, riskRegression e prodlim (http://www.r-projectrg/).

2. Stabilire nomogrammi di rischio concorrenti in due metodi distinti

  1. Stabilire il nomogramma del rischio concorrente in un metodo diretto.
    > mod_cph <- cph(Surv(Mesi di sopravvivenza, stato) ~ fattore1+ fattore2+...,
    x=T, y=T, surv=T, data=Dataset)
    > nom <- nomogramma(mod_cph, fun=list(function(x) 1-surv_cph(36, x)...),
    funlabel=c("3-year event1 Prob." ...), lp=F)
    #Take il 36° mese come esempio.
    > mod_crr <- crr(Survivalmonths, fstatus, failcode=1; cov1=cov)
    > punteggio <- log(log((1-real.3y),(1-cif.min36)))/(maxbeta/100)
    > Trama (nom)
  2. Stabilire il nomogramma del rischio concorrente in un metodo ponderato.
    > df.w <- crprep("Mesi di sopravvivenza"," fstatus",
    data=DataSet, trans=c(1,2), cens=0,
    keep=c("fattore1"," fattore2"...))
    > mod.w <- cph(Surv(Tstart, Tstop, status==1) ~ factor1+factor2+...,
    data=df.w, weight=weight.cens, subset=failcode==1, surv=T)
    > nom.w <- nomogramma(mod.w...)

3. Capacità di discriminazione del nomogramma del rischio concorrente

  1. C-index per la discriminazione
    1. Inserire il cov della matrice nel modello di rischio concorrente mod_crr . e ottenere un SUV a matrice previsto.
      > SUV <- predict.crr(mod_crr, cov)
    2. Ottieni le incidenze cumulative in un determinato mese da suv e calcola il C-index con la funzione rcorr.cens.
      > CIF36 <- SUV[which(suv[,1]==36),][-1]
      > rcorr <- rcorr.cens(1-cif36,Surv(Dataset$Survivalmonths,Dataset$tumordeath))
      > cindex <- rcorr[1]
  2. AUC per discriminazione
    1. Assegna un punteggio alle prestazioni predittive del modello di rischio concorrente utilizzando la funzione Score (pacchetto riskRegression).
      > fgr.w <- FGR(Hist(Survivalmonths, fstatus) ~ factor1+ factor2+..., data=Dataset, cause=1)
      > punteggio <- Score(list("Fine-Gray" = fgr.w),
    2. Estrarre l'AUC dal "punteggio".
      > score$AUC

4. Capacità di calibrazione dei modelli di rischio concorrenti

  1. Curve di calibrazione con un intervallo di confidenza del 95% del modello di rischio concorrente
    1. Ottieni un frame di dati con le incidenze cumulative di ogni singolo individuo in un determinato tempo di errore.
      > cif36 <- data.frame(cif36) #Take il 36° mese come esempio.
      > colnames(cif36.36_o)<-c("36m")
    2. Dividere la coorte in base alle incidenze cumulative stimate in cinque sottogruppi e calcolare l'incidenza cumulativa media prevista di ciascun sottogruppo.
      > group36 <- cut(CIF36$'36m',
      quantile(CIF36$'36M', seq(0, 1, 0.2)),
      include.lowest = TRUE, labels = 1:5)
      > mean36 <- as.vector(by(cif36 $'36m', group36, mean))
    3. Calcolare le incidenze cumulative osservate, cioè le incidenze cumulative effettive, utilizzando la funzione cuminc, e quindi ottenere le incidenze cumulative osservate con un intervallo di confidenza del 95% in un determinato tempo di guasto.
      > 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. Tracciare la curva di calibrazione con le incidenze cumulative previste come asse x e le incidenze cumulative osservate come asse y utilizzando la funzione ggplot.
      > ggplot(df)+ geom_point(aes(x=mean36,y=obs36),col="red")+
      geom_point(aes(x=mean36,y=obs36),col="red",pch=4)+
      geom_line(col="red",aes(x=mean36,y=obs36))+
      geom_errorbar(col="red",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. Curva di calibrazione con punteggi di rischio del modello di rischio concorrente
    1. Valutare ogni livello di tutte le variabili e ottenere il RS totale.
      > Dataset$factor1[Dataset$factor1==1] <- factor1.scale["Factor1_level1"]
      >
      ... #For esempio, Dataset$histology[Dataset$histology==1]<-histology.scale["Histology1"]
      > Dataset$rs <- Dataset$factor1+Dataset$factor2+Dataset$factor3+...
      NOTA: Ottenere la RS totale per ciascun paziente sommando i punti di ciascuna variabile.
    2. Contare le frequenze e calcolare le incidenze cumulative osservate dei diversi punteggi di rischio totali.
      > rs.freq <- as.data.frame(table(Dataset$rs))
      > obs.36 <- vector(mode="numeric", length=nrow(rs.freq))
      > for (i in 1: nrow(rs.freq)) {
      dataset <- subset(Dataset,Dataset$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. Impostare l'intervallo dell'asse x e calcolare l'incidenza cumulativa prevista dei punteggi di rischio totali.
      > RS <- range(nom$total.points)
      > x.36 <- seq (min (RS), max (RS), 0,01)
      > pre.36 <- 1-(1-cif.min36)^exp(x.36*maxbeta/100)
    4. Tracciare la curva di calibrazione con i punteggi di rischio.
      > plot(x.36, pre.36, type='l'...)
      > par(nuovo=VERO)
      > plot(as.vector(rs.freq[,1]), obs.36... )

5. Analisi della curva decisionale di modelli di rischio concorrenti

  1. Generare la funzione stdca per eseguire l'analisi della curva decisionale.
    > fonte("stdca. R")
  2. Estrarre le equazioni polinomiali dal nomogramma per calcolare la probabilità di sopravvivenza.
    > nomogramEx(nomo = nom)
    > Dataset$predictors <- A * (Dataset$rs ^3) + B * (Dataset$rs ^2) + C * Dataset$rs + D
    #predictors sono probabilità previste di morte specifica per cancro calcolate dal nomogramma stabilito
  3. Eseguire l'analisi della curva decisionale.
    > stdca(data = Dataset, outcome = "status", ttoutcome = "Survivalmonths", timepoint = 36;
    predittori = "predittori", cmprsk = VERO, liscio = FALSO, probabilità = FALSO)

    NOTA: Per valutare un risultato in presenza di un rischio concorrente, è necessario scegliere TRUE per cmprsk.

6. Convalida interna utilizzando il metodo bootstrap

  1. Ottieni le incidenze cumulative medie previste utilizzando il metodo bootstrap.
    1. Ricampionare il dataset originale (Dataset) con replace per generare il dataset bootstrap (Dataset_in). Stabilire un modello di rischio concorrente (mod.in_crr) con il set di dati bootstrap. Utilizzare la funzione predict.crr per prevedere mod.in_crr e cicli b volte per generare suvall.in.
      B=b
      suvall.in <- lista()
      for(j in 1:B){
      Dataset_in <- Dataset[sample(c(1:nrow(Dataset)),nrow(Dataset),
      replace = VERO),]
      Allega(Dataset_ in)
      cov. in <- model.matrix(~factor1+ factor2+...) [,-1]
      Mod. in _crr <- crr(Survivalmonths, fstatus, failcode=1; cov1=cov.in)
      detach(Set di dati. interno)
      SUV. in <- predict.crr(mod. in _crr, cov)
      suvall.in[[j]] <- suv.in}
    2. Ottieni la media delle incidenze cumulative previste in un determinato mese.
      CIF36ALL. inner <- vector(mode="numeric", length=nrow(Dataset))
      per (k in 1:B) {
      CIF36ALL. interno<- CIF36ALL. inner+ suvall. inner[[k]][which(suvall. inner[[k]][,1]==36),][-1]
      }
      cif36.in <- cif36all.in/B
  2. Calcolare il C-index utilizzando la convalida incrociata interna con la funzione rcorr.cens.
    rcorr. inner <- rcorr.cens(1-cif36.in,Surv(Dataset$Survivalmonths,Dataset$tumordeath))
    cindex. < interno- rcorr. interno[1]
  3. Eseguire la calibrazione utilizzando la convalida interna incrociata.
    NOTA: I codici della curva di calibrazione del modello di rischio concorrente con validazione interna sono simili ai codici della sezione 4, mentre il suv è stato sostituito da suv.in.

7. Validazione esterna del modello di rischio concorrente

  1. Ottieni le incidenze cumulative previste utilizzando dati esterni. Ottieni le incidenze cumulative previste con la matrice delle variabili di dati esterni (cov.ex).
    suv.ex <- predict.crr(mod_crr,cov.ex)
    cif36.ex <- suv.ex [which(suv.ex $time=="36"),][-1]
  2. Calcolare il C-index utilizzando la convalida esterna.
    rcorr.ex <- rcorr.cens(1-cif36.ex,Surv(Dataset.ex$Survivalmonths,Dataset.ex$tumordeath))
    cindex.ex <- rcorr.ex[1]
  3. Eseguire la calibrazione utilizzando la convalida esterna.
    NOTA: I codici della curva di taratura del modello di rischio concorrente con validazione interna sono simili ai codici della sezione 4, mentre il suv è sostituito da suv.ex.

Risultati

In questo studio, i dati delle pazienti con cancro al seno sono stati recuperati dal database SEER e sono serviti come dati di esempio. Il database SEER fornisce dati sul cancro che rappresentano circa il 34,6% della popolazione degli Stati Uniti ed è stato ottenuto il permesso di accedere al database (numero di riferimento 12296-novembre 2018).

Due nomogrammi (Figura 1), entrambi comprendenti il tipo istologico, il grado differenziato, lo stadio T e lo stadio N,...

Discussione

Questo studio ha confrontato i nomogrammi di rischio concorrenti stabiliti con due metodi distinti e ha condotto la valutazione e la convalida dei nomogrammi stabiliti. In particolare, questo studio ha fornito un tutorial passo-passo per stabilire il nomogramma basato su un metodo diretto, nonché calcolare l'indice C e tracciare le curve di calibrazione.

Il pacchetto rms nel software R è ampiamente utilizzato per la costruzione e la valutazione di modelli di rischio proporzionale di...

Divulgazioni

Gli autori dichiarano di non avere interessi concorrenti.

Riconoscimenti

Lo studio è stato sostenuto da sovvenzioni del Medical Science & Technology Plan Project della provincia di Zhejiang (numero di sovvenzione 2013KYA212), dal programma generale della Fondazione per le scienze naturali della provincia di Zhejiang (numero di sovvenzione Y19H160126) e dal programma chiave del Jinhua Municipal Science & Technology Bureau (numero di sovvenzione 2016-3-005, 2018-3-001d e 2019-3-013).

Materiali

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

Riferimenti

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

Ristampe e Autorizzazioni

Richiedi autorizzazione per utilizzare il testo o le figure di questo articolo JoVE

Richiedi Autorizzazione

Esplora altri articoli

Ricerca sul cancroNumero 187Modello di rischio concorrentenomogrammadiscriminazionecalibrazionevalidazione del modello

This article has been published

Video Coming Soon

JoVE Logo

Riservatezza

Condizioni di utilizzo

Politiche

Ricerca

Didattica

CHI SIAMO

Copyright © 2025 MyJoVE Corporation. Tutti i diritti riservati