查看原文
其他

倾向得分匹配法(PSM)的解读和STATA操作

知乎/青椒Diego 经管定量笔记 2022-12-31

点击上方蓝色文字关注我们



倾向得分匹配法是一种研究方法,它在研究某项治疗、政策、或者其他事件的影响因素上很常见。对于经济、金融学领域来说,比如需要研究某个劳动者接受某种高等教育对其收入的影响,或者比如研究某个企业运用了某项管理层激励措施以后对企业业绩的影响。
如果我们简单地将是否执行了某项事件作为虚拟变量,而对总体进行回归的话,参数估计就会产生偏误,因为在这样的情况下,我们只观察到了某一个对象他因为发生了某一事件后产生的表现,并且拿这种表现去和另一些没有发生这件事情的其他对象去做比较。这样的比较显然是不科学的,因为比较的基础并不同。


通俗地说,我们真正要做的是考虑,如果拿小明来说,小明读了研究生和小明没有读研究生,他的收入会差多少?可是小明已经读了研究生,我怎么才能估计出他要是不读研究生,他的收入会是多少呢?于是,我们引入“倾向得分匹配”这样一种研究方法。英文叫Propensity Score Matching。这种方法能让我们从一大堆没有读研究生的人群中(也就是我们的总体样本的一个子集),对每个人读研究生的概率进行估计,然后选出和小明具有非常相似的去读研究生的概率,可是没有去读的同学小刚——作为小明的对照,然后再来看他们的区别。当样本中的每个研究生”小明“都找到了匹配的非研究生”小刚“,我们便能对这两组样本进行比较研究了。
1. 所以第一步,我们要对总体样本执行probit或者logit模型,然后估计出每一个观测对象读研究生的概率是多少。以probit模型为例,在stata中,执行以下命令:probit [dependent var] [independent var]
其中,[dependent var]是一个0或1的二进制变量,1代表该对象读了研究生,否则是0。2. 对每一个观测值,我们根据估计出来的probit模型,算出他读研究生的概率是多少。Stata中,执行如下命令:predict pscore, p
其中,pscore是定义的记录每个观测对象概率的变量名称。3. 使用psmatch2命令,让Stata帮你对于每个读了研究生的观测对象,找出一个与之具有最接近的概率值的,可是没有读研究生的观测对象:psmatch2 [dependent var], pscore(pscore) noreplacement其中,(pscore)是在第二步中生成的那个记录对象概率的变量,noreplacement是一个选项,使得任何读了研究生的观察对象的对照对象都具有唯一性,换言之,只能1对1匹配。4. Stata会在你的数据中自动添加几个变量,其中_id是自动生成的每一个观测对象唯一的ID;_treated表示某个对象是否读了研究生,如果读了,_n表示的是他被匹配到的对照对象的_id;_pdif表示一组匹配了的观察对象他们概率值的差。做好了这些,你就完成了一个最简单的1对1的倾向得分匹配。psmatch2还提供多种匹配方法,比如在一定的半径范围内的临近匹配、在一定概率阀值内的全部匹配等等。具体的可以在Stata中输入help psmatch2查看所有可用的选项。需要注意的是,psmatch2会在每一轮匹配的时候重新刷新_ID,所以如果比如你需要对psmatch2加入if语句,进行多次循环匹配的话,需要在每一次结束的时候即使将match的结果使用你自己数据的ID导出到其他变量,否则所有本轮_ID以及_n的信息会在下一轮匹配中被清除,事后你将无法判断对照对象究竟为哪个。来源:知乎,版权归作者所有。此外,青椒博士Diego额外添加了文尾阅读材料。




特别关注:以前“数据共享”中珍贵数据的索取渠道,请阅读下文:


(1)数据名称:中国市级地区创新创业环境指数数据(一份很棒的数据)!


(2)数据名称:中国各省经济增长目标管理数据!


(3)数据名称:一份重要的制度环境数据!


(4)数据名称:中国各地基金会发展透明指数数据(一份很好的数据)!



拓展阅读推文(常见方法论的解读):


(1)Heckman二阶段模型详细解读与运用!(福利)


(2)中介效应检验方法


(3)实证论文写作中稳健性检验的构建思路有哪些?



你点的每个“赞”,我都认真当成了喜欢


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存