[R-es] enigma con regresión de Fine & Gray y variable dependiente del tiempo

Alberto Carmona Bayonas alberto.carmonabayonas en gmail.com
Dom Oct 8 20:04:46 CEST 2017


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)
> fgfit
Call:
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)
> fgfit4
Call:
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]]



Más información sobre la lista de distribución R-help-es