作者:盧梅 | Stata連享會 (知乎 | 簡書 | 碼雲)

Stata連享會 精彩推文1 || 精彩推文2

攥寫論文過程中,將統計和回歸結果以及其他變數輸出到 word 是重要一步,如何才能既美觀又不耗費大量腦細胞改改改、調調調呢?

summarizecorrelatetabstatcross-tabsregressionst-tests等等等等,這些命令的結果怎麼輸出?想想都覺得頭大。

每次想把幾個回歸結果顯示在一張表上,都要每做一次回歸就儲存一次,最後集合起來輸出。對於表頭相同,數據結構相同的數據,怎樣才能既省地方又美觀的把它們放在一張表上,也經常讓人抓狂。

好在, Stata 中一條新發布的命令 asdoc,將解救我們於結果輸出的苦海中。其最大的特點是:在各種命令前加 asdoc 就能輕輕鬆鬆輸出結果。

本文將重點介紹 asdoc 命令關於描述性統計輸出、回歸結果輸出、表頭相同數據結構相同的數據輸出的功能,篇幅有限,所以挑最經常用到的功能進行介紹,asdoc 詳情請見help asdoc

接下來,就讓我們一起來見證 asdoc 的神奇功能吧。

首先,老規矩,在 stata 中敲入如下代碼安裝 asdoc

. ssc install asdoc, replace

1、輸出描述性統計結果

Example 1:基本用法

以 Stata 系統自帶的數據為例,直觀說明 asdoc 的用法

. sysuse auto, clear
. asdoc sum

描述性統計輸出結果如下:

相關說明如下:

  • asdoc sumasdoc sum, append 效果相同,新輸出的描述性統計結果連帶之前的命令運行結果,一起輸出到word文檔里。
  • asdoc sum, replace 表示只輸出最新運行的描述性統計結果。
  • asdoc sum price mpg rep78 表示對 price mpg rep78 這些變數進行描述性統計
  • asdoc sum price mpg rep78,save(summary.doc) title(###) 表示對 price mgp rep78 進行描述性統計,表名顯示為 ###,word 文檔保存為 summary.doc,效果如下:

Example 2:設定輸出格式

我們也可以輸出更多的統計量,同時對輸出格式進行美化設定:

. asdoc sum, stat(N mean sd tstat p1 p99) fs(7) dec(2)

具體釋義如下:

  • stat(# # #) 表示需要輸出的描述性統計變數,具體而言,stat(N mean sd tstat p1 p99) 表示輸出的統計變數為樣本數、算術平均數、標準差、t 值、1% 分位數、99% 分位數,
  • fs(#)Font size 的縮寫,表示字型大小大小為 # 英鎊,
  • dec(#)Decimal points 的縮寫,表示輸出結果保留到小數點後 # 位

輸出效果如下:

Example 3:分組統計量

如下兩條命令都可以實現將國外樣本與國內樣本分開進行描述性統計:

. asdoc sum, stat(N mean sd tstat p1 p99) by(foreign)
*-或
. bysort foreign: asdoc sum, stat(N mean sd tstat p1 p99)

具體釋義如下:

  • by(varname) 表示按照 varname 分類進行描述性統計,
  • 如果想增加文本描述可以使用 text 選項, 例如如下命令就可以在表格下方顯示文本,括弧內的文本可以自行替換:

. asdoc, text(A car is a wheeled motor vehicle used for transportation) append fs(10)

輸出效果為:

2、回歸結果輸出

接下來,我們介紹 asdoc 大大解放生產力的兩大利器:nest appendrowappend 選項。

基本用法

將幾個回歸結果輸出到一張表上是我們在寫論文時經常遇到的操作,來看看 asdoc 是如何實現的:先運行第一個回歸,後面加 nest 表示這將會是一張集合輸出的表,代碼及輸出結果如下:

. sysuse auto, clear
. asdoc reg price mpg rep78, nest replace

輸出效果為:

接下來,我們再運行第二個回歸,代碼及輸出結果如下:

. asdoc reg price mpg rep78 headroom, nest append

運行第三個回歸:

. asdoc reg price mpg rep78 headroom weight, nest append

結果如下:

簡言之,需要在一張表上顯示多個回歸結果就依次進行 nest append

橫向放置的回歸表格

以上介紹的是對於被解釋變數相同的回歸的輸出方式,對於被解釋變數不同,解釋變數相同的多個回歸結果的共同輸出問題,我們使用 asdoc 中的 wide 選項,仍然以 Stata 系統自帶的數據為例,輸入如下命令:

. asdoc reg price mpg rep78, replace wide

輸出結果為:

想把被解釋變數為 trunk 的回歸結果追加於上表,輸入如下命令:

. asdoc reg trunk mpg rep78, wide

輸出結果為:

加入被解釋變數為 weight 的回歸結果,輸出效果為:

有如下幾個問題需要說明:

  • 在每一條回歸命令後加 t(below) 表示在係數的下方顯示對應的 t 值
  • t(side)表示在旁邊顯示t值。

使用如下兩條命令重現輸出上述三個模型的估計結果:

. asdoc reg price mpg rep78, wide replace t(below) // below
. asdoc reg price mpg rep78, wide replace t(side) // beside

效果為:

如果想顯示標準差而不是t值,就把t(below)t(side)替換成se(below)se(side)

3、表頭相同,數據結構相同的數據輸出

t-tests 結果是表頭相同,數據結構相同的典型代表,t-tests 針對每一個變數都需要運行一次,但每個變數的 t-tests 結果數據結構相同,此時就可以用 rowappend 使它們顯示在一張表上。輸入如下代碼時,只顯示 rep78 的 t-tests 結果。

. sysuse auto, clear
. asdoc ttest rep78==0, replace title(T-test results : mean==0)

接著依次輸入:

. asdoc ttest price==0, rowappend
. asdoc ttest mpg==0, rowappend
. asdoc ttest turn==0, rowappend
. asdoc ttest weight==0, rowappend
. asdoc ttest length==0, rowappend

每輸入一條命令,表格都會自動增加一行來顯示新增加變數的t-tests結果,最終結果如下:

4、多維列表輸出

強大的 asdoc 也可以實現列表統計功能,不加規定默認輸出的統計量為頻數,可以通過 contents() 設定想要輸出的統計量名稱。title(###) 對表格名稱進行設定。輸出一維列表的命令如下:

. sysuse auto, clear
. asdoc table rep78, title(###) c(n mpg mean mpg sd mpg median mpg) replace

表名為 ###,一維列表如下:

  • 二維列表在 asdoc table 後加表示分類依據的兩個變數
  • 三維列表在 asdoc table 後面加表示分類依據的三個變數
  • 四維列表在 asdoc table 後加表示分類依據的三個變數後,需以逗號隔開,再加 by()() 里的變數表示第四個分類依據。

試過之後發現,多維列表用 asdoc 輸出會出現單詞被隔開顯示成兩列的問題,不知道是我 bug 了還是命令本身就 bug 了,如果你試過之後也發現,顯示結果有問題,列表顯示暫時還是用傳統的 table 命令吧,Stata連享會 2018 年 4 月 8 號的推文有關於 table 命令的詳細用法,請戳 [Stata:今天你 「table」 了嗎?-簡書]

歡迎提出批評意見,共同探討,共同學習!

本期 Stata 課堂到此結束,觀眾朋友們,下期再會!

asdoc 相關鏈接

  • asdoc 項目主頁
  • asdoc 的一些主要用法及注意事項
  • asdoc: An easy way of creating publication quality tables from Stata commands

關於我們

  • Stata 連享會(公眾號:StataChina)】由中山大學連玉君老師團隊創辦,旨在定期與大家分享 Stata 應用的各種經驗和技巧。
  • 公眾號推文同步發佈於 CSDN-Stata連享會 、簡書-Stata連享會 和 知乎-連玉君Stata專欄。可以在上述網站中搜索關鍵詞StataStata連享會後關注我們。
  • 點擊推文底部【閱讀原文】可以查看推文中的鏈接並下載相關資料。
  • Stata連享會 精彩推文1 || 精彩推文2

聯繫我們

  • 歡迎賜稿: 歡迎將您的文章或筆記投稿至Stata連享會(公眾號: StataChina),我們會保留您的署名;錄用稿件達五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。
  • 意見和資料: 歡迎您的寶貴意見,您也可以來信索取推文中提及的程序和數據。
  • 招募英才: 歡迎加入我們的團隊,一起學習 Stata。合作編輯或撰寫稿件五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。
  • 聯繫郵件: [email protected]

往期精彩推文

  • Stata連享會推文列表1
  • Stata連享會推文列表2
  • Stata連享會 精彩推文1 || 精彩推文2

Stata連享會 [2018.11.23-25內生性專題現場培訓班] 報名中……

[精彩推文2](arlionn/stata)


weixin.qq.com/r/7Ujm-tf (二維碼自動識別)


推薦閱讀:
相关文章