2  Background

Multiple imputation workflows with propensity score and survival analysis

2.1 Background

  • In 2022, nearly every third drug approval was granted in the field of oncology (tendency ↑)1

  • Decision-makers increasingly rely on real-world evidence (RWE) generated from routine-care health data such as electronic health records (EHR) to evaluate the comparative safety and effectiveness of novel cancer therapies

ENCORE

  • The ENCORE project is an RCT DUPLICATE expansion to oncology which is going to emulate 12 randomized clinical trials using multiple EHR data sources. The process includes an emphasis on transparency with documented assessment of data fitness of the RWD source for each trial and conducting extensive sensitivity analyses to assess robustness of findings and trial eligibility criteria.

  • Partially observed covariates/confounders are a common and pervasive challenge

  • To date, most oncology studies utilizing RWD have relied on complete case analysis although assumptions for a complete case analysis (missing completely at random [MCAR]) are even stronger than those (missing at random [MAR]) for multiple imputation (MI). Besides this, MI has additional advantages:

    • All patients are retained

    • Flexible modeling (parametric, non-parametric)

    • Can incorporate additional information (auxiliary covariates) to make the MAR assumption more likely

    • Realistic variance estimation (Rubin’s rule)

  • However:

    • Not much is known about how to use multiple imputation in combination with propensity score-based approaches

    • Computational implementation can be complex

2.2 Objective

TipObjective

To establish a computationally reproducible workflow that streamlines multiple imputation > propensity score matching/weighting > survival analysis workflows in a transparent fashion

Figure 2.1: Streamlined workflow to approach partially observed covariate data in oncology trial emulations.

2.3 Leyrat et al. simulation study

One of the most comprehensive and influental simulation studies that addressed the question on how to combine multiple imputation with propensity scores (IPTW weighting) was published in 2019 by Leyrat et al.2. In this study, the authors looked at three different potential ways:

  • MIte: MI > PS estimation > Outcome model for each PS model > Pooling of results

  • MIps: MI > PS estimation > PS pooling across datasets > single outcome model

  • MIpar: MI > Pooling of covariate parameters > single PS model > single outcome model

Additional questions that were also addressed:

  • Should outcome be included in imputation model?

  • How to estimate variance of IPTW estimator in context of MIte or MIps or MIpar?

2.3.1 Simulation study results

  • MIte performed best in terms of bias, standardized differences/balancing, coverage rate and variance estimation

    • MI > PS estimation > Outcome model for each PS model > Pooling of results
  • Standard IPTW variance estimation is valid for MIte

  • Outcome must be included in imputation model

2.3.2 Implementation in MatchThem R package

To streamline the implementation of multiple imputation > propensity score workflows, Farhad Pishgar, Noah Greifer, Clémence Leyrat and Elizabeth Stuart developed the MatchThem package3 which relies on the functionality provided by the mice, MatchIt, and WeightIt packages. An exemplary illustration on how to use the package in a survival analysis context is given in Chapter 3 (cheatsheet).

2.4 References

1.
Mullard A. 2021 FDA approvals. Nature Reviews Drug Discovery 2022; 21: 83–88. doi:10.1038/d41573-022-00001-9.
2.
Leyrat C, Seaman SR, White IR, et al. Propensity score analysis with partially observed covariates: How should multiple imputation be used? Statistical Methods in Medical Research 2019; 28: 3–19. doi:10.1177/0962280217713032.
3.
Pishgar F, Greifer N, Leyrat C, Stuart E. MatchThem: Matching and Weighting after Multiple Imputation. R Journal 2021; 13: 292–305. doi:10.32614/RJ-2021-073.

2.5 Session info

Script runtime: 0.00 minutes.

pander::pander(subset(data.frame(sessioninfo::package_info()), attached==TRUE, c(package, loadedversion)))
package loadedversion
pander::pander(sessionInfo())

R version 4.5.1 (2025-06-13)

Platform: x86_64-pc-linux-gnu

locale: LC_CTYPE=C.UTF-8, LC_NUMERIC=C, LC_TIME=C.UTF-8, LC_COLLATE=C.UTF-8, LC_MONETARY=C.UTF-8, LC_MESSAGES=C.UTF-8, LC_PAPER=C.UTF-8, LC_NAME=C, LC_ADDRESS=C, LC_TELEPHONE=C, LC_MEASUREMENT=C.UTF-8 and LC_IDENTIFICATION=C

attached base packages: stats, graphics, grDevices, datasets, utils, methods and base

loaded via a namespace (and not attached): digest(v.0.6.39), fastmap(v.1.2.0), xfun(v.0.55), tictoc(v.1.2.1), knitr(v.1.51), htmltools(v.0.5.9), rmarkdown(v.2.30), cli(v.3.6.5), pander(v.0.6.6), sessioninfo(v.1.2.3), renv(v.1.1.5), compiler(v.4.5.1), tools(v.4.5.1), evaluate(v.1.0.5), Rcpp(v.1.1.0), yaml(v.2.3.12), rlang(v.1.1.6), jsonlite(v.2.0.0) and htmlwidgets(v.1.6.4)

pander::pander(options('repos'))
  • repos:

    Table continues below
    CRAN
    https://cran.rstudio.com
    PositPackageManager
    https://packagemanager.posit.co/cran/linux/noble/latest