clear
forvalue i=1/500{
mat b = J(500,1,0)
mat se = J(500,1,0)
mat p = J(500,1,0)
use E:\山大\论文\混合所有制改革\整合后的数据\总数据.dta,clear
xtset id year
keep if year==2015
sample 110, count
keep obs_id
save "matchid.dta",replace
merge 1:m obs_id using E:\山大\论文\混合所有制改革\整合后的数据\总数据.dta
gen treat1=(_merge==3) //生成伪处理组的虚拟变量
save matchid`i'.dta,replace
use E:\山大\论文\混合所有制改革\整合后的数据\总数据.dta,clear
bsample 1,strata(obs_id) //在每个id中都随机选取一年
keep year
save matchyear.dta,replace
mkmat year,matrix(sampleyear) //生成伪怎能政策
use matchid`i'.dta,replace
xtset obs_id year
gen time1=0
foreach j of numlist 1/598{
replace time1=1 if (obs_id==`j'&year>=sampleyear[`j',1])
}
gen did1=time1*treat1
qui xtreg BTD did1 TobinQ 总资产净利润率ROAB LEV AGE SIZE INTANG INVENT PPE i.year,fe
mat b[`i',1] = _b[did1]
mat se[`i',1] = _se[did1]
scalar df_r = e(N) - e(df_m) -1
mat p[`i',1] = 2*ttail(df_r,abs(_b[did]/_se[did]))
}
svmat b, names(coef)
svmat se, names(se)
svmat p, names(pvalue)
drop if pvalue1 == .
label var pvalue1 p值
label var coef1 估计系数
save placebo.dta,replace // 保存数据
*-删除临时文件
forvalue i=1/500{
erase "matchid`i'.dta"
}
graph set window fontface "Times New Roman"
graph set window fontfacesans "宋体" // 设置图形输出的字体
twoway (scatter pvalue1 coef1,xlabel(-0.004(0.001)0.004, format(%06.4f)) yline(0.1,lp(shortdash)) xline(0.0034662,lp(shortdash)) xtitle("估计系数") ytitle("P值") msymbol(smcircle_hollow) mcolor(red) legend(off)) (kdensity coef1,title("安慰剂检验"))
命令搞错了。设置矩阵的命令不应该在循环语句里,
正确的应该是下面这样:
clear
mat b = J(500,1,0)
mat se = J(500,1,0)
mat p = J(500,1,0)
forvalue i=1/500{
use E:\山大\论文\混合所有制改革\整合后的数据\总数据.dta,clear
………………