Stata可視化:讓他看懂我的結果!
作者:劉楊 | 連玉君 | (知乎 | 簡書 | 碼雲)
Stata 寒假班 報名中……
連玉君主講,2018年1月13日-21日,北京)
Stata初級班 | Stata高級班
我一直認為:
沒有耳朵不好的聽眾,只有嘴巴不好的講者!
沒有思維遲鈍的學生,只有邏輯混亂的老師!
所以,不要怪別人笨,那是因為我們沒有講清楚,至少是沒有用心講!
1. 回歸結果的圖形呈現
大家在做完一篇實證研究的論文之後是否有這樣的困惑:就是如何將估計係數結果能夠簡潔、直觀的呈現出來?
在學術會議交流論文、或者在畢業論文答辯時,一個常見的做法就是直接將回歸表格粘貼出來,然而弊端也是顯而易見的,那就是頁面中信息太多,導致想要突出的估計結果和顯著性判定被淹沒其中。
無疑,這是對老師和同行耐心力和細緻力的一份考驗,需要他們瞪大眼睛來看、豎起耳朵來聽,稍有打盹,翻頁過去的結果可能就忘記了,只能坐在那裡安靜的懷疑人生……
那麼,如果能夠用圖形的方式呈現估計係數及其顯著性,並且不同估計係數間的相互關係也能夠一目了然,豈不美哉?!
很幸運,Stata
提供了這樣的外部命令來完成這一工作。我們今天的推文就來給大家簡單的介紹一下這兩個外部命令 coefplot
和 arrowplot
。
2. 目的
- 圖形化展示回歸結果,尤其是分組回歸的係數差異。
- 適用於課題報告、畢業答辯等展示。也適用於呈現論文中的複雜結果。
3. coefplot 命令
coefplot
可以非常便捷地對結果進行圖形化展示。- 參見 Stata Journal 14(4):708—737。
- 作者提供了非常完整的介紹和Stata 範例,參見:coefplot主頁→ | Getting started | Examples | Help file
- 安裝:此命令為外部命令,可以使用
ssc install coefplot
進行安裝。 - 該命令可以將回歸模型不同解釋變數的估計係數繪製在一張圖形中,默認設定還會添加估計係數的置信區間,方便判別顯著性。當然,該命令具有很強大的擴展性,可以呈現多種類型的圖示結果。
- Note: 由於上述主頁已經對
coefplot
命令做了非常詳細的解釋,我們的推文中就不再細緻介紹,只是呈現一些常用的效果。
3.1 coefplot 命令的基本語法
coefplot [name] [, opition]
其中,name
為儲存於 stata 內存中的回歸結果名稱(使用 est store
命令),如果此處預設,則默認是 stata 內存中現存的回歸結果。
- Stata 範例如下:
. sysuse auto, clear
. reg price mpg length turn
. coefplot, drop(_cons)
說明:
- 本例中,我們省略了
name
填項,則繪製的是剛剛完成回歸的結果。 drop
選項表示不繪製常數項的估計係數,也可以將_cons
替換為其它變數。輸出效果如下:
3.2 拓展:分組回歸後繪圖
實證分析中還經常劃分兩個或兩個以上的子樣本,進行分組回歸,進而對比兩組的回歸係數。此時,使用 coefplot
可以非常直觀地進行組建係數的對比。
- Stata 範例如下:
. reg price mpg length turn if foreign==0. est store Domestic . reg price mpg length turn if foreign==1. est store Foreign . coefplot Domestic Foreign, drop(_cons) xline(0) *-Note: xline表示在x軸0處做出輔助線,便於判斷顯著性. coefplot Domestic Foreign, /// drop(_cons) /// xline(0, lp(dash) lc(black*0.3)) *-Note: 如果想要調換 X 軸和 Y 軸,可以添加 vertical 選項, 圖略
3.3 拓展:對每一組回歸係數進行個性化設定
coefplot
命令可以對不同的回歸進行圖形的單獨設定,基本語法如下:
coefplot (name [, plotopts]) (name [, plotopts]) ... [, globalopts]
其中:
plotopts
為設定單個組別圖形特徵的選項globalopts
為設定圖形整體風格的選項
Stata範例 如下:
coefplot /// (Domestic, label("國產汽車") offset(0.05) pstyle(p3)) /// (Foreign , label("進口汽車") offset(-0.05) pstyle(p4)) /// , drop(_cons) xline(0, lp(dash) lc(black*0.3)
說明:
offset(#)
選項中的用於設定標記兩組係數的橫線的間距與默認值的倍數。默認 1 個單位的長度,則 offset(0.05) 表示間距為默認值的 5%。該選項也可以由全局 option 的 nooffsets 代替pstyle
選項則用於設定線條的風格和色彩,可以在 p1-p15 之間任意選擇。
3.4 拓展:不同的估計模型下估計係數的比較
- 語法如下:
coefplot (namelist [, plotopts]) ...
不同估計模型用括弧來隔開。例如,我們將多元回歸的每個解釋變數進行單變數回歸,並將估計係數與多元回歸的係數比較。
- Stata範例如下:
. reg price mpg length turn
(multi, label("多元回歸")) ///
, drop(_cons) /// xline(0, lp(dash) lc(black*0.3)) graph export "圖4:多元回歸係數和單變數回歸係數比較.png", replace*-Note: 在 namelist 中用 分隔存儲的回歸結果名稱3.5 拓展:不同被解釋變數下估計係數的圖形比較
coefplot
命令也可以對更換被解釋變數後,估計係數的相互關係進行比較,這實質上是不同圖形的合併。基本語法如下:
coefplot plotlist [, subgropts] || plotlist [, subgropts] || … [, globalopts]
其中,
plotlist
是一個子回歸存儲的名稱subgropts
是對應的 option 選項。- Stata範例如下:
reg price mpg length turn if foreign==0est store Domesticreg price mpg length turn if foreign==1est store Foreignreg weight mpg length turn if foreign==0est store Domestic_w //更換了被解釋變數reg weight mpg length turn if foreign==1est store Foreign_w //更換了被解釋變數#d ;coefplot (Domestic, label("國產汽車")) (Foreign , label("進口汽車")), bylabel(Price) || (Domestic_w) (Foreign_w), bylabel(Weight) || , drop(_cons) byopts(xrescale) xline(0, lp(dash) lc(black*0.3)) ;#d crgraph export "圖5:不同被解釋變數回歸的比較.png", replace
4. arrowplot 命令
顧名思義,這個命令是用來畫箭頭的!
安裝:help arrowplot
此命令為外部命令,可以使用 ssc install arrowplot
下載安裝。
用途:
arrowplot
命令可以通過groupvar
選項對樣本進行分組,並繪製分組後的散點圖來描述組間趨勢。並在每一個散點上繪製箭頭線,來描述每一組的組內趨勢(回歸後斜率)。- 具體應用該圖形的實證研究可以參見 「Betsey Stevenson & Justin Wolfers, 2008. 「Economic Growth and Subjective Well-Being: Reassessing the Easterlin Paradox」。文中給出了描述幸福感的「Stevenson-Wolfers happiness graphs」,就是利用該命令呈現的。
4.1 基本語法
arrowplot yvar xvar [if] [in] [weight], groupvar(varname) [options]
yvar
、xvar
用來定義被解釋變數和解釋變數,同時也指定了坐標軸groupvar
用來制定分組變數。- Stata範例如下:
. sysuse "nlsw88.dta", clear. decode occupation, gen(occu_str) maxlength(6). arrowplot wage hours, groupvar(occu_str). graph export "圖7:arrowplot 基本繪圖.png", replace
4.2 拓展:加入控制變數的箭頭圖
如果想要在回歸過程中加入其它控制變數,可以加入 controls(varlist)
選項,Stata 範例如下
. arrowplot wage hours, groupvar(occu_str) /// control(age collgrad). graph export "圖8:arrowplot 回歸中加入控制變數.png", replace
4.3 拓展:添加分組信息,規定箭頭長度
-Stata範例如下
. arrowplot wage hours, groupvar(occu_str) /// groupname(occupation) line(2). graph export "圖9:arrowplot 添加分組信息,規定箭頭長度.png", replace
4.4 更為豐富的設定
我們可以在 arrowplot
命令中加入諸多 Stata 一般圖形所支持的選項,以便對圖形進行更為靈活的設定。
- Stata範例如下
sysuse "nlsw88.dta", cleardecode occupation, gen(occu_str) maxlength(6)#d ; arrowplot wage hours, groupvar(occu_str) cont(age collgrad) groupname(occupation) line(2) title("工作時數與小時工資關係之行業特徵") subtitle("nlsw88.dta") xtitle("工作時間(每周工作小時數)") xscale(titlegap(2)) ytitle("小時工資") scheme(s1mono) ;#d cr. graph export "圖10:arrowplot 加入一般化圖形選項.png", replace
- 為圖形添加標題和子標題,並設定X軸與Y軸說明,並改為中文投稿常用的黑白模式
關於我們
- 【Stata 連享會(公眾號:StataChina)】由中山大學連玉君老師團隊創辦,旨在定期與大家分享 Stata 應用的各種經驗和技巧。
- 公眾號推文同步發佈於 【簡書-Stata連享會】 和 【知乎-連玉君Stata專欄】。可以在簡書和知乎中搜索關鍵詞
Stata
或Stata連享會
後關注我們。 - 推文中的相關數據和程序,以及 Markdown 格式原文 可以在 【Stata連享會-碼雲】 中獲取。【Stata連享會-碼雲】 中還放置了諸多 Stata 資源和程序。如 Stata命令導航 || stata-fundamentals || Propensity-score-matching-in-stata || Stata-Training 等。
聯繫我們
- 歡迎賜稿: 歡迎將您的文章或筆記投稿至
Stata連享會(公眾號: StataChina)
,我們會保留您的署名;錄用稿件達五篇
以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。 - 意見和資料: 歡迎您的寶貴意見,您也可以來信索取推文中提及的程序和數據。
- 招募英才: 歡迎加入我們的團隊,一起學習 Stata。合作編輯或撰寫稿件五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。
- 聯繫郵件: StataChina@163.com
Stata 寒假班 報名中……
連玉君主講,2018年1月13日-21日,北京)Stata初級班 | Stata高級班
推薦閱讀: