Ho creato alcuni modelli di regressione di Cox e vorrei vedere quanto bene funzionano questi modelli e ho pensato che forse una curva ROC o una statistica c potrebbe essere utile simile a questo articolo:
Armitage ha utilizzato la regressione logistica, ma mi chiedo se sia possibile utilizzare un modello dal pacchetto di sopravvivenza, survivalROC dà un'idea di ciò che è possibile, ma non riesco a capire come farlo funzionare con una regressione di Cox regolare.
Le sarei grato se qualcuno mi mostrasse come fare un'analisi ROC su questo esempio:
library(survival)
data(veteran)
attach(veteran)
surv <- Surv(time, status)
fit <- coxph(surv ~ trt + age + prior, data=veteran)
summary(fit)
Se possibile, apprezzerei sia l'output c-statics grezzo sia un bel grafico
Grazie!
Aggiornare
Grazie mille per le risposte. @Dwin: vorrei solo essere sicuro di averlo capito bene prima di selezionare la tua risposta.
Il calcolo come ho capito secondo il suggerimento di DWin:
library(survival)
library(rms)
data(veteran)
fit.cph <- cph(surv ~ trt + age + prior, data=veteran, x=TRUE, y=TRUE, surv=TRUE)
# Summary fails!?
#summary(fit.cph)
# Get the Dxy
v <- validate(fit.cph, dxy=TRUE, B=100)
# Is this the correct value?
Dxy = v[rownames(v)=="Dxy", colnames(v)=="index.corrected"]
# The c-statistic according to the Dxy=2(c-0.5)
Dxy/2+0.5
Non ho familiarità con la funzione validate e il bootstrap ma dopo aver visto il prof. La risposta di Frank Harrel qui su R-help ho pensato che probabilmente era il modo di ottenere il Dxy. La guida per gli stati di convalida:
... Correlazione del Dxy rank di Somers da calcolare ad ogni ricampionamento (questo richiede un po 'più di tempo rispetto alle statistiche basate sulla probabilità). I valori corrispondenti alla riga Dxy sono uguali a 2 * (C - 0,5) dove C è l'indice C o la probabilità di concordanza.
Immagino di essere per lo più confuso dalle colonne. Ho pensato che il valore corretto fosse quello che dovrei usare ma non ho davvero capito l'output validato:
index.orig training test optimism index.corrected n
Dxy -0.0137 -0.0715 -0.0071 -0.0644 0.0507 100
R2 0.0079 0.0278 0.0037 0.0242 -0.0162 100
Slope 1.0000 1.0000 0.2939 0.7061 0.2939 100
...
Nella domanda R-help ho capito che avrei dovuto "surv = TRUE" nel cph se avessi degli strati ma non sono sicuro di quale sia lo scopo del parametro "u = 60" nella funzione validate. Le sarei grato se potesse aiutarmi a capirli e verificare che non ho fatto errori.
index.corrected
è ciò che dovrebbe essere sottolineato. Queste sono stime della probabile performance futura. u=60
non è necessario validate
perché non hai strati. Se hai strati, le curve di sopravvivenza possono incrociarsi e devi specificare un particolare punto temporale per ottenere l'area ROC generalizzata.
cph()
comando.