在 Python 中无需替换的倾向得分匹配

问题描述

我有 2 个数据帧,df_treatmentdf_control。我想根据倾向得分(已计算)将 df_treatment 中的每个元素与 df_control 中的最接近匹配项进行匹配。

问题是我发现的唯一方法是基于 KNN Nearest Neighbors 算法,但进行了替换,因此 df_control 中的元素可能与 df_treatment 中的多个元素匹配。

我试图找到一种方法来根据这两个数据集的倾向得分来匹配这两个数据集,以减少混淆偏差,但使用不替换的匹配方法,因为我必须将处理组中的每个元素与其最接近的倾向得分进行匹配-基于匹配,控制组中的元素只能与处理组中的一个元素匹配。

我正在尝试让算法删除原始 df_control 中的元素,一旦它们与处理组中的元素匹配(并“移动”到 df_matched_control),但我没有没有找到解决这个问题的方法

我已经在这两个笔记本中检查了 Python 中使用 KNN 的倾向得分匹配,但我们都使用了替换匹配:

https://nbviewer.jupyter.org/github/ethen8181/machine-learning/blob/master/ab_tests/causal_inference/matching.ipynb

https://github.com/konosp/propensity-score-matching/blob/main/propensity_score_matching_v2.ipynb

R 包 MatchIt 具有最近的邻居匹配,它解决了这个问题,但我在 Python 中找不到任何类似的东西。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)