As I previously stated, instead of doing propensity matching it can be reasonable to use inverse probability of treatment weighting after missing data imputation.
Suitable Stata examples follow:
clear all
webuse mheart5
*dataset
replace smokes = . in 20/70
*creates missing values for smokes variable in observations 20 to 70
mi set mlong
mi register imputed age bmi smokes
set seed 29390
mi impute mvn age bmi smokes = attack hsgrad female, add(10)
*missing data imputation creating 10 imputed datasets
replace smokes=round(smokes,1)
replace smokes = 1 if smokes >=1
replace smokes = 0 if smokes <=0
*rounding to transform smokes variables into a binary one
set seed 54321
generate randomvar = runiform()
gsort randomvar
*random sorting of the data
psmatch2 smokes age bmi female hsgrad, noreplace logit
gen iptw = 1/(1-_pscore) if smokes == 0
replace iptw = 1/(_pscore) if smokes == 1
*generation of inverse probability of treatment weighting
mi estimate: glm attack smokes [pweight = iptw], family(binomial) link(identity) vce(robust)
*inverse probability of treatment weighting analysis for dichotomous endpoint after multiple imputation
*---
clear all
webuse stan3
*dataset
replace age = . in 20/70
replace transplant = . in 40/90
*creates missing values for age variable in observations 20 to 70 and transplant variable in observations 40 to 90
mi set mlong
mi register imputed age transplant
set seed 54321
mi impute mvn age transplant = year died stime surgery wait posttran, add(10)
*missing data imputation creating 10 imputed datasets
replace transplant=round(transplant,1)
replace transplant = 1 if transplant >=1
replace transplant = 0 if transplant <=0
*rounding to transform transplant variable into a binary one
set seed 54321
generate randomvar = runiform()
gsort randomvar
*random sorting of the data
psmatch2 surgery year age transplant wait posttran, noreplace logit
gen iptw = 1/(1-_pscore) if surgery == 0
replace iptw = 1/(_pscore) if surgery == 1
*generation of inverse probability of treatment weighting
mi stset stime [pweight = iptw], failure(died) scale(1)
mi estimate: stcox surgery
*inverse probability of treatment weighting analysis for censored endpoint after multiple imputation
mi estimate: glm stime surgery [pweight = iptw], family(gaussian) link(identity) vce(robust)
*inverse probability of treatment weighting analysis for continuous endpoint after multiple imputation