I have an event of interest, say X, which can be precluded by 2 other events: death or accident.

I want to show only the CIF (Cumulative Incidence Function) for the "adjusted-for-competing-risks" event X and traditionally show the median "survival" time along with the confidence intervals.

The traditional approach in R, where I can call quantile(survfit_object) faily saying:

Error in quantile.survfit(fit) : 
  quantiles are not a well defined quantity for multi-state models

OK, but I want just a single adjusted curve. Is there any way to tell the survfit to give me the quantiles for a given curve (adjusted for the others), or do I have to "trace" the entire table and search for the time point when the curve crosses 50%? (and what about the CIs?)

  • $\begingroup$ It might be worth spelling out CIF as Cumulative Incidence Function and what this means $\endgroup$
    – Henry
    Sep 6, 2021 at 12:13

1 Answer 1


There's a problem with what you mean by "median survival" in a situation with strictly competing events.

With 2 competing events, one of them will almost never show "median" survival in the usual sense of half of the original population experiencing that event. If 51% of the population has event A, less than 50% of the population will ever have event B. Thus there's no "median" survival for event B in the usual sense. With 3 or more event types, there's no general assurance that half of the original population will ever have any one of the events.

You could define an event-specific "median" survival as being the time at which half of those who eventually experience that specific event have had it. That, however, poses both conceptual and practical problems.

Conceptually, its not at all clear what such a "median" survival would mean for any individual. You don't know which event an individual will experience until that individual has an event, so you don't know which "median" will apply.

Practically, what you would have to do is an extension of what you propose in the last sentence of the question: first estimate the ultimate proportion of those experiencing an event type, and then "search for the time point when the curve crosses 50%" of the proportion of the population that ultimately has that event type. For example, if you estimate that 49% of the population eventually experiences event B, you could then define the time at which 49%/2 = 24.5% of the original population has had event B as the B-specific "median" survival.*

One difficulty with this in a non- or semi-parametric model is that you can't get an estimate of those ultimate proportion of event types unless the last observation time is an event. Then, even if the last observation is an event, the proportion estimates will depend heavily on the typically small numbers of very late events.

If you really have to do this sort of thing, it might be better handled with a parametric survival model. A frequentist parametric model would give you point estimates and confidence intervals for the ultimate proportions with each event; combined with the estimated parameter values and confidence intervals describing the survival functions, that would give you what you want. My sense is that a Bayesian survival model might be a useful approach, although I don't have much experience with such models. The reliability of the results, however, will depend heavily on an appropriate choice of parametric model family.

*I don't know of a way to force the survfit() function to do this type of calculation. Software-specific questions are off-topic on this site in any event, so the answer emphasizes the general principles.


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.