stata学习笔记(七):回归分析和稳健性检验

1.分组回归

sort state
by state:reg xxx xxx

但是这样不能直接用outreg导出,采用下面的方法

forvalues t = 2001/2008{
   qui reg y x if year == `t'
   est store r_`t'
}

 然后不小心看到了一位大神的三种方法....没试过先mark

三种策略,建议你都试试:
(1)直接用outreg2的一项功能,   // help outreg2##s_1

bysort compliance: outreg2 using c3.doc, replace: reg ares time size ROA growth lev profquality

(2) 直接用outreg2的另一项功能,    // help outreg2##s_2

levelsof compliance, local(cl)    // help levelsof
cap erase c3.doc
foreach lv of local cl {
    reg ares time size ROA growth lev profquality if compliance == `lv'
    outreg2 using c3.doc
}

(3)手工循环(估计->保存估计结果)->统一输出

levelsof compliance, local(cl)
foreach lv of local cl {
    reg ares time size ROA growth lev profquality if compliance == `lv'
    est store cl_`lv'
}
outreg2 [cl_*] using c3.doc, replace

2.交叉项

genicv可以一键生成很多交叉项

##可以直接表示交叉项。

【例子】

ssc install genicv

sysuse auto,clear

genicv length weight foreign \会生成4个交叉项,所以可能情况,并且有label

reg price length weight length_weight

*如果不愿意生成,直接用

reg price c.length##c.weight \和上面回归一样一样的

 3.工具变量

  • 逆米尔斯比率
  • imr=normalden(predict)/normal(predict)
  • 两阶段回归
ivreg2 roasd size age state indratio hold_share_w income_increase_w (vc=ht vc_den young)

3.群聚调整

*面板数据做回归的时候,如果不加cluster选项,默认的标准差假定模型的标准差对于给定个体在时间上是独立的,而事实上往往在各期之间会有相关性。这种假定导致了标准差的低估。加上的话系数不会有改变,标准差的值会上升,模型更加robust.

reg y x, cluster(code)

 4.内生性问题——heckman两阶段回归

举个例子:
第一阶段:是否打工比如 y=f(var1 var2 var3 var4),  其中y是是否打工的虚变量
第二阶段:对打工者来说,打工的时间长短 m=g(var1 var2 var3)
heckman m var1 var2 var3, select(y=var1 var2 var3 var4) twostep

要说明两点:
1、关键要找到var4这样一个或几个变量,只决定是否打工,而不影响打工时间
2、heckman还有很多的option,无法一一说明,你自己根据需要去找

5.回归结果导出

outreg2 [model1 model2 model3] using "C:UsersASUSDesktopmyfile", tstat e(r2_a,F) bdec(3) tdec(2)

 5.回归残差保存

reg y x1 x2
predict e,r
xb           xb, fitted values; the default
       stdp         calculate standard error of the fitted values
       ue           u_i + e_it, the combined residual
     * xbu          xb + u_i, prediction including effect
     * u            u_i, the fixed- or random-error component
     * e            e_it, the overall error component

如果用e,得出的结果是每个公司每年的残差都不同,如果用u,则是同一个公司不同年度的残差是一样的

因为u是个体效应,e是真正的残差项,区别就在于用FE还是RE时地位不同

原文地址:https://www.cnblogs.com/pursuit1996/p/5023934.html