There is a very good thread about Propensity Score Matching after multiple imputation with the articles referred:

Propensity score matching after multiple imputation

In the refered articles, they talk about

  • averaging of propensity scores after multiple imputation, followed by causal inference (method 2 in your post above)
  • causal inference using each set of propensity scores from the multiple imputations followed by averaging of the causal estimates.

Method 2 is propensity score matching, lets say when someone imputes 5 datasets, in all 5 of them. However, we then end up with 5 propensity score matched cohorts and we want to make 1 propensity matched cohort of it; also how to implement this in SPSS/R, this stays unclear.

Some Articles also talk about the Rubin's Rule for pooling; but could not find good implentation in SPSS/R literature on that, if somebody could help on that I would appreciate it.

So in short, the question is: how to properly perform propensity score matching after multiple imputation and how to implement it in SPSS/R? If anybody has reference material, I would like to read it!


1 Answer 1


Update 1/4/20: A new package has been written for this purpose called MatchThem. It's on CRAN, and an article about how to use it is under review. It's compatible with version 4.0.0 of cobalt for balance checking. It has built-in functions for performing matching and estimating treatment effects from multiply imputed data. It has integration with svyglm() and svycoxph(), so you can estimate treatment effects for various forms of outcome. It really smooths out the process of estimating effects from multiply imputed data.

I answered this question which provides R code for your case after using mice to multiply impute, MatchIt to match within each imputed data set, and glm() to estimate treatment effects in each imputed data set.

See the documentation for cobalt for an example of the other method (averaging propensity scores across imputations).

  • 1
    $\begingroup$ thank you very much! The link was very useful! Cobalt documentation was also very useful. However, when matching the data with m.out <- matchit(t ~ v1 + v2 + v3, data = imp.data[imp.data$.imp == i,]), we get matched data per imputed dataset. However, how do we see each matched dataset; how can we take each matched dataset from the total imputed dataset apart; and perform lets say a cox regression per matched dataset per imputed dataset? $\endgroup$ May 22, 2018 at 17:45

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.