首页 > 解决方案 > 在 Python 中无需替换的 Prospensity-score 匹配

问题描述

我有 2 个数据框,df_treatment并且df_control. 我想根据他们的倾向得分(已经计算)将每个元素匹配df_treatment到最接近的匹配项。df_control

问题是我发现的唯一方法是基于 KNN 最近邻算法,但有替换,因此 in 中的一个元素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 中找不到类似的东西。

标签: pythondataframereplacematching

解决方案


推荐阅读