kosukeimai / MatchIt

R package MatchIt
212 stars 41 forks source link

Possibility of kernel matching #201

Closed AudinRgr closed 3 months ago

AudinRgr commented 3 months ago

Hello there, Is it doable to produce a kernel matching as in Heckman, Ichimura, Todd (1998). Basically, this method builds matches using all individuals in the control group and attributes a weight relative to the distance for each treated observations based on appropriate kernel. This distance is usually computed with a propensity score.

Source: http://jenni.uchicago.edu/papers/Heckman_Ichimura_etal_1998_ReStud_v65_n2.pdf

Best Audin

ngreifer commented 3 months ago

It's a possibility! I will consider adding it as a method it for a future version. My one hesitation is that for all weighting methods in MatchIt, the weights can be manually reconstructed from the match matrix or subclass membership, whereas for kernel matching, extra information about the distance between units is required, which moves it a bit away from matching as nonparametric preprocessing. If you want to include all units and estimate weights for them, I would recommend performing weighting using WeightIt instead. Although kernel matching isn't available, energy balancing is quite similar in practice and doesn't require a propensity score.

I found some R code for kernel matching here.

AudinRgr commented 3 months ago

Hello, Thanks for this quick answer ! I knew this article before, thanks for that through. Actually in my PhD thesis, I use a kernel matching to smooth weird behaviors of data when doing a matching. This matching is not done for inference but for imputed missing data based on propensity score. The idea is to fill my missing data for one individual based on the weighted distance of all individuals in my sample. I have realize manually this matching by coding in R. I wanted to know, if it was possible for me to help you by coding this extension. Ideally, I would like to code the extension of kernel matching for univariate and maybe multivariate. In the end, MatchIt would be able to produce state-of-the-art matching from the literature. I am still available to discuss it. Best Audin

ngreifer commented 3 months ago

Hi Audin,

It sounds like you should write your own R package, as I think this is quite a bit beyond the scope of what MatchIt is designed for. I could all see this method as an imputation method in mice, though you would need to figure out how to appropriately quantify the uncertainty in the imputations. Kernel matching is not too dissimilar to synthetic controls, so you might also consider how that method has been implemented.

Although kernel matching is a cool method, I wouldn't necessarily call it "state-of-the-art" because it was developed in the 90s and has not seen much use or development since then. You're not the first person to ask about implementing in MatchIt, though, as I think at some time it was considered part of the canon of econometric matching methods, though I think nowadays it is regarded as an old method mostly of theoretical rather than practical interest. Unfortunately kernels are something I am not very familiar with so I haven't spent much time with the method myself. As I mentioned, I am open to adding it to MatchIt, and if I do, I'll let you know if I need any help with the implementation. Don't let that stop you from implementing it yourself.

AudinRgr commented 3 months ago

Hi Noah, Tanks again for this quick and concise answer. You are right, I am looking for a matching method and according to my data, a K-n-n method was not suitable. Btw, we keep in touch, I think I will work on it ! Best and thanks again for your time Audin