在进行安慰剂检验时碰到两个问题:(1)单独跑循环命令里面的代码时,到这行命令mat b[`i',1] = _b[SDdid_new]时总是显示invalid syntax;(2)用循环命令跑到向量转为矩阵那块时总显示no; dataset in memory has changed since last saved 求助各位大神为啥命令总是报错,谢谢!
clear
set matsize 5000
mat b=J(500,1,0)
mat se=J(500,1,0)
mat p=J(500,1,0)
forvalues i=1/500{
use 数据1.dta
xtset c year
keep if year==2004
sample 35,count //从所有样本城市中随机抽取与真实试点城市数等量35的城市作为处理组
keep city c
save "atchcity",replace
merge 1:m c using 数据1.dta
xtset c year
gen SDtreatnew=0 //生成伪处理组的虚拟变量
replace SDtreatnew=1 if _merge==3
drop _merge
save "matchcity`i'.dta",replace
use "数据1.dta",clear
xtset c year
bsample 1 ,strata(c) //根据c分组,每组随机抽取一个年份
keep year
save "matchyear.dta",replace
mkmat year, matrix(sampleyear) //向量转化为矩阵
use "matchcity`i'.dta",replace
xtset c year
gen policy_new=0
foreach j of numlist 1/111{
replace policy_new=1 if (c==`j'&year>=sampleyear[`j',1])
}
gen SDdid_new=policy_new*SDtreatnew
global convar "lnrgdp2004 high tec es lnpop lnfdi"
xtreg lnY SDdid_new $convar i.year, fe r
mat b[`i',1] = _b[SDdid_new]
mat se[`i',1] = _se[SDdid_new]
scalar df_r = e(N) - e(df_m) -1
mat p[`i',1] = 2*ttail(df_r,abs(_b[SDdid_new]/_se[SDdid_new]))
}
svmat b,names(coef)
svmat se,names(se)
svmat p,names(pvalue)
drop if pvalue1==.
label var pvalue1 p值
label var cof1 估计系数


雷达卡




京公网安备 11010802022788号







