# Cox proportional hazards with left-censored time-dependent covariates

I'm doing statistical analysis on a cancer study. My specific dataset contains id, various co-variates such as age, sex, metastatic burden, etc. and time to event data for overall survival

I want to run a univariate and multivariate cox proportional hazards analysis for overall survival from date of diagnosis. However, the data on metastatic burden has been collected at a different time point by data collectors for each patient. It is stored as individual binary variables, ie lung mets (YES/NO), liver mets (YES/NO), etc., with an associated variable for each patient containing the date at which the metastatic burden data was collected.

To me, the following seemed wrong:

coxph(Surv(survival.time, survival.event) ~ sex + age + lung.mets + liver.mets)


Take the following example: a patient was diagnosed with cancer in January, and discovered to have lung metastases in March. Data collection then happened in May, and lung.mets was set to YES. The above code would assume that this patient had lung mets since diagnosis (January), which seems like a poor way to model this.

So I thought, why not tmerge my data to turn each metastatic variable into a time dependent covariate. Then I could set each metastasis to NA until the time that data collection happened for each patient, then set it to the collected value (YES/NO).

Here's my issue. By setting each time-dependent metastasis covariate to NA until its data is set, am I effectively left censoring my time-to-event data? In which case, when I do multivariate analysis, would all of this end up just being equivalent to the following:

coxph(Surv(time.from.data.collection.to.end.of.followup, survival.event) ~ sex + age + lung.mets + liver.mets)


as all time-to-event data is left censored up to date of data collection anyway.

Alternatively, I could set all metastatic data to NO until data collection date, then keep as NO or switch to YES as appropriate. However, taking the example above I've swapped one inaccuracy for another - now, instead of assuming a lung met is present from January to March when one isn't present, our model will assume there is no lung met until May when data collection happened. This means that between March and May our model assumes there is no lung met when there actually is one.

Essentially I want to left censor the time-dependent covariate. What is the best way of doing it?

There is an R package coxinterval and accompanying theory for Markov models with interval censoring for "progression". If you think of lung metastases as the progression variable, that seems to fit your setting: death is observed or right-censored, but lung mets are interval censored and affect the hazard of death.