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 入门(双重差分模型)的主要内容,如果未能解决你的问题,请参考以下文章
R语言计算回归模型每个样本(观察observationsample)的DFBETAS值实战:每一个样本对给定系数的估计有多大的影响