1. 程式人生 > >asdoc:Stata 結果輸出又一利器!

asdoc:Stata 結果輸出又一利器!

作者:盧梅 | 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 基本輸出結果 (Stata連享會)
相關說明如下:

  • 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,效果如下:

image

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 的縮寫,表示輸出結果保留到小數點後 # 位

輸出效果如下:

asdoc 輸出統計結果-格式控制 (Stata連享會)

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)

輸出效果為:

asdoc 分組統計量輸出 (Stata連享會)

2、迴歸結果輸出

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

基本用法

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

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

輸出效果為:

asdoc 迴歸結果輸出 (Stata連享會)

接下來,我們再執行第二個迴歸,程式碼及輸出結果如下:

. asdoc reg price mpg rep78 headroom, nest append

asdoc 迴歸結果輸出 (Stata連享會)

執行第三個迴歸:

. 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

輸出結果為:

image

加入被解釋變數為 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

效果為:


image.png

如果想顯示標準差而不是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 相關連結


關於我們

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

聯絡我們

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

往期精彩推文


歡迎加入Stata連享會(公眾號: StataChina)