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:\Users\ASUS\Desktop\myfile", 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时地位不同