In epidemiological studies, it is common that event are interval censored, since an incident case (like a new diagnosis of disease) could have happened between 2 waves of data collection.
No software has default implementation for handling this. Something I wondered is if the midpoint imputation, where the date of event is fixed as the midpoint of the interval and then considered as right-censored (not much described but you can see link1 or link2), was a valid way to handle these missing event times. Since my intervals have a wide distribution, I tended to think not.
I discovered the SmoothHazard
library lately, which unlike above can handle left-truncation and interval-censoring (with a fully-parametric model), but the 2 methods (interval-censoring and midpoint imputation) gave very close results.
Indeed, "parameters of the Weibull distribution" for both a
and b
coefficients, convergence criteria and coefficients were close to within 1%, while a Cox model gave very similar results (<30% different).
The only real difference was the log-likelihood: -18594.84 for right-censored, -20343.59 for interval-censored and -31352.55 for Cox model
Maths involved in those models are unfortunately quite out of my league for now, is there a mathematic shortcut that allows to simplify interval-censoring to midpoint imputation? Else, under which condition could I approximate the former by the latter?
Here is some code for R
enthusiasts:
library(survival)
library(SmoothHazard)
library(prodlim)
#Parametric model with left-truncation and right-censoring on mid-time between questionnaires
fit = shr(formula = Hist(time=age_surv, event=event, entry=age_origin) ~ X + A1 + A2 + A3, data = db)
#Parametric model with left-truncation and interval-censoring
fit.i = shr(formula = Hist(time=list(age_surv_inf, age_surv_sup), event=event, entry=age_origin) ~ X + A1 + A2 + A3, data = db)
#Cox model with left-truncation and right-censoring on mid-time between questionnaires
fit.cox = coxph(formula = Surv(age_origin, age_surv, event) ~ X + A1 + A2 + A3, data = db)