** 这是随机指定treat变量的代码 **
forvalue i=1/LOOP_TIME{ //loop_time处填入你要进行安慰剂检验的次数
use "simdid.dta", clear //调入数据
drop treat //去掉原来DID中的post变量
gen random_digit1=ceil(runiform(1,285)) //生成随机数,我这里treat+control group共有285个个体
g new_treat=0
forvalue j=1/28{ //指定28个个体为treatment group
replace new_treat=1 if citycode==random_digit1[`j']
}
* 合并,回归,提取系数 *
set matsize 11000
g x = post*new_treat
reg y i.post i.new_treat x,vce(cluster citycode)
g _b_new_treat = _b[x] //提取x的回归系数
g _se_new_treat = _se[x] //提取x的标准误
keep _b_new_treat _se_new_treat
duplicates drop _b_new_treat, force
save placebo`i', replace //把第i次placebo检验的系数和标准误存起来
}
* 纵向合并loop_time次的系数和标准误 *
use placebo1, clear
forvalue i=2/loop_time{
append using placebo`i' //纵向合并1000次回归的系数及标准误
}