Alberto Carmona Bayonas
2017-Oct-08 18:04 UTC
[R-es] enigma con regresión de Fine & Gray y variable dependiente del tiempo
Hola, necesito ayuda de la comunidad sobre una duda acerca de una regresión de riesgos competitivos. Mi idea era llevar a cabo una regresión de Fine y Gray multivariante usando como predictores una variable fija X y otra dependiente del tiempo Y. Para ello primero he hecho un modelo univariante usando sólo la variable fija X. Aquí sin problema, obtengo el mismo resultado tanto con la función crr del paquete cmprsk, como con la función finegray seguida de survival del paquete survival. Aquí podéis ver la pinta de los datos, donde ftime2 es el tiempo al evento, cause es el evento (0=cens, 1 evento de interés, 2=competing) y days_pd son los días hasta el predictor dependiente del tiempo Y (NA cuando no lo tiene):> head(epi2,40)id ftime2 days_pd X cause 1 1 15.0 NA 1 2 2 3 24.0 NA 0 2 3 4 1094.0 NA 0 2 4 5 1.0 NA 1 2 5 6 5.0 NA 1 2 6 7 2.0 NA 1 2 7 8 110.0 NA 1 2 8 10 506.0 NA 1 0 9 12 9.0 NA 1 2 10 13 128.0 NA 1 2> tail(epi2,40)id ftime2 days_pd X cause 1036 877 562 525 1 2 1037 876 614 538 0 2 1038 892 592 539 1 0 1039 905 613 539 0 1 1040 97 713 572 0 2 1041 962 784 572 0 1 1042 885 574 574 1 0 1043 1018 1168 590 0 0 1044 959 786 595 0 2 1045 948 750 596 0 2 *Cuando evalúo el efecto de X el código es:*> pdata <- finegray(Surv(ftime2, cause) ~ ., data=epi2,id=id)> fgfit <- coxph(Surv(fgstart, fgstop, fgstatus) ~ X,+ weight=fgwt, data=pdata)> fgfitCall: coxph(formula = Surv(fgstart, fgstop, fgstatus) ~ X, data = pdata, weights = fgwt) coef exp(coef) se(coef) z p X -0.614 0.541 0.228 -2.69 0.0072 Likelihood ratio test=7.62 on 1 df, p=0.00577 n= 25625, number of events= 86 *Tras ello intento generar una base de datos en formato largo para la variable dependiente del tiempo days_pd usando tmerge * epitd<-subset (epi, select=c(id, ftime2, X, Y, days_pd, cause)) epitd1 <- tmerge(epitd, epitd, id=id, cause = event(ftime2, cause)) epitd2 <- tmerge(epitd1, epitd1, id=id, Y= tdc(days_pd, Y)) epitd2$Y[is.na(epitd2$Y)]=0> tail(epitd2,40)id ftime2 X days_pd cause prog tstart tstop Y 1430 985 893 0 762 2 1 762 893 1 1431 982 869 1 789 0 1 0 789 0 1432 982 869 1 789 2 1 789 869 1 1433 987 909 1 810 0 1 0 810 0 1434 987 909 1 810 2 1 810 909 1 1435 1022 1224 0 831 0 1 0 831 0 1436 1022 1224 0 831 0 1 831 1224 1 1437 1023 1225 1 852 0 1 0 852 0 1438 1023 1225 1 852 1 1 852 1225 1 *Se observa que los casos se duplican, por ejemplo, el id=982 desarrolla la variante dependiente del tiempo Y en el punto 789 y luego tiene el evento competitivo=2 en el momento 869.* *Tras ello aplico la regresión de FG para X, que es la variable fija, y el resultado NO es consistente con el que se obtuvo con la base de datos en formato corto (HR 0.541 antes y 0.597 ahora).* *No sé si tiene que ver o no con el warning que aparece... * *¿Alguien sabría explicarme qué tipo de sesgo he cometido?*> pdata_1 <- finegray(Surv(tstart,tstop,event) ~ ., data=epitd2,count="var", na.action= na.pass,id=id) Warning message: In any(sorty[-last, 3]) : coercing argument of type 'double' to logical> fgfit4 <- coxph(Surv(fgstart, fgstop, fgstatus==1) ~ X+cluster(id),+ weight=fgwt, data=pdata_1)> fgfit4Call: coxph(formula = Surv(fgstart, fgstop, fgstatus == 1) ~ X+ cluster(id), data = pdata_1, weights = fgwt) coef exp(coef) se(coef) robust se z p X -0.517 0.597 0.228 0.227 -2.28 0.023 Likelihood ratio test=5.37 on 1 df, p=0.0205 n= 30290, number of events= 86 [[alternative HTML version deleted]]