PSM的stata实现

Posted celine227

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PSM的stata实现相关的知识,希望对你有一定的参考价值。

1. PSM 简介
在经济学中,我们通常希望评估某项公共政策实施后的效应,为此,我们构建 "处理组" 和 "控制组" 以评估「处理效应 (treatment effect)」。然而,我们的数据通常来自非随机的观察研究中,处理组和控制组的初始条件不完全相同,故存在「选择偏差 ( selection bias)」问题。「倾向得分匹配 (PSM)」法使用倾向得分函数将多维向量的信息压缩到一维,然后根据倾向得分进行匹配。这样可以在既定的可观测特征变量下,使得处理组个体和控制组个体尽可能相似,因而可以缓解处理效应的选择偏差问题。

2. PSM 的分析过程
2.1 PSM 模型设定
对于个体 ,根据是否进行某项处理可以分为两种结果:

表示个体 是否进行某项处理,即 1 表示处理,0表示未处理;
表示个体进行处理的结果;
表示个体未进行处理的结果。
在给定可观测特征变量 情况下,个体 进入处理组的条件概率为:

根据式 (1) 和 (2) 可得参与者的平均处理效应 (ATT) 为:

2.2 PSM 的假设条件
共同支撑假设 (Common Support Assumption)

对于 的任何可能取值,都有 $0

平行假设 (Balancing Assumption)

给定 ,则 独立于 。此假定意味着,对于给定的 ,处理是随机的,即在接受处理之前,处理组和控制组之间没有差异,处理组产生的效应完全来自处理。

2.3 PSM 一般步骤
选择协变量 :尽可能涵盖影响 与 的相关变量;

获取 PS 值:可以使用 probit 或 logit 模型估计;

检验平行假设是否满足:使得 在匹配后的处理组均值和控制组均值较接近,保证数据平衡;

根据 PS 值将处理组个体和控制组个体进行配对:匹配的方法有最近邻匹配、半径匹配、核匹配等;

根据匹配后样本计算 ATT 。

3. PSM 的 Stata 实例

*-安装命令
ssc install psmatch2, replace
psmatch2 Ln_geodistance_ew $control, out(ln_Cash_ratio1) neighbor(1) ate ties logit common  
  • out(ln_wage)指明结局变量
  • logit指定使用logit模型进行拟合,默认的是probit模型
  • neighbor(1)指定按照1:1进行匹配,如果要按照1:3进行匹配,则设定为neighbor(3)
  • common强制排除试验组中倾向值大于对照组最大倾向值或低于对照组最小倾向值
  • caliper(.05)试验组与匹配对照所允许的最大距离为0.05
  • ties强制当试验组观测有不止一个最优匹配时同时记录
  • ate 求平均处理效应即求ATT估计值

Logit模型具体分三类:第一类为二分类logistic模型,其对应的命令代码分别为logit;有序多分类logistic模型,其对应的命令代码分别为ologit;无序多分类logistic回归模型,其对应的命令代码为mlogit。

  • k邻近匹配
  • 卡尺匹配或半径匹配
  • 卡尺内最近邻匹配
  • 核匹配
  • 局部线性回归匹配
  • 样条匹配

在实践中,并没有明确的规则来限定使用哪种匹配方法,但有一些经验法则可以来参考:

  • 如果控制个体不多,应选择又放回匹配
  • 如果控制组有较多个体,应选择核匹配

最常用的方法:尝试不同的匹配方法,然后比较它们的结果,结果相似说明很稳健。结果差异较大,就要深挖其中的原因。

但PSM也有局限性:

  • 大样本
  • 要求处理组和控制组有较大的共同取值范围
  • 只控制了可观测的变量,如果存在不可观测的协变量,就会引起“隐性偏差”

以上是关于PSM的stata实现的主要内容,如果未能解决你的问题,请参考以下文章

运用真实世界数据,开展治疗方案与预后关系研究 | 一键实现基于R语言的倾向性评分匹配(PSM)

深度学习之BP神经网络--Stata和R同步实现(附数据和代码)

倾向得分匹配(PSM)的原理以及应用

因果推断笔记——python 倾向性匹配PSM实现示例

因果推断笔记——python 倾向性匹配PSM实现示例

将Stata代码翻译成R