This question is a follow up to the other one asked by someone else (Right censored survival analysis with interval data in R) and this one by me Left censoring with time-varying covariates
I have participants assessed at specific time-points (0,5,10,15...) for their health status and if they have had certain disease by that time (event = time of first heart failure). For example, participant 1 did not experience the heart failure between 0 and 5, but did between 5 and 10, BMI was 23.3 and then 25.7. Looking at the literature, standard is to assign event time to t2 (or to the mid-point between t1 and t2) and use Cox model e.g. coxph(Surv(t1, t_censored, event) ~ bmi + age + gender).
head(df) id time_0 time_1 age event bmi gender t_event_mid t_censored t_interval_0 t_interval_1 1 0 5.0 43.5 0 23.3 1 NaN 5.0 5.0 NaN 1 5 10.0 58.5 1 25.7 1 7.5 7.5 5.0 10.0 2 0 5.0 49.8 0 27.8 0 NaN 5.0 5.0 NaN 2 5.0 10.0 54.8 0 26.5 0 NaN 10.0 10.0 NaN ... coxph(Surv(time_0, t_censored, event) ~ bmi + age + gender, data= df) ic_sp(Surv(t_interval_0, t_interval_1, type = "interval2") ~ bmi + age + gender, data=df)
In my case intervals are quite long so I would rather use interval censoring, however the question is about the covariates and how those are accounted for, especially those that change in time (weight/BMI):
In coxph() partial maximum likelihood would consider Person 1 in the risk set between 0 and 5 as someone with BMI = 23.3, who did not have an event; between 5 and 10 as someone who did at t=7.5. That is, it will only enter into the model once at each point of time.
However, in Interval censoring (IcenReg or survreg with Surv(t_interval_0, t_interval_1, type = "interval2")), I fear that the model would mess up as I do not supply information on where an interval starts for right-censored observations and only when censoring event happened. E.g. person 2 who did not have HF at both intervals will supply the model information I(t_event>5|bmi=27.8) and I(t_event>10|bmi=26.5), and the idea that this is the same person gets lost (or I miss something here). In a way the question is about the difference in (by description of the packages this should be same, but those give diff estimates)
ic_sp(Surv(t_interval_0, t_interval_1, type = "interval2") ~ bmi + age + gender, data=df) #vs ic_sp(Surv(t0, t1, event) ~ bmi + age + gender, data=df) #similar ic_par(Surv(time_0, time_1, event)~ age+bmi, data = df_int, dist = "loglogistic") #vs ic_par(Surv(t_interval_0 , t_interval_1 , type="interval2")~ age + bmi, data = df_int, dist = "loglogistic") #quite different