ngreifer/WeightIt

Add new weighting scheme to WeightIt

jyl19 opened this issue · 3 comments

jyl19 commented

Hi Noah,

Long-time user of WeightIt, MatchIt, and cobalt. I hugely appreciate all the work you've put into these packages, as they're the backbone of a lot of the causal inference research and teaching I do. I'm not sure if this is the place to make a request or not, but I was wondering if you've looked into including two different IPW like weighting schemes to WeightIt:

Inverse probability tilting, from Graham, Bryan S., Cristine Campos de Xavier Pinto, and Daniel Egel. "Inverse probability tilting for moment condition models with missing data." The Review of Economic Studies 79, no. 3 (2012): 1053-1079.

Overlap weights, from Li, Fan, Kari Lock Morgan, and Alan M. Zaslavsky. "Balancing covariates via propensity score weighting." Journal of the American Statistical Association 113, no. 521 (2018): 390-400.

I know overlap weights are implemented in R in the PSweight package: https://cran.r-project.org/web/packages/PSweight/vignettes/vignette.pdf

And I'm not sure IPT is implemented directly in R, though it is used in the doubly robust DID approaches of Sant'Anna and Zhao (2020), which are implemented in R here: https://psantanna.com/DRDID/

Anyway, just curious if this is something that is in the works anywhere or what.

Best,
Josh

Hi Josh, Thank you for the note. Overlap weights are implemented; just set estimand = "ATO" with method = "ps". IPT weights are not implemented. However, they are numerically equivalent to entropy balancing weights and exactly identified CBPS weights when the estimand is the ATT, as it is in drdid. For the ATE, entropy balancing weights and IPT weights function very similarly; in my experience, the entropy balancing weights have slightly less variability but equally balance the covariate means, and so are preferable. Both CBPS and entropy balancing have generalizations to continuous treatments and multicategory treatments and are more popular and better described in the literature than IPT, so I don't think I will implement IPT anytime soon unless a compelling reason arises.

If you want to investigate this yourself, I just made a gist containing functions that estimate the IPT weights for the ATT and ATE. The ATT code is a rip from the drdid package, and the ATE code is code I wrote from scratch using the descriptions in the article. Let me know if you find anything interesting in your experimentation.

jyl19 commented

Hi Noah,

Thanks for the information. The ATO looks terrific -- and it replicates what I was looking at in PSweight, so I think we're all systems go on that. Thanks again. Do you know if there is any interest in applying the ATO as an estimand for methods beyond glm-based propensity scores? Would this work with, for example, GBM-based propensity scores or with the CBPS?

I'll check out the IPT stuff you wrote up too, and report back when I can compare that with the Stata package results.

Thanks again!

Any method that estimates propensity scores except CBPS can support ATO weights, but they don't necessarily have the same exact balancing properties that logistic regression ATO weights have. For each method, the estimands it supports are in the documentation for that method.

There is no reason to use CBPS for the ATO because logistic regression ATO weights already exactly balance the covariate means; the whole point of CBPS is to balance the covariate means when other estimands that don't naturally yield the exact balancing property are being used.