【发布时间】:2019-06-27 07:37:26
【问题描述】:
我正在尝试使用 pymatch 包,但我不断收到错误 Error: Perfect separation detected, results not available。我检查了多次,我的数据集不相等。它包含 260k 行用于控制和 50k 用于处理,并且具有不同的平均值。我只有 5 个变量,所有 integers 或 Floats 都舍入到小数点后 2 位。
我的目标是将一些经过处理的客户与未处理的客户进行匹配,以便根据倾向得分匹配进行进一步分析。
我已经删除了异常值,因为它显然不能很好地处理这些。我还在逗号后将小数四舍五入到 2 个位置。我尝试只使用整个数据集的 2 个变量。没有任何效果。
d = {'Customer': ['A','B','C','D'], 'Basket_Size': [30, 40,25,30], 'Miles_away': [5.2, 15.4,16.3,7.2], 'was_treated': [1, 0,0,1]}
df = pd.DataFrame(data=d)
df
test = df[df.was_treated== 1]
control = df[df.was_treated== 0]
m = Matcher(test, control, yvar="was_treated", exclude=['Customer'])
## until here it runs perfectly fine
# output:
#Formula:
#was_treated~ Basket_Size+Miles_away
#n majority: 2
#n minority: 2
## this now throws the error
np.random.seed(20170925)
m.fit_scores(balance=True, nmodels=20)
# output:
# Error: Perfect separation detected, results not available
# Fitting Models on Balanced Samples: 1\20
我希望得到像 Average Accuracy: 78% 这样的输出,但我得到 Average Accuracy: nan% 和错误 Error: Perfect separation detected, results not available
【问题讨论】:
标签: python matching propensity-score-matching