Is a Cox proportional hazards regression model appropriate for records which are left truncated?

I'm developing a model that predicts risk of hospitalization during a two year time period. Some members of my study population have been hospitalized prior to the study period (left censoring) based on records prior to the study period. No problem, there are exisitng techniques to adjust for left censoring.

However, there are also left truncated members for whom we have no information whether they have been hospitalized or not prior to the study. Some of these subjects float through the 2 year period without being hospitalized.

Is there any way to retain the left truncated subjects in the Cox regression model? Should I consider another methodology, such as logistic regression?


To clarify, here are some record examples for clarification. I apologize for the formatting - I don't know how to create tables in the editor. As per stnd methodology for a recurring event Cox regression, there are multiple records for member 1 (CT0001) associated with each interval ending in an IP admission or the end of the time period. The Start and End columns display the beginning and end dates of each interval, or . if missing. Member 2 (CT0002) didn't go to the hospital during the study period. But we still want member 2 in the dataset, since we're predicting risk of hospitalization for the entire population based on demographic variables even if there was no IP visit.

**MemberID    IP_admit      IP_disch    Start       End         Censoring/Truncation?**
CT0001        10/1/2010     10/20/2010  .           .           .
CT0001        3/1/2011      3/15/2011   .           3/1/2011    Left censored
CT0001        7/1/2011      7/5/2011    3/16/2011   7/1/2011    .
CT0001        11/1/2011     11/15/2011  7/6/2011    11/1/2011   .
CT0001        .             .           11/16/2011  .           Right censored
CT0002        .             .           .           .           Left truncation
  • $\begingroup$ I'm a little uncertain of what you mean. If you have missing data then imputation seems reasonable, if you have left truncation then you set the start value in the cox model. Perhaps if you provide two example patients and the variables that you intend to include you get a better answer. $\endgroup$
    – Max Gordon
    Oct 3, 2013 at 17:14
  • 1
    $\begingroup$ Hmm... you must have defined a period where 2 is at risk for an admission, i.e. a start and end date but without an event. Apart from that detail this seems like a case for mixed model cox regression (check out the R coxme-package). $\endgroup$
    – Max Gordon
    Oct 3, 2013 at 20:44
  • $\begingroup$ That's correct, member 2 is at risk for admission, but was never admitted during the analysis period. So I can define the start and end dates for member 2 as the beginning and end of the analysis period, i.e. one right censored record? $\endgroup$
    – RobertF
    Oct 3, 2013 at 21:17

1 Answer 1


First a disclaimer: I've never had to use the time start/end variable in this way and although I'm familiar with mixed effects models I have never really had to use them IRL. Feel free to correct me if I've made a mistake

The problem consists out of two things as I see it:

  1. One person can occur multiple times. This puts the observations independence into question.
  2. A person may enter and exit the cohort at risk at different times throughout the study, i.e. this is an open (dynamic) cohort.

For the first point I think using a mixed effects model is a must. I use R and there is a coxme package recently developed by prof. Therneau. The vignette documentation is excellent and it seems easy to deploy.

For the second point you just need to add the start and end point to the survival object. This is fairly easy in R although I have never had to use it myself. Below is an example that should work:

# Set the event yes/no (1/0)
df$event <- !is.na(df$IpAdmit)
# Those that lack a date should have one
df$discharged <- !is.na(df$start)
df$start[is.na(df$start)] <- as.Date("2010-01-01")
df$end[is.na(df$end)] <- as.Date("2011-12-31")

# Can be merged into one step without the sv variable
sv <- Surv(time=df$start, time2=df$end, event=df$event)
# A model where the medication possession ratio (compliance) interacts with
# the fact that a patient has been discharged
coxme(sv ~ discharged*MPR + age + sex + (1|MemberID), data=df)

You might want to consider what you want to achieve with the cox regression model in this case. I am not sure that hazards make sense in this setting, although this is very difficult to know without going through the full study protocol. Make sure that others have used cox regressions in similar settings prior to this analysis. It seems to me that a good alternative would be a mixed effect logistic regression where you simply use odds for admission and add the number of days at risk as a predictor, preferably as a natural spline or something that allows a non-linear relationship.

Minor update from the discussion

When it comes to time-dependant covariates I have found this to be a little tricky when trying to deploy. I had a CV-question a while ago on this subject that you may want to look into. As I wrote in the comments, in the end the time dependence was a little more than I could conveniently display and explain to my colleagues. Furthermore the model was not strongly affected by this effect so I dropped it and switched to an early and late dataset. I recommend you consider who your audience is and if the time-varying coefficients will add that much to the model.

You have a potentially very serious problem where some patients start their period discharged from the hospital while some are untainted. I think you need to think about possible effect modification between these two groups - do they belong to the same population or not? It is easy to make a case that medication-compliance has a much bigger admission-avoidance impact in the discharged population. I think you at least should have a variable indicating if the patient has started a period straight after hospitalization or not (I've added an example in the code).

I have recently done a medication adherence study, if you haven't read this article I strongly recommend it. In my study I was also able to deduce from the prescription text 94 % of the cases using Python's very powerful regular expressions. I'm planning on doing a post on my blog once the article gets published, the text interpretation is in Swedish but you can very easily use the structure as most prescriptions follow a similar pattern (let me know if this would be useful and I can write up the post a little earlier). The advantage is that you want to identify exactly when a patient is expected to be without medication because you will probably have a very close relationship between that and readmission.

  • $\begingroup$ Thanks for the response. You're correct that observations are correlated. Having a prior hospitalization is highly predictive of future hospitalizations events in this population. And as you said, this is a dynamic cohort. This is not a formal study where we've assigned index inpatient episodes to each patient and are estimating time to readmission like in so many studies. Hence my worries that Cox may not be appropriate if we're seeing left truncated records - members w/out an index episode from which we can measure a start date for the survival curves. $\endgroup$
    – RobertF
    Oct 4, 2013 at 13:57
  • $\begingroup$ I didn't mention there are time-varying covariates in the data - prior inpatient admissions, prior IP length of stay, and there will be others, such as whether patients were sticking with their medication & refilling prescriptions, which is also predictive of an IP (or emergency dept) visit. $\endgroup$
    – RobertF
    Oct 4, 2013 at 13:57
  • $\begingroup$ @RobertF - sounds like a fun study. I guess you need to decide: are you looking at a time period where your studying both patients and non-patients or are you only looking at those that have had an admission to identify predictors for readmissions. It seems like a very interesting question, identify "frequent flyer" risk factors - let me know if you publish. I've had some trouble implementing time varying coefficients, but that was mostly due to difficulties in explaining complex interactions - I ended up splitting my dataset into two periods, one early and one late period. $\endgroup$
    – Max Gordon
    Oct 4, 2013 at 18:59
  • $\begingroup$ @RobertF: added the discussion to my answer and a few useful links $\endgroup$
    – Max Gordon
    Oct 6, 2013 at 11:22
  • $\begingroup$ Great, thank you Max for the additional information! Given the complications with time-varying covariates and the assumptions which have to be met with a PH Cox regression, I'm beginning to wonder if a logistic regression predicting hospitalization per day per member might be a better option. This means one record per day per member, which will add up to over 100 million records. However, given there will be a lot of days when no admit occured, it would make sense to take a random sample from the non-event days while keeping all of the event days (sampling from the dependent variable). $\endgroup$
    – RobertF
    Oct 7, 2013 at 4: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.