其他
倾向得分匹配法(PSM)的解读和STATA操作
点击上方蓝色文字关注我们
如果我们简单地将是否执行了某项事件作为虚拟变量,而对总体进行回归的话,参数估计就会产生偏误,因为在这样的情况下,我们只观察到了某一个对象他因为发生了某一事件后产生的表现,并且拿这种表现去和另一些没有发生这件事情的其他对象去做比较。这样的比较显然是不科学的,因为比较的基础并不同。
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)数据名称:中国市级地区创新创业环境指数数据(一份很棒的数据)!
(4)数据名称:中国各地基金会发展透明指数数据(一份很好的数据)!
拓展阅读推文(常见方法论的解读):
你点的每个“赞”,我都认真当成了喜欢