He creado algunos modelos de regresión de Cox y me gustaría ver qué tan bien funcionan estos modelos y pensé que quizás una curva ROC o una estadística c podría ser útil de manera similar al uso de estos artículos:
Armitage usó la regresión logística, pero me pregunto si es posible usar un modelo del paquete de supervivencia, survivalROC da una pista de que esto es posible, pero no puedo encontrar la manera de hacer que funcione con una regresión de Cox regular.
Estaría agradecido si alguien me mostrara cómo hacer un análisis ROC en este ejemplo:
library(survival)
data(veteran)
attach(veteran)
surv <- Surv(time, status)
fit <- coxph(surv ~ trt + age + prior, data=veteran)
summary(fit)
Si es posible, agradecería tanto la salida de c-static estática como un buen gráfico
¡Gracias!
Actualizar
Muchas gracias por las respuestas. @Dwin: Me gustaría asegurarme de haberlo entendido bien antes de seleccionar su respuesta.
El cálculo tal como lo entiendo según la sugerencia de 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
No estoy familiarizado con la función de validación y bootstrapping, pero después de mirar al profesor. La respuesta de Frank Harrel aquí en R-help me di cuenta de que probablemente sea la forma de obtener el Dxy. La ayuda para validar estados:
... La correlación de rango Dxy de Somers se calculará en cada muestra (esto lleva un poco más de tiempo que las estadísticas basadas en la probabilidad). Los valores correspondientes a la fila Dxy son iguales a 2 * (C - 0.5) donde C es el índice C o la probabilidad de concordancia.
Supongo que estoy confundido por las columnas. Pensé que el valor corregido es el que debería usar, pero realmente no he entendido la salida de validación:
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
...
En la pregunta de R-help , he entendido que debería tener "surv = TRUE" en el cph si tengo estratos, pero no estoy seguro de cuál es el propósito del parámetro "u = 60" en la función de validación. Le agradecería que me ayudara a comprender esto y comprobar que no he cometido ningún error.
index.corrected
es lo que debe enfatizarse. Estas son estimaciones del probable rendimiento futuro. u=60
no es necesario validate
ya que no tienes estratos. Si tenía estratos, las curvas de supervivencia pueden cruzarse, y debe especificar un punto de tiempo particular para obtener el área ROC generalizada.
cph()
comando.