Stata结果输出:用esttab命令绘制LaTeX表格

发布时间:2022-05-10 阅读 2371

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:宋慧慧 (格拉斯哥大学)
邮箱huihui.song@gla.ac.uk


目录


1. 背景

制作表格是研究人员最常见的任务之一。在本文中,我们将介绍如何通过 esttab 命令输出 LATEX 表格。esttab 命令是由瑞士波恩大学社会学研究所的 Ben Jann 教授编写,被广泛应用于 Stata 的结果输出。

2. 命令介绍

* 命令安装
ssc install estout, replace
* 命令语法
esttab [ namelist ] [ using filename ] [ , options ]

其中,options 选项如下:

  • b(fmt):确定小数点位数;
  • abs:使用 t 统计量的绝对值;
  • not:压缩 t 统计量的储存空间;
  • z[(fmt)]:显示 z 统计量的数值;
  • se[(fmt)]:显示标准误而非 t 统计量;
  • p[(fmt)]:显示 p 值而非 t 统计量;
  • ci[(fmt)]:显示置信区间而非 t 统计量;
  • aux(name [fmt]):显示 Stata 默认存储 e(name) 而不是 t-统计量;
  • [no]constant:不报告常数项。
  • booktabs:选项代表生成 LATEX 格式的表格,常用的其他格式还有 cvs、tab、html;
  • longtableLATEX 中多长表格,大于一页。

3. 结果输出

3.1 描述性统计

. * 使用命令 eststo 和 esttab
. sysuse auto, clear     // 调用数据
. estpost sum headroom trunk weight length turn displacement gear_ratio ///
>     price mpg rep78 if foreign==1
. est store a            // 将汽车类别为 foregin 的描述性统计结果存储为结果a
. estpost sum headroom trunk weight length turn displacement gear_ratio ///
>     price mpg rep78 if foreign==0
. est store b            // 将汽车类别为非国外的描述性统计结果存储为结果 b
. esttab a b using simple.tex, ///
>     replace mtitles("\textbf{\emph{Foreign}}" "\textbf{\emph{National}}") ///
>     /// 设置回归结果的名称并加粗 
>     refcat(headroom "\textbf{\emph{Group 1}}" price "\textbf{\emph{Group 2}}", nolabel) ///
>     /// 在 headroom 与 price 之前分别新增一行,并字体加粗
>     collabels(\multicolumn{1}{c}{{Mean}} \multicolumn{1}{c}{{Std.Dev.}} \multicolumn{1}{l}{{Obs}}) ///
>     /// 为多个模型或方程中的列指定标签标签
>     cells("mean(fmt(2)) sd(fmt(2)) count(fmt(0))")  /// 设置 cells 中所含变量的小数位数
>     label noobs booktabs // 显示变量标签名称,不显示样本个数,LaTeX 格式的表格

3.2 回归结果

3.2.1 简单的表格

 . sysuse census.dta, clear
. xtset region
. qui reg death marriage pop
. est sto reg1                 
. qui estadd local region "No" 
. qui reg death popurban
. est sto reg2                
. qui estadd local region "No"
. qui reg divorce marriage pop 
. est sto reg3
. qui estadd local region "No"
. qui reg divorce marriage pop i.region
. est sto reg4                 
. qui estadd local region "Yes"
. local regressions reg1 reg2 reg3 reg4
. esttab `regressions' using "`output'/simple.tex", replace  

3.2.2 定制的表格


. esttab `regressions' using "simple.tex", replace scalars("region Region") ///         
>     postfoot("\hline\hline \end{tabular}} \begin{tablenotes} \footnotesize \item \lipsum[1] \end{tablenotes} \end{table}")  ///
      /// 在表格下方的注释,\lipsum[1]可以替换为相应的表格注释
>     title("this is a simple table") se label nobaselevel  ///                    
>     refcat(2.region "Omitted category: NE region", nolabel) nomtitles

3.2.3 将表格分成两组

. * 将4个回归结果方程两组
. sysuse census.dta, clear
. xtset region
. qui reg death marriage pop
. est sto reg1                 
. qui estadd local region "No" 
. qui reg death popurban
. est sto reg2                
. qui estadd local region "No"
. qui reg divorce marriage pop 
. est sto reg3
. qui estadd local region "No"
. qui reg divorce marriage pop i.region
. est sto reg4                 
. qui estadd local region "Yes"
. local regressions reg1 reg2 reg3 reg4
. esttab `regressions' using "simple.tex", replace      ///
>     mgroups("Number of deaths" "Number of divorces",  /// 两个组别的名称
>     pattern(1 0 1 0)  /// pattern决定每一列属于哪个组,1代表新的一组的开始
>     span prefix(\multicolumn{@span}{c}{) suffix(})    /// 使组别的名称居中
>     erepeat(\cmidrule(lr){@span}))                     // 分别在每组名称下方增加下划线

3.2.4 两个 panel 表格

. qui reg death marriage if region == 3
. est sto s1
. qui reg death marriage pop if region == 3
. est sto s2
. qui reg death marriage if region == 4
. est sto w1
. qui reg death marriage pop if region == 4
. est sto w2
. * 第一个panel
. esttab s1 s2 using "/simple.tex", replace ///
>     prehead("\begin{tabular}{l*{2}{c}} \hline\hline")  /// 
>     /// 添加在第一个面板生成之前,创建表格的命令
>     posthead("\hline \\ \multicolumn{3}{c}{\textbf{Panel A: South}} \\\\[-1ex]") ///    
>     /// 设置第一个面板的标题与位置
>     fragment /// 允许添加多个面板,因此可以创建一个表格有多个panel
>     mgroups("Number of deaths", pattern(1 0) span prefix(\multicolumn{@span}{c}{) suffix(})) ///
>     nomtitles label 
. * 第二个panel
. esttab w1 w2 using "`output'/simple.tex", append ///
>     posthead("\hline \\ \multicolumn{3}{c}{\textbf{Panel B: West}} \\\\[-1ex]") ///
>     fragment nomtitles nonumbers nolines prefoot("\hline")                      ///
>     postfoot("\hline\hline \end{tabular}") label

3.2.5 在 latex 中插入表格

LATEX 中编译该 tex 文档之前需要加载相应的宏包,用于编译的 main.tex 文件,具体如下:

% 声明文章类型
\documentclass{article}
% 加载所需宏包
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{threeparttable}
\usepackage{lipsum}
\usepackage{booktabs}

%输入表格内容  
\input{regression.tex}   

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh latex, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh