¿Alguien puede explicarme mi modelo de Cox en inglés simple?
Ajusté el siguiente modelo de regresión de Cox a todos mis datos usando la cph
función. Mis datos se guardan en un objeto llamado Data
. Las variables w
, x
y y
son continuas; z
Es un factor de dos niveles. El tiempo se mide en meses. A algunos de mis pacientes les faltan datos para la variable z
( Nota : He notado debidamente la sugerencia del Dr. Harrell, a continuación, de que imputo estos valores para evitar sesgar mi modelo, y lo haré en el futuro).
> fit <- cph(formula = Surv(time, event) ~ w + x + y + z, data = Data, x = T, y = T, surv = T, time.inc = 12)
Cox Proportional Hazards Model
Frequencies of Missing Values Due to Each Variable
Surv(time, event) w x y z
0 0 0 0 14
Model Tests Discrimination
Indexes
Obs 152 LR chi2 8.33 R2 0.054
Events 64 d.f. 4 g 0.437
Center 0.7261 Pr(> chi2) 0.0803 gr 1.548
Score chi2 8.07
Pr(> chi2) 0.0891
Coef S.E. Wald Z Pr(>|Z|)
w -0.0133 0.0503 -0.26 0.7914
x -0.0388 0.0351 -1.11 0.2679
y -0.0363 0.0491 -0.74 0.4600
z=1 0.3208 0.2540 1.26 0.2067
También traté de probar la suposición de riesgos proporcionales usando el cox.zph
comando, a continuación, pero no sé cómo interpretar sus resultados. Poner plot()
alrededor del comando da un mensaje de error.
cox.zph(fit, transform="km", global=TRUE)
rho chisq p
w -0.1125 1.312 0.2520
x 0.0402 0.179 0.6725
y 0.2349 4.527 0.0334
z=1 0.0906 0.512 0.4742
GLOBAL NA 5.558 0.2347
Primer problema
- ¿Alguien puede explicarme los resultados de la salida anterior en inglés simple? Tengo antecedentes médicos y no tengo capacitación formal en estadística.
Segundo problema
Como lo sugirió el Dr. Harrell, me gustaría validar internamente mi modelo realizando 100 iteraciones de validación cruzada 10 veces utilizando el
rms
paquete (por lo que entiendo, esto implicaría construir100 * 10 = 1000
diferentes modelos y luego pedirles que predigan los tiempos de supervivencia de pacientes que nunca habían visto).Intenté usar la
validate
función, como se muestra.> v1 <- validate(fit, method="crossvalidation", B = 10, dxy=T) > v1 index.orig training test optimism index.corrected n Dxy -0.2542 -0.2578 -0.1356 -0.1223 -0.1320 10 R2 0.0543 0.0565 0.1372 -0.0806 0.1350 10 Slope 1.0000 1.0000 0.9107 0.0893 0.9107 10 D 0.0122 0.0128 0.0404 -0.0276 0.0397 10 U -0.0033 -0.0038 0.0873 -0.0911 0.0878 10 Q 0.0155 0.0166 -0.0470 0.0636 -0.0481 10 g 0.4369 0.4424 0.6754 -0.2331 0.6700 10
¿Cómo se realiza el muestreo de 100x? Creo que mi código anterior solo realiza la validación cruzada una vez.
Entonces quería saber qué tan bueno era mi modelo en la predicción. Intenté lo siguiente:
> c_index <- abs(v1[1,5])/2 + 0.5 > c_index [1] 0.565984
¿Significa esto que mi modelo es solo un poco mejor que lanzar una moneda?
Tercer problema
El Dr. Harrell señala que asumí la linealidad de los efectos covariables, y que el número de eventos en mi muestra es apenas lo suficientemente grande como para ajustarse a un modelo confiable si todos los efectos covariables son lineales.
- ¿Significa esto que debería incluir algún tipo de término de interacción en mi modelo? Si es así, ¿algún consejo sobre qué poner?
cph
resultado anterior en inglés simple o me indicara una referencia que lo hiciera. Dr. Harrell, ¡muchas gracias por su ayuda hasta ahora!