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時地位不同