I've begun working with estimating confounder-adjusted survival curves using the adjustedCurves package in R and I need help interpreting results. Image A at the bottom shows a simple Kaplan-Meier survival plot for the data, where I only model the OCL density variable (only 2 states for this variable, values of 200 or 300). I use the survival and survminer packages and my code for fitting and plotting the model is:

fit <- survfit(Surv(mos, status) ~ OCLRng, data = survDF)

           pval = TRUE, conf.int = TRUE,
           risk.table = TRUE, # Add risk table
           risk.table.col = "strata", # Change risk table color by groups
           linetype = "strata", # Change line type by groups
           surv.median.line = "hv", # Specify median survival
           ggtheme = theme_bw(), # Change ggplot2 theme
           palette = c("#E7B800", "#2E9FDF"))

The K-M plot makes intuitive sense in that I expect OCL=300 to have higher survival probability than OCL=200 from experience and from other data stratifications.

Image B at the bottom shows the confounder-adjusted survival curves, using the adjustedCurves package, where I set group = the same OCL variable used above, and introduce other variables of Channels, Node and sRng. My code for fitting and plotting this is:

survDFMod <- survDF %>% mutate(group = as.factor(OCLRng))

outcomeSurvDF <- survival::coxph(Surv(mos, status) ~ Channels + Node + sRng
                                + group, data= survDFMod, x = TRUE)

adjSurvDF <- adjustedsurv(
  data = survDFMod,
  variable = "group",
  ev_time = "mos",
  event = "status",
  method = "direct",
  outcome_model = outcomeSurvDF,
  conf_int = TRUE,
  na.action = "na.omit"

plot(adjSurvDF, conf_int=TRUE, linetype=TRUE, legend.position = "top") 

Intuitively and in plain language, what is the confounder-adjusted survival curve in Image B below telling me? And why conceptually could it be that the relationship has reversed from what is shown in the Image A K-M survival curve, where the OCL = 300 appears to have a lower survival probability than OCL = 200?

enter image description here

Edit to include insights from Denzo and EdM responses:

From reviewing the materials referred by Denzo and from EdM's comments, and in particular the discussion on confounders in Confounder - definition, I believe my OCL variable falls into the following category (where the Z variable illustrated below is similar to my OCL variable):

enter image description here


2 Answers 2


I believe this question has more to do with understanding what "confounding" really is than it has to do with survival curves. Your question is a very valid one: why is the adjusted estimate different from the un-adjusted estimate?

To understand this, you need to understand what it is you are really trying to estimate. What exactly is the quantity you are looking for? The adjustedCurves package is designed mainly to estimate the survival curve that would have been observed if every individual in data had been set to a specific value of the target variable by external intervention. This is called a counterfactual quantity. The best way to estimate this quantity would be to perform a large, high quality randomized controlled trial. Since this is often unfeasible, methods that can adjust for confounding in a different way have been proposed. Some of those are implemented in the adjustedCurves package.

Those methods assume that you have identified a set of confounders that has the property that if you adjust for all of those confounders in an appropriate fashion, the true counterfactual quantity of interest may be estimated in an unbiased way. Note that the counterfactual interpretation of the results produced by the adjustedCurves package I gave above is only correct if you have such a sufficient adjustment set. But how can you identify a set of such confounders? And what even is a confounder? Those questions have been discussed in great detail. Judea Pearl has done some great work on this. You may also find some first information about this here: Confounder - definition

I recommend you to read some causal inference literature first and get into the details of the estimation process afterwards. "The Book of Why" by Judea Pearl is a great place to start, as it does not require any previous knowledge and does not contain crazy mathematics.

As a final note, I would like to point out that you should not artificially categorise variables, such as the OCLRng variable, because that may lead to loss of statistical power or even bias. There are ways to visualize the (causal) effect of a continuous variable on a time-to-event outcome that closely resemble Kaplan-Meier curves, which can also be adjusted for confounding variables. Information on that can be found in another publication of mine: https://arxiv.org/abs/2208.04644 which also comes with an associated R-package https://cran.r-project.org/package=contsurvplot

  • 1
    $\begingroup$ OK, "The Book of Why" is now on my Kindle. Will start reading it tonight. $\endgroup$ Mar 28, 2023 at 13:37

What this is telling you is that it's often unwise to evaluate a single predictor by itself in a clinical survival model.

In this situation, I suspect that the OCL group is associated with some of the other variables that you have included in the covariate-adjusted model, and that those other variables are the ones more directly associated with outcome. In the simple Kaplan-Meier analysis, the OCL variable was serving as a type of proxy for those other variables. It has little if anything to add to information about survival once you take those other variables into account.

For best results, include as many outcome-associated predictors as you can, without overfitting, in a survival model. That's particularly true when there's a specific new predictor in which you are interested; you want to make sure that new predictor adds something useful to what's already known clinically.

  • $\begingroup$ I'm amazed by the model. Yes, based on my "subjective" experience with this data, OCL is not as directly associated with the outcome. It's partly an outcome of some the other variables. And that the model is capable of picking up on that. I wish I had worked with this earlier in my career! $\endgroup$ Mar 27, 2023 at 16:50

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.