Lee_iris 发表于 2021-5-16 11:22 
可能是数据的问题,算不出来
好的谢谢您! 最近又遇到一个问题

还是合成控制法 我做安慰剂检验时最后做出来的图只有一条线 画不出像许多期刊上一条黑线许多条灰色线那种 不知道什么原因导致的,还有代码中的问题坠在了代码后,比如倒数第二行,感激不尽
代码如下:
tempname resmat //设定一个临时矩阵叫做resmat
forvalues i = 1/29 { //这里的循环是指将1到4个州分别做一次合成控制,也就是把2-4州,分别当做处理组进行合成控制
synth y x1 x2 x3 x4 x5 ,trunit(`i') trperiod(2010) figure nested allopt
matrix `resmat' = nullmat(`resmat') \ e(RMSPE) //临时矩阵等于每个省份做处理进行合成控制时候的rmspe值
local names `"`names' `"`i'"'"' //设定暂元names 为 1 2 3 4 ''' 31
}
mat colnames `resmat' = "RMSPE" //临时矩阵的列名定义为RMSPE
mat rownames `resmat' = `names' // 临时矩阵的行名为names
matlist `resmat' , row("Treated Unit") //展示临时矩阵,并在行的打头表示为"treated unit"
//各城市预测误差分布图
forval i=1/25{
synth y x1 x2 x3 x4 x5,trunit(`i') trperiod(2010) ///
figure nested allopt keep(synth_`i', replace)
}
forval i=1/25{
use synth_`i', clear
rename _time years //这里还会提示没有time这个变量
gen tr_effect_`i' = _Y_treated - _Y_synthetic, replace
keep years tr_effect_`i'
drop if missing(years)
save synth_`i', replace
}
use synth_1, clear
forval i=2/25{
qui merge 1:1 years using synth_`i', nogenerate
}
local lp1
forval i=1/25 {
local lp1 `lp1' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
}
twoway `lp1' || line tr_effect_2 years, /// 这里 line tr_effect_2为什么要用2啊 是随便选还是有什么规则呢
lcolor(black) legend(off) xline(2010, lpattern(dash))