Propensity Score Matching for more than 2 groups

I'm new to propensity score matching (PSM). So, my questions can be bit trivial.

1) Suppose I've 3 treatment levels and want to check the effectiveness of the treatment levels. Treatment levels are taking drug on time, not taking drug on time and not taking drug at regular interval. For this I need to do multinomial logistic regression.

But in PSM we do case-control study. So, how we are going to define which will be the case and which will be the control? Will it be the case that we will use one group as control for each time and other 2 groups as case?

2) Can anyone please tell me which package to use for multilevel group in R. I checked this link. But this link is old. I also checked this package which seems to do multilevel. But is there any other option for packages?

• I also highly highly highly recommend the CBPS package in R. I have found it greatly outperforms GBM in twang in my applications. It can handle multiple treatment regimes.
– Noah
Commented Aug 9, 2016 at 15:35
• Keep in mind too that you can always prepare multinomial logistic regression and use the estimates of $p$ for your propensity scores and then carry out your propensity score analysis as you would in the two-group case. Commented Jan 23, 2019 at 19:22

Check out the WeightIt package. You can simply provide a factor treatment variable and covariates and it will estimate balancing weights for that treatment. It provides an interface to other packages and methods that do this using a unified syntax.

Currently, it provides support for estimating balancing weighting for multinomial treatments using multinomial logistic and probit regression propensity scores, generalized boosted modeling propensity scores (through twang), covariate balancing propensity score (through CBPS), entropy balancing (through ebal), optimization-based weights (through optweight), empirical balancing calibration weights (through ATE), and SuperLearner propensity scores (through SuperLearner). The syntax is the following:

w.out <- weightit(treat ~ cov1 + cov2 + cov3, data = data, method = "ps")


You can change the estimation method with the method parameter and others.

Propensity score calculation and subsequent paired analysis is possible in several ways. There are already some overlapping Q&A in CV that you might wish to look at:

My advice would be to use the twang R package.

• Thanks for your reply and suggestion on package. I was also leaning towards twang package. But needed more suggestions.Thanks again!
– Beta
Commented Aug 5, 2016 at 7:00
• Twang is great for small-ish samples. But if you have large datasets, twang is not really the most optimized packages for its boosted regression, so you may have to wait a long time for it to run. Commented Jan 23, 2019 at 19:18
• One other thing. Twang is written by a statistical research team at the prestigious RAND Corp. They have some really great documentation and tutorials on their website: rand.org/statistics/twang.html Commented Jan 23, 2019 at 19:24

I have mostly used PSM for 2 class problems. We predict the probability of the treatment. And then compare effect of treatment vs control in same decile of our probability scores. Customers in same decile typically are similar and so comparable. So you can repeat the PSM twice. Control each time being people who have taken medicine on time. Though i am not sure if doing the test will lead to higher type 1 errors like in multiple t tests.

For PSM in r for 2 variables there is a package matchit but have not used it.

• THanks for your reply. I've used PSM using 2 class & there are multiple packages for that. Needed for more than 2 class cases. The suggestion that you gave me is not very much applicable in my case.
– Beta
Commented Aug 5, 2016 at 7:01