Come eseguire la validazione incrociata con un modello di rischio proporzionale Cox?


15

Supponiamo di aver costruito un modello di previsione per il verificarsi di una particolare malattia in un set di dati (il set di dati di creazione del modello) e ora voglio verificare il funzionamento del modello in un nuovo set di dati (il set di dati di convalida). Per un modello costruito con regressione logistica, calcolerei la probabilità prevista per ogni persona nel set di dati di convalida in base ai coefficienti del modello ottenuti dal set di dati di costruzione del modello e quindi, dopo aver dicotomizzato quelle probabilità con un valore di cutoff, posso costruire una tabella 2x2 ciò mi consente di calcolare il tasso positivo reale (sensibilità) e il tasso negativo reale (specificità). Inoltre, posso costruire l'intera curva ROC variando il cutoff e quindi ottenere l'AUC per il grafico ROC.

Supponiamo ora che io abbia effettivamente dei dati di sopravvivenza. Quindi, ho usato un modello di rischi proporzionali di Cox nel set di dati di creazione del modello e ora voglio verificare il funzionamento del modello nel set di dati di convalida. Poiché il rischio di base non è una funzione parametrica nei modelli Cox, non vedo come posso ottenere la probabilità di sopravvivenza prevista per ogni persona nel set di dati di convalida in base ai coefficienti del modello ottenuti nel set di dati di costruzione del modello. Quindi, come posso fare per verificare se il modello funziona nel set di dati di convalida? Ci sono metodi stabiliti per farlo? E se sì, sono implementati in qualche software? Grazie in anticipo per eventuali suggerimenti!

Risposte:


9

Una curva ROC non è utile in questa impostazione, sebbene lo sia l'area ROC generalizzata (c-index, che non richiede alcuna dicotomizzazione). Il rmspacchetto R calcolerà le versioni c-index e cross-validate o bootstrap con correzione di overfitting. È possibile farlo senza trattenere alcun dato se si pre-specifica completamente il modello o si ripete un algoritmo stepdown all'indietro ad ogni ricampionamento. Se vuoi veramente fare una validazione esterna, cioè se il tuo campione di validazione è enorme, puoi usare le seguenti rmsfunzioni: rcorr.cens, val.surv.


Grazie per la risposta. Potresti spiegare perché una curva ROC non è utile in questa impostazione? Ho visto alcune applicazioni importanti in cui è stato utilizzato un tale approccio (ad esempio, Hippisley-Cox et al. (2007). Derivazione e validazione di QRISK, un nuovo punteggio di rischio di malattie cardiovascolari per il Regno Unito: studio prospettico di coorte aperto. British Medical Journal , 335 (7611): 136), quindi ora mi chiedo quali siano i loro metodi.
Wolfgang,

1
Ecco un'analogia. Supponiamo che uno sia interessato a valutare in che modo l'invecchiamento è correlato alla capacità di correre. L'approccio ROC pone la domanda data l'abilità di corsa di qualcuno qual è la probabilità che siano al di sopra di una certa età (arbitraria)? In uno studio di coorte aggiunge solo confusione per invertire i ruoli delle variabili indipendenti e dipendenti, e le curve ROC tentano anche di effettuare tagli su un predittore, che è noto per essere una cattiva pratica statistica - vedi biostat.mc.vanderbilt.edu/ CatContinuous . Oltre a creare havock, i cutpoint devono essere effettivamente funzioni di tutti gli altri predittori.
Frank Harrell,

Ancora una volta, grazie per la risposta. Non sono del tutto convinto però. Concordo pienamente sul fatto che la categorizzazione arbitraria di una variabile continua sia una cattiva pratica, ma l'approccio ROC classifica tutti i possibili tagli e riassume tali informazioni tramite l'AUC. Quindi non c'è arbitrarietà in questo. Sembra anche una pratica standard e accettata per i modelli di regressione logistica. Quindi sei contrario all'uso delle curve ROC in generale o semplicemente nel contesto dei modelli di sopravvivenza?
Wolfgang,

2
X=XX>c

La mia esperienza mi dice che molti ricercatori / professionisti in realtà vogliono regole di decisione dicotomiche (lasciando da parte se ciò sia utile o meno). Ad ogni modo, seguirò alcune di quelle funzioni R e vedrò dove mi arriva. Grazie per la discussione
Wolfgang,

0

So che questa domanda è piuttosto vecchia, ma quello che ho fatto quando ho riscontrato lo stesso problema è stato usare la funzione di previsione per ottenere un "punteggio" per ogni argomento nel set di validazione. Questo è stato seguito dividendo i soggetti a seconda che il punteggio fosse superiore o inferiore a quello mediano e tracciando la curva di Kaplan-Meier. Ciò dovrebbe mostrare una separazione dei soggetti se il modello è predittivo. Ho anche testato la correlazione del punteggio (in realtà del suo ln [per distribuzione normale]) con la sopravvivenza usando la funzione coxph dal pacchetto di sopravvivenza in R.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.