PSM倾向得分匹配法【python实操篇】

本文是关于PSM倾向得分匹配法的Python实操教程,详细讲解了从数据集创建到匹配过程,包括数据介绍、完整代码示例和结果检验。作者提供了保姆级注释的代码,便于读者理解和复用。文中使用了虚构的电商场景数据,通过匹配得分进行干预组和对照组的匹配,并探讨了匹配规则和匹配效果。最后,作者分享了匹配结果的检验标准和资源获取方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

大家好,我是顾先生,PSM倾向性得分匹配法的Python代码实操终于来啦!

对于PSM原理不太熟悉的同学可以看看前一篇文章:PSM倾向得分匹配法【上篇:理论篇】

目前网上PSM实操的相关文章都是R语言、SPSS和STATA实现的,少数Python版本代码不全,可读性有限(有些甚至要钱。。。)

所以我想出一版可读性强、能迅速复用的Python版本PSM,让各位同学既能看懂又能快速上手。

本次Python代码实操主要参考了psmatching的源码,并做了一定的修改,地址在文末参考资料。

这次我把每段代码都做了保姆级的注释,相信每位同学都能理解到位,当然肯定有注释不对的地方,也欢迎后台私信我。

本文的代码和数据集可关注我的公众号“顾先生聊数据”,后台发送“psm”后领取~

数据集介绍

为了更好地进行演示,我现编了一个数据集,该数据集以电商场景为基础,判断给用户发送优惠券PUSH是否会影响到用户。
在这里插入图片描述

数据集的类别主要由事实层标签(年龄、性别等)和行为层标签(最近一次购买diff、之前使用优惠券情况等)。

重申一下!数据集是我randbetween现编的,不用太较真具体内容。

完整代码

下面的代码我做了尽可能详细的注释,复用时需要修改的地方我也做了标注,如有不合理的地方欢迎后台私聊我哦~

安装psmatching包。

!pip install psmatching
import psmatching.match as psm
import pytest
import pandas as pd
import numpy as np
from psmatching.utilities import *
import statsmodels.api as sm

path及model设置。

#地址
path = "./data/psm/psm_gxslsj_data.csv"
#model由干预项和其他类别标签组成,形式为"干预项~类别特征+列别特征。。。"
model = "PUSH ~ AGE + SEX + VIP_LEVEL + LASTDAY_BUY_DIFF + PREFER_TYPE + LOGTIME_PREFER + USE_COUPON_BEFORE + ACTIVE_LEVEL"
#想要几个匹配项,如k=3,那一个push=1的用户就会匹配三个push=0的近似用户
k = "3"
m = psm.PSMatch(path, model, k)

获得倾向性匹配得分。

df = pd.read_csv(path)
#将用户ID作为数据的新索引
df = df.set_index("ID")
print("\n计算倾向性匹配得分 ...", end = " ")
#利用逻辑回归框架计算倾向得分,即广义线性估计 + 二项式Binomial
glm_binom = sm.formula.glm(formula = model, data = df, family = sm.families.Binomial())
#拟合拟合给定family的广义线性模型
#https://www.w3cschool.cn/doc_statsmodels/statsmodels-generated-statsmodels-genmod-generalized_linear_model-glm-fit.html?lang=en
result = glm_binom.fit()
# 输出回归分析的摘要
# print(result.summary)
propensity_scores = result.fittedvalues
print("\n计算完成!")
#将倾向性匹配得分写入data
df["PROPENSITY"] = propensity_scores
SPSS 是一种统计分析软件,而 PSMatching 则是其中的一种技术方PSMatching(Propensity Score Matching)是一种用于处理因果分析中处理选择偏倚的方。它通过预测每个个体被分配到某个处理组的概率,从而得出每个个体得到处理的倾向分数(propensity score)。 在 SPSS 中使用 PSMatching,首先需要进行数据准备和预处理。这包括收集所需数据、创建变量和确定匹配的变量。接下来,可以使用 SPSS 的“案例控制”(Case Control)运算来执行匹配分析。案例控制是一种能够根据倾向分数对案例和非案例进行配对的函数。 在进行 PSMatching 之前,需要使用 SPSS 进行倾向分数估计。这可以通过一系列逻辑回归模型来现,其中因变量是受处理影响的二元变量,自变量是其他与处理和结果相关的预测因子。从逻辑回归模型中可以获取到每个个体的倾向分数。 然后,将倾向分数作为匹配的依据,使用 SPSS 的案例控制运算进行匹配。通过控制案例和非案例的倾向分数,可以现两组之间更公平的比较和分析。 最后,根据匹配分析的结果,可以利用 SPSS 进行后续的统计分析,如 t 检验、方差分析或回归分析等,来研究处理对结果的真影响。 总之,SPSS PSMatching 提供了一种有效的方来处理选择偏倚,并提供了处理组和对照组之间更公平比较的结果。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值