其他
2种DID置换检验_安慰剂检验_随机抽样500/1000次(附完整代码免费下载)
2种双重差分法(DID)安慰剂检验方法:随机抽取500/1000次
方法1:2023年《中国工业经济》最新应用:permute一行代码实现DID模型安慰剂检验
2023年第2期《中国工业经济》上有一篇论文应用到了permute命令,可以实现DID模型安慰剂检验
2023年第2期《中国工业经济》论文《东道国数据保护是否会抑制中国电商跨境并购》
原文图为:
代码如下
方法2:随机抽样500/1000次方法
结果为:
*-------------------------------------------------------------- ----------------
* 第一步 DID估计
*--------------------------------------------------------------
cd C:\Users\Metrics\Desktop
use placebo2.dta,clear
reghdfe y did,absorb(id t) vce(cluster id)
*did系数为
*--------------------------------------------------------------
*- 第二步 生成空矩阵以用于存储和作图调用
*--------------------------------------------------------------
mat b = J(500,1,0)
mat se = J(500,1,0)
mat p = J(500,1,0)
*--------------------------------------------------------------
*- 第三步 具体的抽样过程,抽样次数可以根据需要调整 中
*--------------------------------------------------------------
forvalues i=1/500{
*循环500次
use placebo2.dta, clear
xtset id t
keep if t==2014
sample 500, count
keep id
save match_id.dta, replace
merge 1:m id using placebo2.dta
gene treat = (_merge == 3)
gene time = (t >= 2016)
gen did2 = treat*time
quietly reghdfe y did2 ,absorb(id t) vce(cluster id)
mat b[`i',1] = _b[did2]
mat se[`i',1] = _se[did2]
mat p[`i',1] = 2*ttail(e(df_r), abs(_b[did2]/_se[did2]))
}
*--------------------------------------------------------------
*- 第四步 数据准备
*--------------------------------------------------------------
* 矩阵转化为向量
svmat b, names(coef)
svmat se, names(se)
svmat p, names(pvalue)
* 删除空值并添加标签
drop if pvalue1 == .
label var pvalue1 p值
label var coef1 估计系数
keep coef1 se1 pvalue1
*--------------------------------------------------------------
*- 第五步 作图
*--------------------------------------------------------------
*set scheme qlean
twoway (kdensity coef1) (scatter pvalue1 coef1, msymbol(smcircle_hollow) mcolor(blue) ), ///
title("Placebo Test") ///
xlabel(-1(0.1)1) ylabel(,angle(0)) ///
xline(0.79, lwidth(vthin) lp(shortdash)) /// *真实的估计为0.79,即真实数据回归得到的估计系数
xtitle("Coefficients") ///
yline(0.1,lwidth(vthin) lp(dash)) ///
ytitle(p value) ///
legend(label(1 "kdensity of estimates") label( 2 "p value")) /// *图例说明
plotregion(style(none)) ///无边框不需要边框
graphregion(color(white)) //白色底图