tbell00 发表于 2016-6-22 09:06 
这个做完了,怎么匹配呀,还是不懂,请大神指教
gen tmp = runiform()
sort tmp
1. 第一步,我们要对总体样本执行probit或者logit模型,然后估计出每一个观测对象的概率是多少。以probit模型为例,在stata中,执行以下命令:
probit [dependent var] [independent var]
其中,[dependent var]是一个0或1的二进制变量。
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查看所有可用的选项。