I am doing a survival analysis in R with the survival package. I think I am working with left-truncated data, but I'm not entirely sure how to handle it.

I have a cohort of patients diagnosed between 1990 and 2012. All the patients have a well-defined time of diagnosis (entry time). However, the outcome of interest (specific worsening of disease) has only been documented from the year 2000 and onwards. For patients diagnosed before 2000, it is therefore not known whether the outcome has occurred before that time - only after.

My first thought was that I needed to restrict the analysis to the time period from 2000, only including patients diagnosed after that point in time. After doing some reading, it appears to be unnecessary to exclude patients diagnosed before 2000. This seems to be left-truncation and that can be dealt with in coxph using Surv(time1, time2, event), where time1 is left-truncation time (time from diagnosis to the start of documentation of the outcome) and time 2 is the time-to-event (from time of diagnosis).

Here are two examples of patients in my dataset:

Patient #1: Diagnosed in 1999. Outcome observed in 2001. Left-truncation time: 1 year (to 2000). Time-to-event: 2 years.

Patient #2: Diagnosed in 2001. Outcome observed in 2005. Left-truncation time: 0 years. Time-to-event: 4 years.

For these patients, I suppose their survival times (in years) in the survival object would be (respectively):

Surv(time1 = c(1,0), time2 = c(2,4), event = c(1,1))

Is this an example of left-truncated data? If so, is this the correct way to handle it?


2 Answers 2


I'm assuming that time from diagnosis is your underlying time variable. For simplicity I also assume that the event can only occur once.

You can treat your data as being left-censored. This is different from being left-truncated, however.

For left-truncated data we only include in the study patients conditional on them not having experienced the event at the time of inclusion. This would in your case amount to throwing away the patients that have had the event before 2000. Thus, we are modelling survival conditional on survival until inclusion.

This is different from left-censoring. Left-censoring occurs when we only know the upper limit of the time of an event. This is exactly what you suggest yourself, if I understand you correctly. In this case, we include all individuals regardless of their survival times, but for some individuals we only know an upper bound of their survival time.

Chapter III of Statistical Models Based on Counting Processes by PK Andersen et al. provides a good explanation of the above along with some examples of both cases.


You are likely to run afoul of immortal time bias, which means that the cohort diagnosed pre-2000 is effectively immortal, until post-2000 when the outcome can occur. Per Rothman and Greenland, the correct approach is indeed to exclude (truncate) the pre-2000 years of observation from the analysis, or else risk biasing between cohort estimates toward the null hypothesis of no difference in hazard.

The survival command Surv does not seem to follow the syntax you use. What about creating a new variable where the value 0 corresponds to the Beginning of (Study) Time (e.g. year = 2000?), 1 corresponds to 1 unit of time in, etc?

You will want to read up on: Rothman, K. J. and Greenland, S. (1998). Modern Epidemiology, chapter Cohort Studies—Immortal Person Time. Lippincott-Raven, 2nd edition.

  • 1
    $\begingroup$ I see immortal time bias is important, for example, in drug trials where patients receiving the drug are guaranteed to live a given time by study design whereas the control group is not, resulting in an observed (false) positive effect of the drug. However, in my case, the missingness in outcome data is equal for all patients, regardless of the exposure. Omitting all patients diagnosed pre-2000, will result in a severe lack of statistical power, as many of them will experience the outcome after 2000. I think there must be a way to control for possible bias without omitting these patients. $\endgroup$ Commented Jul 9, 2014 at 13:14
  • $\begingroup$ Ah I see, that was not clear. On the other hand: perhaps your data simply do not support the analysis you want to perform. $\endgroup$
    – Alexis
    Commented Jul 9, 2014 at 16:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.