Usted necesita para hacer days_ind
un tiempo variable dependiente. La forma en que se han codificado ahora, todo el mundo, cuyo observación (si el evento o la censura de tiempo) después de 110 días, tendrán la experiencia de otro peligro lo largo de toda su seguimiento , a continuación, aquellos cuya observación es antes de 110 días. Lo que queremos es por el peligro de "saltar" a 110 días.
No es totalmente sencillo para configurar este análisis en la survival
paquete. Usted tiene que dividir el período de seguimiento de cada persona en dos períodos: hasta 110 días y después de eso. Nadie sobreviven más allá de los 110 días tendría dos observaciones: un derecho de censura en 110, y el otro truncada a la izquierda, en el 110 y tener el evento en el lado derecho. Afortunadamente, hay una función para hacer exactamente eso: survSplit
.
Aquí está un ejemplo rápido con un built-en el conjunto de datos:
> library(survival)
> aml$id <- 1:nrow(aml) # add a subject ID variable
> aml2 <- survSplit(aml,cut=10,end="time",start="start", event="status", episode="period")
>
> subset(aml, id<=3)
time status x id
1 9 1 Maintained 1
2 13 1 Maintained 2
3 13 0 Maintained 3
> subset(aml2, id<=3)
time status x id start period
1 9 1 Maintained 1 0 0
2 10 0 Maintained 2 0 0
3 10 0 Maintained 3 0 0
25 13 1 Maintained 2 10 1
26 13 0 Maintained 3 10 1
Se puede ver que ahora hay dos observaciones para el id 2 y 3. El period
variable corresponde a su days_ind
.
Desde aquí se puede construir el modelo que desea, pero usted tiene que el código de los efectos cuidadosamente, debido a que el efecto de la period
no puede ser estimado, ya que esta se refiere a diferentes tiempos.
> fit <- coxph(Surv(start, time, status) ~
I((x=="Maintained")&(period==0)) + I((x=="Maintained")&(period==1)), data=aml2)
> fit
Call:
coxph(formula = Surv(start, time, status) ~ I((x == "Maintained") &
(period == 0)) + I((x == "Maintained") & (period == 1)),
data = aml2)
coef exp(coef) se(coef) z p
I((x == "Maintained") & (period == 0))TRUE -1.498 0.224 1.120 -1.34 0.18
I((x == "Maintained") & (period == 1))TRUE -0.722 0.486 0.591 -1.22 0.22
Likelihood ratio test=3.79 on 2 df, p=0.150 n= 41, number of events= 18
Aquí, los dos coeficientes de medir el efecto de los Mantenidos frente a los No-mantenido antes de 10 días y después de 10 días, respectivamente.
Usted también podría considerar el uso de la cmprsk
paquete. Está diseñado para el análisis de la competencia de los riesgos, pero no hay nada que impida el uso de ella por sólo uno de los resultados. El beneficio es que tiene una forma más fácil de definir el tiempo-dependiente de las covariables (aunque realmente torpe sintaxis general):
> library(cmprsk)
> fit1 <- with(aml, crr(time, status, cov1=I(x=="Maintained"), cov2=I(x=="Maintained"),
+ tf=function(t)I(t<=10)))
> fit1
convergence: TRUE
coefficients:
I(x == "Maintained")1 I(x == "Maintained")1*tf1
-0.7213 -0.7387
standard errors:
[1] 0.5259 1.1500
two-sided p-values:
I(x == "Maintained")1 I(x == "Maintained")1*tf1
0.17 0.52
Tenga en cuenta que con la codificación diferentes, el significado de los coeficientes no es exactamente el mismo que el anterior.