文章及代码来源:中国工业经济《税收征管数字化与企业内部薪酬差距》
目录
先po完整代码
*随机抽取对照组和控制组
forvalue i=1/500{
sysuse 数据1.dta, clear
g obs_id= _n //初始样本序号
gen random_digit= runiform() //生成随机数
sort random_digit //按新生成的随机数排序
g random_id= _n //产生随机序号
preserve
keep random_id gtp //保留虚拟的gtp
rename gtp random_gtp
rename random_id id //重命名为id,以备与其他变量合并(merge)
label var id 原数据与虚拟处理变量的唯一匹配码
save random_gtp, replace
restore
drop random_digit random_id gtp //删除原来的gtp
rename obs_id id //重命名为id,以备与random_rd合并(merge)
label var id 原数据与虚拟处理变量的唯一匹配码
save rawdata, replace
*- 合并,回归,提取系数
use rawdata, clear
merge 1:1 id using random_gtp,nogen
xtreg gap random_gtp size lev roa labor age cash indratio top1 soe olddep avgwage lnpgdp i.year i.ind i.prov,fe vce(cluster code)
g _b_random_gtp= _b[random_gtp] //提取x的回归系数
g _se_random_gtp= _se[random_gtp] //提取x的标准误
gen pvalue=2*ttail(e(df_r), abs(_b[random_gtp]/_se[random_gtp]))
keep _b_random_gtp _se_random_gtp pvalue
duplicates drop _b_random_gtp, force
drop if pvalue ==.
save placebo`i', replace //把第i次placebo检验的系数和标准误存起来
}
*- 纵向合并500次的系数和标准误
use placebo1, clear
forvalue i=2/500{
append using placebo`i' //纵向合并500次回归的系数及标准误
}
rename _b_random_gtp coef1
twoway (kdensity coef1,yaxis(1)) (scatter pvalue coef1, msymbol(smcircle_hollow) yaxis(2) mcolor(blue)), ///
title(Placebo Test) ///
xlabel(-0.13(0.05)0.06) ylabel(,axis(1) angle(0)) ylabel(0(1)5,axis(2)) ///
xline(-0.1152, lwidth(vthin) lp(shortdash)) xtit