|
mat b = J(1000,1,0) //* 系数矩阵
mat se = J(1000,1,0) //* 标准误矩阵
mat p = J(1000,1,0) //* P值矩阵
***************循环1000次***************
forvalues i=1/1000{
use "C:\Users\DELL\Desktop\国家级新区安慰剂检验\处理组.dta",clear
qui xtset id year //面板数据声明
gen DID1=0
replace DID1=1 if pt==2005&year<2005
replace DID1=1 if pt==2009&year<2009
replace DID1=1 if pt==2012&year<2012
replace DID1=1 if pt==2013&year<2013
replace DID1=1 if pt==2014&year<2014
replace DID1=1 if pt==2015&year<2015
replace DID1=1 if pt==2016&year<2016 //选取政策前年份
keep if DID1==1
sample 1, count by(id) //根据id分组,每组随机抽取一个年份
keep id year //得到所抽取样本的id编号
rename year policy_year
save match_id_year.dta, replace //另存id编号数据
merge 1:m id using "C:\Users\DELL\Desktop\国家级新区安慰剂检验\处理组.dta" //与原数据匹配
qui xtset id year
gen treatment = (_merge == 3) //生成政策分组虚拟变量
gen period = (year >= policy_year) //生成政策时间虚拟变量
gen did0=treatment*period
append using "C:\Users\DELL\Desktop\国家级新区安慰剂检验\控制组.dta"
xtreg gdpr did0 invest consume export gov second agg innov i.year, fe cluster(id)
*将回归结果赋值到对应矩阵的对应位置
mat b[`i',1]=_b[did] //系数矩阵
mat se[`i',1] = _se[did0] //标准误矩阵
mat p[`i',1] = 2*ttail(e(df_r), abs(_b[did0]/_se[did0]))//计算P值并赋值于矩阵
}
* 矩阵转化为向量
svmat b, names(coef)
svmat se, names(se)
svmat p, names(pvalue)
* 删除空值并添加标签
drop if pvalue1 == .
label var pvalue1 p值
label var coef1 估计系数
keep coef1 se1 pvalue1
gen tvalue = coef1/se1 // 计算t值
save placebo.dta,replace //关于p值,估计系数的文件,要用作画图
kdensity coef1,normal scheme(qleanmono) //绘制核密度分布图
|