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)) //白底

  • 6
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值