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?

  • 2
    $\begingroup$ 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. $\endgroup$ – Noah Aug 9 '16 at 15:35
  • $\begingroup$ 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. $\endgroup$ – StatsStudent Jan 23 '19 at 19:22

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:

  1. Propensity Score Matching in R with Multiple Treatments
  2. Software that matches 6 groups by propensity score?
  3. Comparing two or more treatments with inverse probablity of treatment weighting

My advice would be to use the twang R package.

  • 2
    $\begingroup$ Thanks for your reply and suggestion on package. I was also leaning towards twang package. But needed more suggestions.Thanks again! $\endgroup$ – Beta Aug 5 '16 at 7:00
  • 1
    $\begingroup$ 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. $\endgroup$ – StatsStudent Jan 23 '19 at 19:18
  • $\begingroup$ 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 $\endgroup$ – StatsStudent Jan 23 '19 at 19:24

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.


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.

  • 1
    $\begingroup$ 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. $\endgroup$ – Beta Aug 5 '16 at 7:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.