我是想这么做的,不知道有木有参考意义
*由于这种类型的处理组不是在某个政策出来以后就能明确区分的,而是每年都会有进入处理组和退出处理组的情况,因此不能随便的直接在某个年份进行匹配就完事。
*进行这种处理组每年都会变化的PSM,需要新建立3个变量
*SH300_in 当年个体进入处理组就等于1,其余年份均为0。这里要说明的是,只是把个体进入处理组的当年设定为1,而后续年份不能设定为1,必须把后续年份和之前没有进入处理组的年份也设置为0.
*SH300_usedtobe 表示个体曾经进入过处理组。只有从来没有进入过处理组的个体才能成为备选的匹配对象。
*SH300_1plus0 表示当年进入处理组和从来没有进入过处理组的个体的样本的合并,这样做是为了构造每年我们进行PSM的总样本
*但是也有个问题是,有可能某个企业被多次匹配到
gen SH300_in = real(Chgsmp04)
replace SH300_in = 0 if SH300!=1
gen SH300_usedtobe = 0
bys Stkcd: replace SH300_usedtobe = 1 if SH300_is>0
gen SH300_1plus0 = 0
replace SH300_1plus0 = 1 if SH300_in==1 | SH300_usedtobe!=1
gen tmp = runiform()
sort tmp
forvalue j = 2005/2017{
psmatch2 SH300_in logAsset TobinQA DebttoAsset if year==`j' & SH300_1plus0 ==1, logit neighbor(3) common caliper(0.3) ties out(tfp_fe_ols)
gen control`j' = .
replace control`j' =1 if _treated==0
}