stata 入门(双重差分模型)

Posted 二师弟&

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stata 入门(双重差分模型)相关的知识,希望对你有一定的参考价值。

stata 入门相关命令

导入数据命令:import excel “路径”, sheet(“sheet”) firstrow case(lower)

属性切换命令:destring varname , replace force

属性值替换命令:replace var=subinstr(var,“待替换”,“替换”,.)

​ eg:replace reptdt=subinstr(reptdt,“2015-2015-12-31”,“2015”,.)

前提:安装:ssc install winsor2

​ 缩尾:winsor2 Y0601b,replace cuts(1 99)

​ 截尾:winsor2 Y0601b,replace cuts(1 99) trim

多维固定效应线性回归:reghdfe ln_y x1 x2 x3 x4 x5, absorb(year id) vce(cluster id)

(关闭more选项。如果打开该选项,那么结果分屏输出,即一次只输出一屏结果。你按空格键后再输出下一屏,直到全部输完。如果关闭则中间不停,一次全部输出。):set more off

循环数据:

forvalue i=2/3
gen b_‘i’ = _b[eventz‘i’]

画图

coefplot,baselevels keep(eventz*) coeflabels( eventz2=“-2” eventz3=“-1” eventz4=“0” eventz5=“1” eventz6=“2” eventz7=“3”) vertical yline(0,lwidth(vthin) lpattern(dash) lcolor(teal)) ylabel(-0.2(0.005)0.3) xline(3,lwidth(vthin) lpattern(dash) lcolor(teal)) ytitle(“处理效应系数估计值”,size(small)) xtitle(“时间(横坐标为完整T、去除系数均值后画图)”,size(small)) transform(*=@-r(mean)) addplot(line @b @at) ciopts(lpattern(dash) recast(rcap) msize(medium)) msymbol(circle_hollow) scheme(slmono)

列数据转换行数据

安装:ssc install gitee,replace

​ gitee install EmperorHeart/wind_data,replace

​ wind_data year

​ 科学计数法转成数字:format 主营营业收入 %25.0g

1. 描述性统计:outtreg2 using x.doc, replace sum(log) title(Decriptive statistics)
2. 相关性分析:ssc install logout
3. 主回归测试:
	use Table-1.dta,clear
    xtreg theil FDIshock_Post02 i.year ,fe cluster(cic3)
    estimate store a1
    xtreg theil FDIshock_Post02 Hhi Tfpdispersion i.year ,fe cluster(cic3)
    estimate store a2
    xtreg theil FDIshock_Post02 Hhi Tfpdispersion Npr_year Gex_year Profit_year Indnum_year i.year,fe cluster(cic3)
    estimate store a3
    esttab a* using table-1.rtf, b(4) p(4)  star(* 0.10 **  0.05 *** 0.01) ar2(4) nogaps drop(*.year) compress  replace

随机抽样:
    permute did beta = _b[did] se = _se[did] df = e(df_r),reps(500) rseed(123) saving("simulations.dta"):reghdfe y did, absorb(country year) vce(robust)

安慰剂检验



forvalues i=1/500
	use "C:\\Users\\aaa\\Desktop\\a.dta", clear
	xtset id year  //面板数据声明
	keep if year==2015   //保留一期数据
	sample 1000, count   //随机抽取32个城市
	keep id  //得到所抽取样本的id编号
	save match_id.dta, replace   //另存id编号数据
	merge 1:m id using "C:\\Users\\aaa\\Desktop\\a\\a.dta" //与原数据匹配
	gen treat1 = (_merge == 3) //将所抽取样本赋值为1,其余为0,得到政策分组虚拟变量
	gen period = (year >= 2018) //生成政策时间虚拟变量
	gen did1 = treat1*period
	reghdfe ln_num did1 $xlist ,absorb(id year) vce(cluster id) 

	* 将回归结果赋值到对应矩阵的对应位置
	mat b[`i',1] = _b[did] //* 系数矩阵
	mat se[`i',1] = _se[did] //* 标准误矩阵

	* 计算P值并赋值于矩阵
	mat p[`i',1] = 2*ttail(e(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 估计系数
keep coef1 se1 pvalue1  
save placebo.dta,replace   //关于p值,估计系数的文件,要用作画图


drop if pvalue1 == .
label var pvalue1 p值
label var coef1 估计系数
keep coef1 se1 pvalue1  
save aa.dta,replace   //关于p值,估计系数的文件,要用作画图


use aa.dta,clear
twoway (kdensity coef1) (scatter pvalue1 coef1, msymbol(smcircle_hollow) mcolor(blue)), ///
title("Placebo Test") ///
xlabel(-0.04(0.01)0.04) ylabel(,angle(0)) ///
xline(0.004, lwidth(vthin) lp(shortdash)) xtitle("Coefficients") ///
yline(0.01,lwidth(vthin) lp(dash)) ytitle(p value) ///
legend(label(1 "kdensity of estimates") label( 2 "p value")) ///
plotregion(style(none)) ///无边框
graphregion(color(white)) //白底

以上是关于stata 入门(双重差分模型)的主要内容,如果未能解决你的问题,请参考以下文章

stata中控制了时间和行业效应主要系数不显著怎么办

差分-微分-分数阶的简单入门体会

广义最小二乘估计是啥?

方程模型

R语言计算回归模型每个样本(观察observationsample)的DFBETAS值实战:每一个样本对给定系数的估计有多大的影响

stata的时间序列分析中如何实现对数据的一阶差分,最好指令写出来·谢谢。。。。。