《漲知識》Stata:畢業論文大禮包 C—簡潔易用的新版 esttab

作者:王美庭 (中南民族大學經濟學院)

Email: [email protected]。scuec。edu。cn

連享會

最新專題

直播

連享會-知乎推文列表

article_content();

Note: 助教招聘資訊請進入「課程主頁」檢視。

因果推斷-內生性 專題

⌚ 2020。11。12-15

主講:王存同 (中央財經大學);司繼春(上海對外經貿大學)

課程主頁

https://gitee.com/arlionn/YG

|

微信版

http://

qr32。cn/BlTL43

(二維碼自動識別)

空間計量 專題

⌚ 2020。12。10-13

主講:楊海生 (中山大學);範巧 (蘭州大學)

課程主頁

https://gitee.com/arlionn/SP

|

微信版

https://

gitee。com/arlionn/DSGE

(二維碼自動識別)

1. 本文目的

大家在做實證論文時,會經常用到 Stata 進行實證結果的輸出。那麼選擇哪種命令進行更有效的實證結果輸出往往成了很多同學頭疼的事。基於此,我們的

「Stata:畢業論文大禮包 A——實證結果輸出命令大比拼」

給出了最佳輸出命令的評價,以及

「Stata:畢業論文大禮包 B——神速實證結果輸出之搜狗短語」

給出了搜狗輸出的快捷方式。

透過以上的推文,我們知道,

esttab具有最全的功能,不僅支援 Word 完全體輸出,還支援 LaTeX 完全體輸出

。然而,

esttab命令給出的語句往往也最複雜,雖然也有了搜狗快捷輸出方式,但這同樣會讓很多接觸 Stata 不久的同學無從下手

article_content();

。基於此,本文將根據功能最全的

esttab

的框架,編寫語法更為簡潔的命令。

經過大量時間和精力,以及無數次的測試與 bug 修正,本文的實證結果系列輸出命令已經新鮮出爐,包括:

描述性統計輸出(lxhsum)

分組 T 均值檢驗輸出(lxhttest)

相關係數矩陣輸出(lxhcorr)

迴歸結果輸出(lxhreg)以及前兩篇推文都沒有包括的矩陣輸出(lxhmat)

。加入矩陣輸出的原因在於:除了常規的輸出外,有時候我們需要一些定製的輸出,而定製的輸出往往可以透過矩陣進行構建。

如果以上命令有了更新,同學們可以透過lxhinstall命令安裝更新後的命令

編寫後命令將具有以下特點

基本上

esttab

能做的事,本組命令都能做。

預設狀態下將被設定成最符合一般文獻的輸出標準(消除了

esttab

自帶的一些多餘的空行、多餘的分組)。

語法簡潔,秉持能少寫就少寫的原則。

很多命令在輸出結果至 Word 或 LaTeX 時,Stata 介面並不會有相應的結果呈現,這使得我們如果要檢視相應的結果,還需要來回的切換不同的軟體,甚是麻煩,而本次編寫的命令,將解決這個問題。

以上命令均可以透過

append

命令將結果輸出至一個檔案中(Word 或 LaTeX)。

這裡匯出到 LaTeX 的表格均採用三線表模式,並自動添加了

article_content();

booktabs

宏包。

隻需檢視本推文,就能知道編寫的這些命令的使用。

如果命令仍然有 bug 或者能完善的地方,歡迎大家留言,本文作者將實時更新。

2. 例項所用資料

sysuse nlsw88。dta, clear

tab race, gen(race_num)

drop race_num1

*構建迴歸結果

reg wage age married occupation

est store m1

reg wage age married collgrad occupation

est store m2

reg wage age married collgrad occupation race_num*

est store m3

reg wage age married collgrad occupation hours race_num*

est store m4

*構建矩陣

set seed 123456

mat A = 2563*matuniform(6,5)

mat list A

連享會

最新專題

直播

3. 命令的安裝(lxhinstall)

大家可以在下方的附件中下載本文會用到的用到的命令,對於以後命令的更新,大家可以透過

lxhinstall

article_content();

進行安裝。另外使用該命令進行安裝時有個好處就是:它可以將命令自動安裝在 Stata 的 plus 資料夾對應首字母下的子資料夾中,就如同

ssc install 。。。

的功能一樣。該命令的語法如下:

lxhinstall a_command_name [, replace]

選項說明:

a_command_name

:目前可以輸入的命令名包括

itself

lxhsum

lxhttest

lxhcorr

lxhreg

lxhmat

itself

表示更新命令

lxhinstall

本身。

replace

:如果 Stata 的 plus 資料夾對應首字母下的子資料夾中已經存在要安裝的命令,則需新增該選項才能更新。

方括號內的選項代表可選項(下同)。

例項:

lxhinstall itself //安裝命令本身

lxhinstall lxhsum //安裝命令lxhsum

lxhinstall lxhsum, replace //如果命令lxhsum已經存在,則替換之

4. 描述性統計輸出(lxhsum)

命令語法

lxhsum [varlist] [if] [in] [using/] [, ///

replace append Statistics(string) TItle(string) Alignment(string) PAGE(string)]

選項裡面的大寫代表可以縮寫至大寫部分(下同)。

article_content();

選項說明:

varlist

:僅可輸出數值型變數,若為空,則自動匯入所有數值型變數。

using

:可以將結果輸出至 Word( 。rtf 檔案)和 LaTeX( 。tex 檔案)中(下同)。

replace

:若已存在相同檔名,則替換之。

append

:若已存在相同檔名,則附加之。

statistics()

:可以輸入的全部統計量有:

N mean sd min median max p1 p5 p10 p25 p75 p90 p95 p99

。若為空,則預設輸入

N mean sd min median max

。Stata 介面和 Word 輸出格式預設為

%11。0f

N

)和

%11。3f

(除

N

以外的統計量),LaTeX 輸出格式預設為

%11。0fc

N

)和

%11。3fc

(除

N

以外的統計量)(下同)。當然,我們也可以自行設定,如輸入

N sd(3) min(%9。2f) p99(%9。3fc)

title()

:設定表格標題,若為空,則預設為

Summary statistics

alignment()

:LaTeX 輸出專屬選項,用於設定列格式,可輸入

math

dot

math

表示設定列格式為傳統的數學格式(

>{$}c<{$}

),並自動新增宏包

article_content();

booktabs

array

dot

表示設定列格式為小數點對齊的數學模式(

D{。}{。}{-1}

),並自動新增新增宏包

booktabs

array

dcolumn

。若為空,則預設為

dot

page()

:LaTeX 輸出專屬選項,除了

alignment()

選項自動新增的宏包,該選項還可以新增額外的宏包。

例項:

lxhsum //輸出所有數值型變數的描述性統計

lxhsum wage age race hours //報告所輸入變數的描述性統計

lxhsum wage age race hours, s(N sd(3) min(%9。2f) p99(%9。3fc)) //報告指定統計量和指定數值格式的描述性統計

lxhsum wage age race hours, s(N sd(3) min(%9。2f) p99(%9。3fc)) ti(this is a title) //為表格新增自定義標題

lxhsum wage age race hours using Myfile。rtf, replace s(N sd(3) min(%9。2f) p99(%9。3fc)) ti(this is a title) //將結果匯入到Word檔案中

lxhsum wage age race hours using Myfile。tex, replace s(N sd(3) min(%9。2f) p99(%9。3fc)) ti(this is a title) a(math) //將結果匯入到LaTeX中,並設定列格式為傳統數學模式

article_content();

預設輸出效果:

Stata

Summary statistics

————————————————————————————————————

N mean sd min median max

————————————————————————————————————

wage 2246 7。767 5。756 1。005 6。272 40。747

age 2246 39。153 3。060 34。000 39。000 46。000

race 2246 1。283 0。475 1。000 1。000 3。000

hours 2242 37。218 10。509 1。000 40。000 80。000

————————————————————————————————————

Word

LaTeX

article_content();

5. 分組 T 均值檢驗輸出(lxhttest)

命令語法:

lxhttest varlist [if] [in] [using/] , by(string) [ ///

replace append Statistics(string) TItle(string) Alignment(string) PAGE(string)]

選項說明:

varlist

:需至少輸入一個變數,不能為空,且輸入變數需要數值型變數。

using

:含義同上。

by()

:設定要基於分組的變數。

replace

:含義同上。

append

:含義同上。

statistics()

:所有可輸入的統計量有

N N1 N2 mean1 mean2 mean_diff se t p

。若為空,則預設輸入

N1 mean1 N2 mean2 mean_diff(star)

。數值預設格式同

lxhsum

。也可以自定義統計量和輸出格式,如

N N1(%9。0fc) mean1 mean2(%9。3fc) mean_diff(%11。3f star)

,裡面的

article_content();

star

表示以

* p < 0。10, ** p < 0。05, *** p < 0。01

的形式進行標註星號。

title()

:設定表格標題,預設為

Grouping t-means test

alignment()

:含義同上。

page()

:含義同上。

例項:

lxhttest wage age race hours, by(south) //依據south對變數進行分組T均值檢驗

lxhttest wage age race hours, by(south) s(mean_diff(%9。2f) p(star 4)) //自定義數值格式和star要顯示的位置

lxhttest wage age race hours, by(south) s(mean_diff(%9。2f) p(star 4)) ti(this is a title) //自定義表格標題

lxhttest wage age race hours using Myfile。rtf, replace by(south) s(mean_diff(%9。2f) p(star 4)) ti(this is a title) //匯出結果至Word

lxhttest wage age race hours using Myfile。tex, replace by(south) s(mean_diff(%9。2f) p(star 4)) ti(this is a title) a(math) //匯出結果至LaTeX,並設定列格式為傳統數學模式

article_content();

預設輸出效果:

Stata

Grouping t-means test

————————————————————————————————-

N1 mean1 N2 mean2 mean_diff

————————————————————————————————-

wage 1304 8。402 942 6。887 1。515***

age 1304 39。135 942 39。178 -0。043

race 1304 1。196 942 1。402 -0。206***

hours 1304 36。518 938 38。192 -1。674***

————————————————————————————————-

* p < 0。10, ** p < 0。05, *** p < 0。01

Word

LaTeX

article_content();

6. 相關係數矩陣輸出(lxhcorr)

命令語法:

命令語法:

lxhcorr [varlist] [if] [in] [using/] [, ///

replace append B(string) P(string) STARAUX NOSTAR ///

CORR PWCORR TItle(string) Alignment(string) PAGE(string) ]

選項說明:

varlist

:輸入需要計算相關係數矩陣的數值變數,若為空,則預設匯入所有數值型變數。

using

:含義同上。

replace

:含義同上。

append

:含義同上。

b()

:設定輸出相關係數以及相關係數的數值格式,若為空,則預設為

b(%11。3f)

p()

:設定在相關係數下方輸出

p

值,若為空,則不輸出;若隻寫了

p

,則預設數值格式為

%11。3f

staraux

nostar

:若兩者均為空,則預設在相關係數上以

* p < 0。10, ** p < 0。05, *** p < 0。01

的方式報告星號;若

article_content();

staraux

p

存在,則在

p

值上報告星號;若

nostar

存在,則不報告星號。

corr

pwcorr

:選項

corr

表示報告的相關係數與

corr

預設狀態下一致(在計算相關係數前會先去除包含缺漏值的觀察值);選項

pwcorr

表示報告的相關係數與

pwcorr

預設狀態下一致(在計算相關係數前不會先刪除包含缺漏值);若兩者均為空,則預設匯入

corr

title()

:設定表格標題,預設為

Correlation coefficient matrix

alignment()

:含義同上。

page()

:含義同上。

例項:

lxhcorr //輸出所有數值型變數的相關係數矩陣

lxhcorr wage age race hours //輸出制定變數的相關係數矩陣

lxhcorr wage age race hours, b(2) //設定相關係數的數值格式

lxhcorr wage age race hours, b(2) p(%9。3f) //報告p值並設定p值的數值格式

lxhcorr wage age race hours, b(2) p(%9。3f) staraux //將星號標註在p值上

lxhcorr wage age race hours, b(2) p(%9。3f) nostar //不標註星號

lxhcorr wage age race hours, b(2) p(%9。3f) corr //以corr預設方式計算相關係數

article_content();

lxhcorr wage age race hours, b(2) p(%9。3f) ti(this is a title) //設定表格標題

lxhcorr wage age race hours using Myfile。rtf, replace b(2) p(%9。3f) ti(this is a title) //將結果匯出至Word中

lxhcorr wage age race hours using Myfile。tex, replace b(2) p(%9。3f) ti(this is a title) a(math) //將結果匯出至LaTeX中,並設定列格式為傳統的數學模式

預設輸出效果:

Stata

Correlation coefficient matrix

————————————————————————————————

wage age race hours

————————————————————————————————

wage 1。000

age -0。036* 1。000

race -0。080*** -0。058*** 1。000

hours 0。159*** -0。028 0。045** 1。000

article_content();

————————————————————————————————

* p<0。1, ** p<0。05, *** p<0。01

Word

LaTeX

7. 迴歸結果輸出(lxhreg)

命令語法:

lxhreg [est_store_names] [using/] [, ///

replace append Drop(string) Keep(string) Order(string) VARLabels(string asis) ///

Bfmt(string) BETAfmt(string) SEfmt(string) Tfmt(string) Pfmt(string) ONLYB ///

STARAUX NOSTAR INDicate(string asis) Scalars(string) NONUMbers NOMTitles ///

MTitles(string asis) TItle(string) MGroups(string asis) Alignment(string) PAGE(string)]

article_content();

選項說明:

est_store_names

:輸入已經儲存好的迴歸結果名稱,支援萬用字元(*?)。若為空,則預設匯入所有儲存好的迴歸結果。

using

:含義同上。

replace

:含義同上。

append

:含義同上。

drop()

:不報告輸入變數的係數;

drop(_cons)

表示不需要報告常數項。

keep()

:隻報告輸入變數的係數

varlabels()

: 更改要報告的變數名的顯示名稱

b()

beta()

:設定輸出迴歸結果係數型別及其數值格式;

b()

表示輸出常規的迴歸係數;

beta()

表示輸出標準化的迴歸係數;若兩者均為空,則預設為

b(%11。3f)

(針對 Stata 介面和 Word)和

b(%11。3fc)

(針對 LaTeX )。

se()

t()

p()

onlyb

:設定迴歸係數下方報告標準誤、T 值、 P 值還是什麼都不報告,這四個選項至多有一個存在;若都為空,則預設報告標準誤。

staraux

nostar

:若兩者均為空,則預設在迴歸係數上以

* p < 0。10, ** p < 0。05, *** p < 0。01

的方式報告星號;若

staraux

se類

(含

se t p

)存在,則在

se類

值上報告星號;若

nostar

article_content();

存在,則不報告星號。

indicate()

:不報告指定變數的迴歸係數,而代之以 Yes 或 No(表示指定變數是否在迴歸中出現)。

scalars()

:可以輸入的全部標量為

r2 ar2 pr2 aic bic F ll N

,若為空,則預設匯入

r2 N

以上帶括號的統計量和標量都可以設定對應的數值格式

nonumbers

:不報告每個迴歸模型上方的序號。

nomtitles

mtitles()

:這兩者不能同時存在;

nomtitles

表示不報告每個模型的名稱;

mtitles()

可設定每個迴歸模型的名稱,另外如果設定的是

depvars

,則以每個迴歸的因變數作為每個迴歸模型的名稱,如果設定的是

esn

,則以每個迴歸結果的儲存名稱作為每個迴歸模型的名稱;若這兩個選項均為空,則預設為

mtitles(depvars)

title()

:設定表格標題,預設為

Regression result

mgroups()

:可設定分組,如

mgroups(A B 2 2)

表示將要輸出的四個迴歸分為兩組,前兩個迴歸歸為組別 A,後兩個迴歸歸為組別 B;預設下沒有分組。

alignment()

:含義同上。

page()

:含義同上。

例項:

lxhreg //展示所有已經儲存的迴歸結果

article_content();

lxhreg m1 m2 m3 m4 //展示指定的系列迴歸結果

lxhreg m1 m2 m3 m4, drop(_cons hours) //不報告常數項和hours變數

lxhreg m1 m2 m3 m4, keep(age married) //隻報告age和married變數

lxhreg m1 m2 m3 m4, order(married hours) //將變數married和hours置於報告變數的最上方

lxhreg m1 m2 m3 m4, b(%9。2f) //設定迴歸係數的格式,且預設下報告係數的標準誤

lxhreg m1 m2 m3 m4, b(%9。2f) onlyb //隻報告係數值

lxhreg m1 m2 m3 m4, b(%9。2f) t(3) //不報告預設下的se值,換而報告t值

lxhreg m1 m2 m3 m4, b(%9。2f) p(%9。3f) //不報告預設下的se值,換而報告p值

lxhreg m1 m2 m3 m4, b se(%9。3f) staraux //在標準誤上標註星號

lxhreg m1 m2 m3 m4, b se(%9。3f) nostar //不在任何地方標註星號

lxhreg m1 m2 m3 m4, b se(%9。3f) ind(race=race_num*) //不報告race_num*系列變數,換之以Yes或No的形式展示race變數是否在迴歸中出現

article_content();

lxhreg m1 m2 m3 m4, b se(%9。3f) s(r2(2) ar2(%11。4f) aic F ll N(%9。0fc)) //報告特定的scalars,以及設定它們的數值格式

lxhreg m1 m2 m3 m4, b se(%9。3f) nonum //不報告迴歸所在序號

lxhreg m1 m2 m3 m4, b se(%9。3f) nomt //不報告每個迴歸模型的名稱

lxhreg m1 m2 m3 m4, b se(%9。3f) mt(model1 model2 model3 model4) //自定義每個迴歸模型的名稱

lxhreg m1 m2 m3 m4, b se(%9。3f) ti(this is a title) //自定義表格標題

lxhreg m1 m2 m3 m4, b se(%9。3f) mg(A B 2 2) //設定前兩個迴歸為組別A,後兩個迴歸為組別B

lxhreg m1 m2 m3 m4, b se(%9。3f) mg(“Urban people” B 2 2) //設定前兩個迴歸為組別Urban people,後兩個迴歸為組別B

lxhreg m1 m2 m3 m4 using Myfile。rtf, replace b se(%9。3f) //將回歸結果匯入至Word

lxhreg m1 m2 m3 m4 using Myfile。tex, replace b se(%9。3f) a(math) //將回歸結果匯入至LaTeX,並設定列格式為傳統數學模式

article_content();

預設輸出效果:

Stata

Regression result

————————————————————————————————

(1) (2) (3) (4)

wage wage wage wage

————————————————————————————————

age -0。064 -0。059 -0。067* -0。060

(0。039) (0。037) (0。037) (0。037)

married -0。469* -0。472** -0。629** -0。445*

(0。250) (0。238) (0。244) (0。245)

occupation -0。284*** -0。384*** -0。370*** -0。358***

(0。035) (0。034) (0。034) (0。034)

collgrad 4。220*** 4。133*** 3。969***

(0。273) (0。275) (0。274)

article_content();

race_num2 -0。784*** -0。839***

(0。271) (0。269)

race_num3 -0。224 -0。194

(1。066) (1。057)

hours 0。067***

(0。011)

_cons 11。910*** 11。168*** 11。753*** 8。842***

(1。556) (1。480) (1。492) (1。554)

————————————————————————————————

R-sq 0。031 0。125 0。128 0。142

N 2237 2237 2237 2233

————————————————————————————————

Standard errors in parentheses

article_content();

* p<0。1, ** p<0。05, *** p<0。01

Word

LaTeX

分組別後的 LaTeX

連享會

最新專題

直播

8. 矩陣輸出(lxhmat)

命令語法:

lxhmat a_matrix_name [using/] [, ///

replace append FMT(string) ROWFMT(string) COLFMT(string) ///

TItle(string) Alignment(string) PAGE(string)]

選項說明:

a_matrix_name

:需輸入一個矩陣的名稱。

article_content();

using

:含義同上。

replace

:含義同上。

append

:含義同上。

fmt()

rowfmt()

colfmt()

:這三個選項至多能有一個存在;

fmt()

設定整體矩陣的數值格式,裡面格式的數目隻能為一個;

rowfmt()

設定矩陣每一行的數值格式,裡面格式的數目要與矩陣的行數相等;

colfmt()

設定矩陣每一列的數值格式,裡面格式的數目要與矩陣的列數相等;若三者均為空,則預設為

fmt(%11。3f)

(Stata 介面和 Word)和

fmt(%11。3fc)

(LaTeX)。

title()

:設定表格標題,預設為

Matrix 你所輸入的矩陣的名稱

alignment()

:含義同上。

page()

:含義同上

例項:

lxhmat A //Stata介面輸出矩陣A的內容

lxhmat A, fmt(4) //設定整體矩陣的數值格式為小數點後4位

lxhmat A, rowsfmt(1 2 3 4 5 6) //分別設定矩陣每一行數值的格式

lxhmat A, colsfmt(5 4 3 2 1) //分別設定矩陣每一列數值的格式

lxhmat A, ti(this is a title) //自定義表格標題

lxhmat A using Myfile。rtf, replace //將矩陣輸出至Word

article_content();

lxhmat A using Myfile。tex, replace a(math) //將矩陣輸出至LaTeX,並設定列格式為傳統的數學模式

預設輸出效果:

Stata

Matrix A

——————————————————————————————

c1 c2 c3 c4 c5

——————————————————————————————

r1 461。234 1986。842 2246。919 1683。936 443。186

r2 1467。748 915。633 2314。974 430。901 1172。806

r3 1866。594 2377。370 1717。462 206。150 2160。344

r4 833。922 671。686 908。482 688。025 1762。466

r5 1390。449 1458。971 1962。186 2473。799 2560。546

r6 42。378 2542。164 941。073 2211。197 676。034

——————————————————————————————

article_content();

Word

LaTeX

9. 將以上所有結果輸出至單個檔案中

輸出至單個 Word 檔案中:

lxhsum wage age married grade using Myfile。rtf, replace

lxhttest wage age married grade using Myfile。rtf, by(south) append

lxhcorr wage age married grade using Myfile。rtf, append

lxhreg m1 m2 m3 m4 using Myfile。rtf, append

lxhmat A using Myfile。rtf, append

輸出至單個 LaTeX 檔案中:

lxhsum wage age married grade using Myfile。tex, replace

article_content();

lxhttest wage age married grade using Myfile。tex, by(south) append

lxhcorr wage age married grade using Myfile。tex, append

lxhreg m1 m2 m3 m4 using Myfile。tex, append

lxhmat A using Myfile。tex, append

10. 附件

lxhinstall.ado

lxhsum.ado

lxhttest.ado

lxhcorr.ado

lxhreg.ado

lxhmat.ado

相關課程

連享會-直播課

上線了!

http://lianxh.duanshu.com

免費公開課:

直擊面板資料模型

– 連玉君,時長:1 小時 40 分鐘

Stata 33 講

– 連玉君, 每講 15 分鐘。

部分直播課

課程資料下載

(PPT,dofiles 等)

Note: 助教招聘資訊請進入「課程主頁」檢視。

因果推斷-內生性 專題

article_content();

⌚ 2020。11。12-15

主講:王存同 (中央財經大學);司繼春(上海對外經貿大學)

課程主頁

https://gitee.com/arlionn/YG

|

微信版

http://

qr32。cn/BlTL43

(二維碼自動識別)

空間計量 專題

⌚ 2020。12。10-13

主講:楊海生 (中山大學);範巧 (蘭州大學)

課程主頁

https://gitee.com/arlionn/SP

|

微信版

https://

gitee。com/arlionn/DSGE

(二維碼自動識別)

關於我們

Stata 連享會

由中山大學連玉君老師團隊創辦,定期分享實證分析經驗。

直播間

有很多影片課程,可以隨時觀看。

連享會-主頁

知乎專欄

,300+ 推文,實證分析不再抓狂。

公眾號推文分類:計量專題

|

分類推文

|

資源工具

。推文分成

內生性

|

空間計量

|

時序面板

|

結果輸出

|

交乘調節

五類,主流方法介紹一目了然:DID, RDD, IV, GMM, FE, Probit 等。

article_content();

連享會小程式:掃一掃,看推文,看影片……

掃碼加入連享會微信群,提問交流更方便