PSM-DID的经典方法假定为两期数据(处理前1期,处理后1期),PSM-DID经典方法得到了理论上的严格证明,因而可以放心使用。不过广义上来说,只要处理效应前仅包含1期数据、处理后有多期数据的情况也适用于PSM-DID的经典方法,因为psm中的匹配发生在处理效应前,处理效应发生后,处理组和对照组已近发生了分化,所以不需要再匹配!
1 经典PSM-DID模型的应用
1.1 数据
我们已“传统DID-两期数据”中的例子来演示。在传统DID-两期数据的例子中,由于数据只有两期,所以无法进行DID平行趋势检验。进而DID模型也是不完善的。这里我们进一步采用PSM-DID方法来研究,由于采用PSM对处理组和对照组进行了匹配,所以能够消除样本的选择偏差,使估计更加准确。
1.2 录入数据
打开数据编辑窗口,将数据从Excel中复制到Stata,注意粘贴时选择“将第一行作为变量名”
1.3 数据整理
转换为面板数据布局:
reshape long 资产总计 资产负债率 流动比率 总资产周转率 roe 沪港通,i( 证券代码 ) j(year)
由于沪港通仅针对上交所的股票,所以需要删除深交所的股票:
g temp=substr( 证券代码,8,2)
drop if temp=="SZ"
drop temp
变量变换:
encode 证券代码,g(id)
g lnage=ln(year-成立年)
rename 资产总计 asset
g lnasset=ln(asset)
rename 资产负债率 debt
rename 流动比率 liquit
rename 总资产周转率 turnover
rename 沪港通 hgt
1.4 psm-did数据设定
生成时间变量:
g time=0
replace time=1 if year==2015
生产处理效应变量:
g temp=1 if hgt=="是"
bys id: egen treated=sum(temp)
drop temp
生产时间和处理效应的交互项:
g did=time*treated
1.5 psm部分
采用k邻近匹配方法(k=1)进行估计:
psmatch2 treated lnage roe turnover liquit debt if time==0, n(1) outcome(debt) ate ties logit common
注意在psmatch2命令中必须要加“if time==0”,因为要在处理效应前进行匹配,处理效应发生后,处理组和对照组已经发生分化,不能再匹配!
在上述命令中,outcome()参数可以去掉,因为psm部分主要是为了平衡样本,不是为了估计treated对debt的影响。
在估计结果的第二个表中,ATT对应的t统计量为1.14,不显著,这是因为匹配发生在处理效应之前,处理组和对照组理论上不应该存在差异。另外,psm部分主要是为了平衡样本,不是为了估计treated对debt的影响,所以不需要关心ATT的显著性。
数据平衡性检验:
pstest lnage roe turnover liquit debt,both graph
数据平衡性检验是psm-did中应该重点关注的地方。本例中,匹配后所有变量处理组和对照组的值不存在差异,说明数据到了较好的平衡。
从图中也可以看出,匹配后变量的处理组和对照组的偏差明显减小。
删除未匹配成功的样本:
gen common=_support
replace common=-1 if common==0
bys id : egen temp=sum(common)
drop if temp < 0
没有匹配成功的样本数据,如果加入did的回归部分,可能会造成干扰,所以应该将其删除。这也是psm-did比直接采用did方法估计的优势!
由于匹配时仅针对time=0期的数据,未成功匹配的个体仅在time=0期的数据被标记,删除时应该把该个体对应的time=1的数据也删除!
1.6 DID部分
估计混合面板did模型:
reg lnasset did time treated,r
在估计结果中,did变量的系数显著,表明外资介入促使企业资产负债率上升。
估计固定效应面板did模型:
xtset id year
xtreg debt did i.year,fe
在估计结果中,did变量的系数同样显著,表明外资介入促使企业资产负债率上升。
2 处理前1期,处理后多期的psm-did应用
处理前1期,处理后多期的psm-did本质上仍属于经典psm-did方法,其在stata中的应用与两期psm-did一致,这里不再演示!