查看原文
其他

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

连享会 连享会 2022-06-12

👇 连享会 · 推文导航 | www.lianxh.cn

连享会 · 效率分析专题

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


目录

  • 1. 背景

  • 2. 命令介绍

  • 3. 结果输出

    • 3.1 描述性统计

    • 3.2 回归结果

  • 4. 相关推文



温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

1. 背景

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

2. 命令介绍

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

其中,options 选项如下:

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

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 中插入表格

中编译该 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

  • 专题:结果输出
    • Stata:输出漂亮的LaTeX表格-T222
    • Stata结果输出:Excel结果表变身LaTeX表格
    • Stata与LaTeX的完美结合
    • Stata结果输出:用esttab生成带组别名称的LaTeX回归表格
  • 专题:Markdown-LaTeX
    • LaTeX小技巧:简单实用的Beamer模板
    • 用VScode正则表达式转换Markdown和LaTeX链接
    • DAG-有向无环图:如何用LaTeX快速绘制?-B017-
    • LaTeX小白入门:TeXLive安装及使用
    • Stata+LaTex:绘制流程图
    • Markdown教程之LaTeX数学公式简介
    • Markdown常用LaTex数学公式
    • Markdown中书写LaTeX数学公式简介
  • 专题:工具软件
    • LaTeX-如何使用Overleaf生成PPT
    • LaTeX-如何使用 Overleaf 撰写论文
    • Word,MathType与LaTeX公式

课程推荐:因果推断实用计量方法
主讲老师:丘嘉平教授
🍓 课程主页https://gitee.com/lianxh/YGqjp

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【**百度一下:**连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存