資料來源微信公眾號:爬蟲俱樂部、 stata連享會
結果輸出##
clear all //清空內存
set more off // 關閉more選項。
webuse nlswork,clear //導入網上數據
xtset idcode year //設置面板標識
tab year,gen(yd) //生成年份虛擬變量
*回歸1:未控制年份的OLS,對標準誤進行聚類修正
reg ln_w age ttl_exp tenure not_smsa south, vce(cluster idcode)
est store m1
*回歸2:控制年份的OLS,對標準誤進行聚類修正
reg ln_w age ttl_exp tenure not_smsa south yd*, vce(cluster idcode)
est store m2
*回歸3:控制年份的面板固定效應模型,對標準誤進行聚類修正
xtreg ln_w age ttl_exp tenure not_smsa south yd*, fe vce(cluster idcode)
est store m3
local s "using $Out\Table11.csv" // 指定存儲結果的 Excel 文檔名稱
local m " m1 m2 m3 " //指定"m1 m2 m3 " 為m
esttab `m' `s' , star(* 0.1 ** 0.05 *** 0.01) b(%6.3f) t(%6.3f)
compress nogap ///
drop(yd*) stats(N r2_a, fmt(%12.0f %9.3f)) varwidth(20) ///
title("Table1 Wage") mtitle("OLS" "OLS" "FE")
注1:star選項可以對顯著性進行調整,此處表示10%,表示5%,*表示1%。
*注2:b(),t()選項分別為調整輸出系數和t值的格式,%6.3f表示,長度為6,小數3位。
*注3:compress和nogap選項可以壓縮行距和列距。
*注4:由于year是控制變量,我們也不想觀察其系數,故在輸出時使用drop()選項刪除。
*注5:stats()選項可以在輸出結果中增加行注釋或者回歸存儲值;這里我們輸出了觀測值個數N和調整后的R2,并為其設置顯示格式。
*注6:為了避免輸出時變量名缺省,我們使用varwidth()選項,設定輸出變量名長度為20。
*注7:title()和mtitle()選項可以設置表格標題以及模型的標題。
*輸出的表格很精美,然而仍有不足:1)沒有顯示是否控制年份;2)沒有顯示cluster;3)沒有顯示是否控制個體效應(Fixed Effect)。
*對于第一個問題,我們可以選擇使用indicate()選項來解決,命令和輸出結果如下:
esttab m* using $Out\Table12.csv , star(* 0.1 ** 0.05 *** 0.01)
b(%6.3f) t(%6.3f) compress nogap ///
stats(N r2_a, fmt(%12.0f %9.3f)) varwidth(20) indicate("Year
FE=yd*") ///
title("Table1 Wage") mtitle("OLS" "OLS" "FE")
*對于第2和第3個問題,我們可以結合estadd命令來解決。其實esttab和estout是一個很強大的結果輸出命令系列,其選項是通用的,如果能夠靈活的搭配使用則會事半功倍。使用estadd對以上程序進行修改,具體細節請help estadd,修改后的程序如下:
clear
set more off
webuse nlswork,clear
xtset idcode year
tab year,gen(yd)
reg ln_w age ttl_exp tenure not_smsa south, vce(cluster idcode)
estadd local Cluster "Yes",replace //顯示是否cluster
estadd local Fixed_Effect "No",replace //顯示是否控制個體效應(Fixed
Effect)
est store m1
reg ln_w age ttl_exp tenure not_smsa south yd*, vce(cluster idcode)
estadd local Cluster "Yes",replace // 顯示是否cluster
estadd local Fixed_Effect "No",replace //顯示是否控制個體效應(Fixed
Effect)
est store m2
xtreg ln_w age ttl_exp tenure not_smsa south yd*, fe vce(cluster
idcode)
estadd local Cluster "Yes",replace //顯示是否cluster
estadd local Fixed_Effect "Yes",replace //顯示是否控制個體效應(Fixed
Effect)
est store m3
esttab m* using $Out\Table20.csv , star(* 0.1 ** 0.05 *** 0.01)
b(%6.3f) t(%6.3f) ///
compress nogap stats(Fixed_Effect Cluster N r2_a, fmt(%3s %3s
%12.0f %9.3f)) varwidth(20) ///
indicate("Year FE=yd*") title("Table1 Wage") mtitle("OLS" "OLS" "FE")
描述性統計、相關系數矩陣、組建均值差異檢驗和回歸結果四張常用表格如何快速輸出?
help sum2docx // 將描述性統計量表直接輸出到一個 docx 文件中;
help corr2docx // 將相關系數矩陣直接輸入到一個 docx 文件中;
help t2docx // 將分組均值t檢驗結果導出到一個 docx 文件中;
help reg2docx // 將回歸結果導出至 docx 文件中,用法類似于 esttab。
*下載只需在 Stata 命令窗口執行 ssc install **2docx, replace 即可。
*第一:輸出基本統計量: sum2docx 命令
語法結構
sum2docx varlist [if] [in] using ///
filename , [options]
*其中, varlist 指數值型變量列表, filename 指的是輸出的文件名,該命令的 options 非常豐富,可以根據需要選擇。
范例
sysuse auto,clear
sum2docx price-foreign using ///
1.docx, append obs ///
mean(%9.2f) sd min(%9.0g)///
median(%9.0g) max(%9.0g) ///
title("表 1: 描述性統計")
shellout 1.docx
-
第二:輸出相關系數矩陣:corr2docx 命令
語法結構
corr2docx varlist [if] [in] using filename, [options]
其中, varlist 指數值型變量列表, filename 指的是輸出的文件名。sysuse auto,clear corr2docx price-foreign using /// 2.docx, star(* 0.05) /// fmt(%4.2f) /// title("表 2:相關系數矩陣") shellout 2.docx
*第三:組間均值差異檢驗:t2docx 命令
語法結構
corr2docx varlist[if] [in] using filename [, options]
其中, varlist 指數值型變量列表, filename 指的是輸出的文件名
范例
sysuse auto,clear
t2docx price weight length mpg ///
using 3.docx,replace ///
by(foreign) ///
title("表 3: t 檢驗")
shellout 3.docx
*第四:reg2docx 命令可以將回歸結果保存到 .docx 文件中,用法類似于 esttab。先逐項回歸后再匯總至一個文件中。
范例
*-調入數據
sysuse "auto.dta", clear
//比如先做兩個線性回歸
reg price mpg weight length
est store m1
reg price mpg weight length foreign
est store m2
*-然后再做一個 Probit 回歸
probit foreign price weight length
est store m3
*-輸出結果至 Word 文檔
reg2docx m1 m2 m3 using result.docx, ///
ar2(%9.2f) b(%9.3f) t(%7.2f) r2(%9.3f) ///
title("表4: 回歸結果") replace
*-查看 Word 文檔
shellout result.docx
*第五:將上述四張表輸出至一個 Word 文檔中
基本思路
*(1) 用putdocx命令生成一個空白 Word 文檔 - [My_Table.docx],進而使用putdocx text等命令設定文檔屬性;
*(2) 用sum2docx生成「表 1」, 并使用sum2docx命令的append 選項將這張表追加到 [My_Table.docx] 文檔尾部;
*(3) 按第二步的方法, 依次使用 corr2docx, t2docx, reg2docx 命令添加后續表格.
*第六 寫作建議
*(1)寫論文正文時,新建一個 Word 文檔, 命名為: [My_Paper.docx]
*在需要插入表格的地方寫上[---------Table # Here--------],其中,# 表示表格編號;
*(2)Stata 自動生成的 表格 則存放于 另一個 Word 文檔: [My_Table.docx],
*里面存放 [Table 1], [Table 2], …..
*Stata 范例
*我們需要把上述四個基本表格匯總至一份 word 文檔里。
clear all
set more off
putdocx begin //新建 Word 文檔
putdocx paragraph, halign(center) //段落居中
*-定義字體、大小等基本設置
putdocx text ("附:文中待插入表格"), ///
font("華為楷體",16,black) bold linebreak
*-保存名為 My_Table.docx 的 Word 文檔
putdocx save "My_Table.docx", replace
*-調入數據
sysuse "auto.dta", clear
*-----Table 1-----
sum2docx price-length using "My_Table.docx", append ///
obs mean(%9.2f) sd min(%9.0g) median(%9.0g) max(%9.0g) ///
title("表 1: 描述性統計")
*-Note: 選項 append 的作用是將這張新表追加到 "My_Table.docx" 尾
部, 下同.
*-----Table 2-----
putdocx begin
putdocx pagebreak
putdocx save "My_Table.docx", append
corr2docx price-length using "My_Table.docx", append ///
star(* 0.05) fmt(%4.2f) ///
title("表 2:相關系數矩陣")
*-----Table 3-----
putdocx begin
putdocx pagebreak
putdocx save "My_Table.docx", append
t2docx price-length using "My_Table.docx", append ///
by(foreign) title("表 3:組間均值差異 t 檢驗")
*-----Table 4-----
putdocx begin
putdocx pagebreak
putdocx save "My_Table.docx", append
reg price mpg weight length
est store m1
reg price mpg weight length foreign
est store m2
probit foreign price weight length
est store m3
reg2docx m1 m2 m3 using "My_Table.docx", append ///
r2(%9.3f) ar2(%9.2f) b(%9.3f) t(%7.2f) ///
title("表4: 回歸結果")
shellout "My_Table.docx" //大功告成!打開生成的 Word 文檔
基本統計量
sysuse "nlsw88.dta", clear
des //describe, 數據形態
des2 // 外部命令,很好用
sysuse "auto", clear // 調入 Stata 自帶數據文件
codebook // 數據概覽
compress // 自動精簡資料的存儲格式
sum //summarize, 基本統計量
fsum, s(mean sd p50 min max) cat(rep78 foreign) label // 外部命令 , 很
好用
bysort foreign: fsum price wei len // 分組統計
logout, save("$Out\Table1_sum") excel replace: ///
tabstat price wei len mpg turn foreign, ///
stat(mean sd p50 min max) format(%7.2f) column(statistic)
Note: (1) 上述三行要一起執行 ;
(2) logout 那一行的作用是把結果輸出到 excel 表格中 ;
(3) /// 是換行符
相關系數矩陣 , 官方命令
sysuse auto//導入數據
pwcorr price headroom mpg displacement
// Estimate all pairwise correlations
pwcorr price headroom mpg displacement, sig
//Add significance level to each entry
pwcorr price headroom mpg displacement, star(.01) bonferroni
//Add stars to correlations significant at the 1% level after Bonferroni
adjustment
graph matrix price headroom mpg displacement // 相關系數矩陣 ( 散點圖 )