ssc install:下载未储存到电脑的指令。
一、定义面板数据
xtset:定义面板数据,将变量按照个体、年份的顺序纵向排列,非平衡面板数据会自动删去不平衡部分。
sum:后接变量,会出均值、方差及最大最小值等信息。
logout,save(Describe) word replace:sum +变量名 :logout是输出到文档,save括号中是输出文件名称,word是文件类型。
pwcorr_a:变量之间线性相关关系检验。
二、时间序列平稳检验
xtunitroot llc:单位根检验,检验不通过时可通过加lags(aic) demean,或者对变量取差分,或者同时使用两种方式看看能否通过。
xtcointtest kao:考的协整检验,检验不通过时可以尝试对变量取差分,同时只要被解释变量是零阶单整,解释变量一阶单整数大于等于二即可通过检验。
三、判断模型选择及计量问题检验
分别reg、xtreg,re后,再xttest0:P值越小则越应采用随机效应模型。
xttest1:判断是否存在自相关,原假设为不存在序列相关。
est store re:储存随机效应的结果。
xtreg,fe后,再xttest3:判断是否存在异方差,P值为0则存在异方差。
xtcsd,pes:原假设为无截面相关。
xtcsd,fri、xtcsd,fre:对比FREES一栏中的检验结果与分位数间大小,大于拒绝无截面相关的原假设。
est store fe:储存固定效应结果。
xtserial:序列是否存在自相关,原假设为不存在序列自相关。
hausman fe re后再est table re fe,b(%6.3f) star(0.1 0.05 0.01):展示怀斯曼检验结果,原假设为选择随机效应模型,即P值小于0.1选固定效应模型。
quietly xtreg 后再xtoverid:聚类稳健误的过度识别,存在异方差时补充,P值小拒绝随机效应。
tab 变量名,gen(变量名):生成虚拟变量。
test + 虚拟变量名:联合显著性检验,伴随概率小说明显著。
xtscc :修正计量问题后的短面板指令;xtgls:长面板指令;xtreg,fe cluster(要聚类的变量,通常是省市、地级市或个体) robust,效果等同于xtscc,只是对于标准误的处理方式有区别。
PS:在选择时间、个体或者双向效应的计量模型时,往往要根据具体问题进行调整,结合问题与检验结果确定最合适的模型。一般的,只要双向固定效应拟合优度较高,则选双向固定效应。
四、基准回归
xtscc:要在方程中加入个体时间层面的虚拟变量控制双向效应,xtreg,fe cluster() robust则已经自动控制了个体与时间维度。逐步回归是将控制变量逐一加入到方程的回归方式。
替换变量稳健性检验:直接换被解释变量与解释变量。
preserve:保存操作进行前的状态;winsor2 , cuts(1 99) replace:括号内控制缩尾的分位数,当上下缩尾超过5%的时候结果便有待考量;restore:恢复缩尾前的数据。
reg ,robust cluster():混合截面回归。
oprobit ,robust cluster():有序probit回归,适用于分类型变量类别较多的时候,输出的结果只有边际系数才有意义。
margins, dydx(关切的变量) atmeans 后再asdoc margins, dydx(关切的变量) atmeans, replace:将回归所得的边际系数输出到指定文档中。
outreg2 using 名称.doc,alpha(0.01, 0.05, 0.1) symbol(***, **, *) dec(3):将结果保存到指定文件夹。
五、内生性检验
ivreg2
xtivreg2 时间虚拟变量 (解释变量=工具变量), fe robust cluster() first savefp(first)后再eststo second后再local var="解释变量"后再est restore first`var':将工具变量第一阶段的回归过程保留下来,一般的,不可识别检验P值要小于0.05,弱工具变量检验F统计值要高于10,当工具变量多于解释变量时,则要进行过度识别检验,怀斯曼伴随概率要尽量低。
xtbound2:广义矩估计,工具变量尽量避免用滞后项。滞后用l.表示,前置用F.表示。
六、异质性分析
preserve后再keep if 关注组别变量== 数值,后再restore,进行分组回归。
组间系数同时显著时,大小比较要进行组间差异检验:
bdiff, group(组变量) model(模型) reps(100) bs detail,reps是指定的抽样次数。
七、中介效应
原三步法,先对核心解释变量与被解释变量回归,再核心解释变量对中介变量回归,最后再将三个变量放进一个方程回归。但是因为三步法有争议,对于其中中介对被解释变量的解释可以用理论解释,即采用两步法加以论证。
在三步法中,如果第二步对中介回归不显著或第三步中直接效应不显著,那么需要进行bootstrap检验:bootstrap r(ind_eff) r(dir_eff), reps(抽样次数): sgmediation 被解释变量, mv(中介变量) iv(解释变量) cv(控制变量)。
八、门槛效应
xthreg 变量,rx(被解释变量) qx(门槛变量) thnum(门槛数) grid(200) trim(0.01 0.01 0.01) bs(300 300 300) vce(cluster 个体):trim内是精度,bs内是抽样次数。
九、调节效应
egen 变量均值=mean(变量),后再gen 去中心化变量=变量-变量均值,后再gen 调节变量交互项=解释变量*调节变量,回归中代入交互项、调节变量以及解释变量即可。
十、空间计量
forvalue i = 起始时间/结束时间 {
preserve
keep if years == `i'
spatwmat using W_neib.dta,name(Wmns) standardize
spatgsa 被解释变量, weights(Wmns) moran
restore
}
生成历年全域莫兰指数,其中矩阵类型分邻接矩阵、逆反距离矩阵、反距离矩阵及经济距离矩阵,需要自己导入到stata格式。
xtmoran 被解释变量, wname(权重矩阵.dta) morani(年份) graph symbol(name):绘制特定年份局域莫兰指数散点图。
use W_neib.dta
spcs2xt var1-var个体数上限,matrix(自定义矩阵名) time(年份数上限)
spatwmat using 自定义矩阵名.dta,name(自定义矩阵名) standardize
reg 变量
spatdiag,weights(自定义矩阵名)
生成一个能够参与空间计量的矩阵,并进行lm检验。
spatwmat using W_neib.dta,name(自定义矩阵名1) standardize
xsmle EPQ DGE FCO EDL CLO IEO MSO FIM,model(sdm) wmat(自定义矩阵名1) hausman nolog
怀斯曼检验
xsmle 变量,model(sdm) wmat(自定义矩阵名1) fe nolog effects
est store sdm_a
xsmle 变量,model(sar) wmat(自定义矩阵名1) fe nolog effects
est store sar_a
xsmle 变量,model(sem) emat(自定义矩阵名1) fe nolog effects
est store sem_a
lrtest sdm_a sar_a
lrtest sdm_a sem_a
lr检验,选择空间自回归、空间误差以及空间杜宾模型。
xsmle 变量名,model(sdm) wmat(自定义矩阵名1) hausman nolog
test [Wx]解释变量=[Wx]控制变量1=[Wx]控制变量2=[Wx]控制变量3=0
testnl ([Wx]解释变量=-[Spatial]rho*[Main]解释变量) ([Wx]控制变量1=-[Spatial]rho*[Main]控制变量1) ([Wx]控制变量2=-[Spatial]rho*[Main]控制变量2) ([Wx]控制变量3=-[Spatial]rho*[Main]控制变量3)
wald检验
xsmle 变量,model(sdm) wmat(Wmns) fe type(ind) nolog effects
est store sdm_ind
xsmle 变量,model(sdm) wmat(Wmns) fe type(time) nolog effects
est store sdm_time
xsmle 变量,model(sdm) wmat(Wmns) fe type(both) nolog effects
est store sdm_both
lrtest sdm_both sdm_ind,df(16)
lrtest sdm_both sdm_time,df(16)
选个体或双向效应,括号内为自由度。
回归:xsmle 变量,model(sdm) wmat(自定义矩阵名1) fe type(both) nolog effects vce(oim) cluster(counties)
这里采用了距估计消除了内生性。
PS:检验结果意义参考:一文读懂空间杜宾_空间杜宾模型-CSDN博客
stata空间杜宾模型(SDM)论文实战-莫兰指数-空间效应分解-反经济距离矩阵-门槛效应-面板数据 - 知乎
十一、双重差分
xtdidregress (方程) (treatment) ,group(个体) time(时间) vce(cluster 个体)
虚拟变量treatment表示的是时间与实验组虚拟变量乘积为1时的数值,最终呈现的是实验组受影响后标识为1,其它则标识为0
estat trendplots
绘制平行趋势图并进行图设置
estat ptrends原假设是满足平行趋势假定(平行趋势检验)
foreach x in 年份的等差数列 {
gen treated_`x'=treated*[years==`x']
}
preserve
drop treated_政策发生年份
reghdfe 被解释变量 treated_年份都具备的前两位*, absorb(个体 时间 c.控制变量1#years c.控制变量2#years c.控制变量3#years ) cluster(banks)
coefplot, baselevels keep(treated_*) vertical coeflabels(treated_时间1=时间1 treated_时间2=时间2 ) yline(0,lwidth(vthin) lpattern(dash) lcolor(teal)) xline(4,lwidth(vthin) lpattern(dash) lcolor(teal))ylabel(,labsize(*0.85) angle(0)) xlabel(,labsize(*0.75)) ytitle("系数") xtitle("年份") msymbol(O) msize(small) mcolor(gs1) addplot(line @b @at,lcolor(gs1) lwidth(medthick)) ciopts(lpattern(dash) recast(rcap) msize(medium)) graphregion(color(white))
restore
平行趋势检验
mat b =J(500,1,0)
*系数矩阵
mat se = J(500,1,0)
*标准误矩阵
mat p = J(500,1,0)
*p值矩阵
**循环500次抽取随机样本并回归
forvalues i = 1/500{
use Boostrap检验.dta, clear
*创建一个面板数据,使得其中仅包含自变量、因变量及虚拟变量及个体时间序号
xtset 个体 时间
*设置面板数据
keep if years == 初始年份
*保留一期数据
sample n, count
*随机抽取n个个体(根据作为实验组数量确定n取值)
keep banks
*得到抽取样本id编号
save match_id.dta, replace
*另存id数据
merge 1:m 个体 using Boostrap检验.dta
*与原数据匹配
drop Treated
*删掉原本的处理组虚拟变量
gen Treated = (_merge == 3)
*将所抽取样本赋值为1,其余为0,得到伪处理虚拟变量
gen did = Treated*Time
reghdfe 被解释变量 did, absorb(个体 时间 c.控制变量1#years c.控制变量2#years c.控制变量3#years) vce(cluster 个体)
* 将回归结果赋值到对应矩阵的对应位置
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 绘图数据.dta,replace
*绘图
use 绘图数据.dta,clear
twoway (kdensity coef1) (scatter pvalue1 coef1, msymbol(smcircle_hollow) mcolor(black)),title("安慰剂检验") xlabel(-0.5(0.1)0.5) ylabel(,angle(0)) xline(0.289, lwidth(vthin) lp(shortdash)) xtitle("变异系数") yline(0.05,lwidth(vthin) lp(dash)) ytitle(p value) legend(label(1 "核密度估计值") label( 2 "伴随概率")) plotregion(style(none)) graphregion(color(white))
*无边框
*白底
*安慰剂检验及绘图
十二、数据预处理
keep 变量:保留变量。
drop if mi(变量1,变量2):删除缺失值。
drop if (变量1==n1)|(变量1==n2):删除符合特定条件的个体。
recode 变量 (1=0) (2=1):对变量进行重新编码。
replace 变量 =n-变量:对变量进行运算。
label define 变量标签名称 1 "女" 0 "男",后再label values 变量 变量标签名称:命名变量。
merge:实现宏微观数据相匹配。