una - Cómo trazar la curva de supervivencia generada por survreg(paquete de supervivencia de R)?
residuos de schoenfeld en r (3)
Estoy tratando de ajustar y trazar un modelo de Weibull a los datos de supervivencia. Los datos tienen solo una covariable, cohorte, que va de 2006 a 2010. Entonces, ¿alguna idea sobre qué agregar a las dos líneas de código que siguen para trazar la curva de supervivencia de la cohorte de 2010?
library(survival)
s <- Surv(subSetCdm$dur,subSetCdm$event)
sWei <- survreg(s ~ cohort,dist=''weibull'',data=subSetCdm)
Lo mismo con el modelo Cox PH es bastante sencillo, con las siguientes líneas. El problema es que survfit () no acepta objetos de tipo survreg.
sCox <- coxph(s ~ cohort,data=subSetCdm)
cohort <- factor(c(2010),levels=2006:2010)
sfCox <- survfit(sCox,newdata=data.frame(cohort))
plot(sfCox,col=''green'')
Usando el pulmón de datos (del paquete de supervivencia), esto es lo que estoy tratando de lograr.
#create a Surv object
s <- with(lung,Surv(time,status))
#plot kaplan-meier estimate, per sex
fKM <- survfit(s ~ sex,data=lung)
plot(fKM)
#plot Cox PH survival curves, per sex
sCox <- coxph(s ~ as.factor(sex),data=lung)
lines(survfit(sCox,newdata=data.frame(sex=1)),col=''green'')
lines(survfit(sCox,newdata=data.frame(sex=2)),col=''green'')
#plot weibull survival curves, per sex, DOES NOT RUN
sWei <- survreg(s ~ as.factor(sex),dist=''weibull'',data=lung)
lines(survfit(sWei,newdata=data.frame(sex=1)),col=''red'')
lines(survfit(sWei,newdata=data.frame(sex=2)),col=''red'')
Espero que esto ayude y no he cometido ningún error engañoso:
copiado desde arriba:
#create a Surv object
s <- with(lung,Surv(time,status))
#plot kaplan-meier estimate, per sex
fKM <- survfit(s ~ sex,data=lung)
plot(fKM)
#plot Cox PH survival curves, per sex
sCox <- coxph(s ~ as.factor(sex),data=lung)
lines(survfit(sCox,newdata=data.frame(sex=1)),col=''green'')
lines(survfit(sCox,newdata=data.frame(sex=2)),col=''green'')
para Weibull, use predict, re el comentario de Vincent:
#plot weibull survival curves, per sex,
sWei <- survreg(s ~ as.factor(sex),dist=''weibull'',data=lung)
lines(predict(sWei, newdata=list(sex=1),type="quantile",p=seq(.01,.99,by=.01)),seq(.99,.01,by=-.01),col="red")
lines(predict(sWei, newdata=list(sex=2),type="quantile",p=seq(.01,.99,by=.01)),seq(.99,.01,by=-.01),col="red")
El truco aquí fue revertir las órdenes de cuantiles para trazar versus predecir. Es probable que haya una mejor manera de hacerlo, pero funciona aquí. ¡Buena suerte!
Esta es solo una nota que aclara la respuesta de Tim Riffe , que usa el siguiente código:
lines(predict(sWei, newdata=list(sex=1),type="quantile",p=seq(.01,.99,by=.01)),seq(.99,.01,by=-.01),col="red")
lines(predict(sWei, newdata=list(sex=2),type="quantile",p=seq(.01,.99,by=.01)),seq(.99,.01,by=-.01),col="red")
La razón para las dos secuencias de imagen especular, seq(.01,.99,by=.01)
y seq(.99,.01,by=-.01)
, se debe a que el método de predicción () está dando cuantiles para la distribución de eventos f (t), es decir, los valores de CDF inverso de f (t), mientras que una curva de supervivencia está trazando 1- (CDF de f) frente a t. En otras palabras, si trazas p versus predicción (p), obtendrás el CDF, y si trazas 1-p versus predicción (p) obtendrás la curva de supervivencia, que es 1-CDF. El siguiente código es más transparente y se generaliza a vectores arbitrarios de valores p:
pct <- seq(.01,.99,by=.01)
lines(predict(sWei, newdata=list(sex=1),type="quantile",p=pct),1-pct,col="red")
lines(predict(sWei, newdata=list(sex=2),type="quantile",p=pct),1-pct,col="red")
Una opción alternativa es hacer uso del paquete flexsurv
. Esto ofrece alguna funcionalidad adicional sobre el paquete de survival
, incluyendo que la función de regresión paramétrica flexsurvreg()
tiene un buen método de trazado que hace lo que usted pregunta.
Usando pulmón como arriba;
#create a Surv object
s <- with(lung,Surv(time,status))
require(flexsurv)
sWei <- flexsurvreg(s ~ as.factor(sex),dist=''weibull'',data=lung)
sLno <- flexsurvreg(s ~ as.factor(sex),dist=''lnorm'',data=lung)
plot(sWei)
lines(sLno, col="blue")
Puede graficar en la escala de peligro o riesgo acumulativo utilizando el argumento type
, y agregar intervalos de confianza con el argumento ci
.