Stata:输出LaTeX表格

文摘   教育   2024-11-12 22:01   山西  


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

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

 课程特色 · 2024机器学习与因果推断

  • 懂原理、会应用。本次课程邀请了两位老师合作讲授,目的在于最大限度地实现理论与应用的有机结合。为期四天的课程,分成两个部分:第一部分讲解常用的机器学习算法和适用条件,以及文本分析和大语言模型;第二部分通过精讲 4-6 篇发表于 Top 期刊的论文,帮助大家理解各类机器学习算法的应用场景,以及它们与传统因果推断方法的巧妙结合。
  • 以 Top 期刊论文为范例。目前多数人的困惑是不清楚如何将传统因果推断方法与机器学习结合起来。事实上,即便是 MIT 和 Harvard 的大牛们也都在「摸着石头过河」。为此,通过论文精讲和复现来学习这部分内容或许是目前最有效的方式了。张宏亮老师此前在浙江大学按照这一模式教授了「因果推断和机器学习」课程,效果甚佳:学生们能够逐渐建立起研究设计的理念,并在构造识别策略时适当地嵌入机器学习方法。

作者:王胜文 (山东财经大学)
邮箱:sw8258@foxmail.com

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

编者按:本文主要摘译自「Packages for generating LaTeX output from Stata code」,特此致谢!


目录

  • 1. Stata 输出 LaTex 简介

  • 2. 自动化与半自动化命令

    • 2.1 自动化命令创建表格

    • 2.2 半自动化命令创建表格

  • 3. 基于动态文档的方式

  • 4. 其他的方式生成表格

  • 5. 相关推文



1. Stata 输出 LaTex 简介

在实际操作中,Stata 有很多自动输出命令,例如 estout/esttab 可以高效地生成默认格式。但是,自动输出命令没办法对默认格式进行调整,所以使用者输出或者定制自己所需的格式是非常困难的。

很多半自动命令,例如 json-this/coeftablestata-tex 之类的命令,在输出过程中可通过手动创建LaTex 编码来生成简单的表格,所以半自动命令的输出结果可以根据操作者需求进行设置。

半自动命令在输出 LaTex格式之前,经常会将计算得出的结果保存在外部文件中。虽然半自动化命令较为复杂,但是其优势在于能更便捷地对产生的表格数据进行分析。例如,

  • 不需要重新运行命令便可对表格进行重构;
  • 可以轻松地将不同的样本及变量生成结构相同的表格;
  • 可以很方便地生成表格的替代版本;
  • 在不同版本之间有很强的兼容性。

2. 自动化与半自动化命令

2.1 自动化命令创建表格

2.1.1 estout

* 命令安装
ssc install estout, replace

* 命令语法
estout [ namelist ] [ using filename ]
[, cells(array) stats(scalarlist) style(style) options ]

其中,namelist 是存储估计集的名称列表,using filename 是设置输出结果的文件名,cells()stats() 选项决定了表格的主要内容,style() 选项确定表格的基本格式。

. sysuse auto, clear
. eststo: quietly regress price weight mpg
. eststo: quietly regress price weight mpg foreign
. estout

--------------------------------------
est1 est2
b b
--------------------------------------
weight 1.746559 3.464706
mpg -49.51222 21.8536
foreign 3673.06
_cons 1946.069 -5853.696
--------------------------------------

. estout using example.txt
. type example.txt
est1 est2
b b
weight 1.746559 3.464706
mpg -49.51222 21.8536
foreign 3673.06
_cons 1946.069 -5853.696

2.1.2 esttab

* 命令语法
esttab [ namelist ] [ using filename ]
[, options estout_options ]

在使用 esttab 输出回归结果时,首先存储多个模型的结果,然后使用 esttab 命令将存储的估计集组成一个回归表。esttabestout 之间的主要区别是 esttab 会输出完全格式化的结果。

. sysuse auto, clear
. regress price weight mpg
. estimates store model1
. regress price weight mpg foreign
. estimates store model2
. esttab model1 model2 //括号里默认输出t统计量

--------------------------------------------
(1) (2)
price price
--------------------------------------------
weight 1.747** 3.465***
(2.72) (5.49)
mpg -49.51 21.85
(-0.57) (0.29)
foreign 3673.1***
(5.37)
_cons 1946.1 -5853.7
(0.54) (-1.73)
--------------------------------------------
N 74 74
--------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

. esttab, p scalars(F df_m df_r) //括号里默认输出p值

--------------------------------------------
(1) (2)
price price
--------------------------------------------
weight 1.747** 3.465***
(0.008) (0.000)

mpg -49.51 21.85
(0.567) (0.769)

foreign 3673.1***
(0.000)

_cons 1946.1 -5853.7
(0.590) (0.087)
--------------------------------------------
N 74 74
F 14.74 23.29
df_m 2 3
df_r 71 70
--------------------------------------------
p-values in parentheses
* p<0.05, ** p<0.01, *** p<0.001

2.1.3  outreg2

* 命令安装
ssc install outreg2, replace

* 命令语法
outreg2 [varlist] [estlist] using filename
[, options] [: command]
. sysuse auto, clear
. regress mpg foreign weight headroom trunk length turn displacement
. est store Full
. regress mpg foreign weight headroom
. est store Restricted1
. regress mpg foreign weight
. est store Restricted2
. outreg2 [Full Restricted1 Restricted2] using myfile.doc, replace
myfile.doc
dir : seeout

2.1.4 tabout

tabout 主要对象是描述性统计结果,而不是回归结果。tabout 的一大特点是提供定制化服务,即改变选项就能够对表格细节进行修改,以达到用户需要的样式。

* 命令安装
ssc install tabout, replace

* 命令语法
tabout [varlist] [if exp] [in range]
[weight = exp] using filename [ , options]
. sysuse auto, clear
. tabout foreign rep78 using table1.xls, c(mean mpg mean weight mean length ///
> median price median headroom) f(1c 1c 1c 2cm 1c) clab(MPG Weight_(lbs) ///
> Length_(in) Price Headroom_(in)) sum npos(tufte)

Table output written to: table1.xls
Mean Mean Mean Median Median
MPG Weight (lbs) Length (in) Price Headroom (in)
Car origin
Domestic (70%) 19.8 3,317.1 196.1 $4,782.50 3.5
Foreign (29%) 24.8 2,315.9 168.5 $5,759.00 2.5
Total (100%) 21.3 3,019.5 187.9 $5,006.50 3.0

Repair record 1978
1 (2%) 21.0 3,100.0 189.0 $4,564.50 1.8
2 (11%) 19.1 3,353.8 199.4 $4,638.00 3.8
3 (43%) 19.4 3,299.0 194.0 $4,741.00 3.5
4 (26%) 21.7 2,870.0 184.8 $5,751.50 3.0
5 (15%) 27.4 2,322.7 170.2 $5,397.00 2.5
Total (100%) 21.3 3,032.0 188.3 $5,079.00 3.0

2.1.5 orth_out

orth_out 主要对象是汇总统计和正交表格,而不是回归结果。

* 命令安装
ssc install orth_out, replace

* 命令语法
orth_out varlist1 [using filename] [if] ,
by(varlist2) [options]
. sysuse auto, clear
. orth_out price mpg, by(foreign) se compare test count

Domestic: Foreign: (1) vs. (2): p-value f~y:
_ _ _ _
Price:mean 6072.423 6384.682 -312.259 0.680
se 429.491 558.994 754.449 .
Mileage(mpg):mean 19.827 24.773 -4.946 0.001
se 0.658 1.410 1.362 .
N:_ 52.000 22.000 74.000 .

2.2 半自动化命令创建表格

2.2.1 json-this / coeftable

命令 json-thiscoeftable 计算的值保存为 .json 文件,然后插入到外部 .tex 模板中。该命令需要从「Gábor Nyéki 主页」手动安装,并需要安装 Python 相关包。

2.2.2 stata-tex

命令 stata-tex 将计算值保存为 .csv,然后插入到外部 .tex 模板中。该命令需从「Paul Novosad 主页」手动安装,并需要安装 Python 相关包。

2.2.3 texresults

命令 texresults 计算出的值被保存为 .tex 宏文件。

* 命令安装
ssc install texresults, replace

* 命令语法
texresults using filename, [options]
. sysuse auto, clear
. regress mpg trunk weight foreign

你可以使用 estout 命令将回归结果导出并放置在LaTex 文档中。这样做的好处是在对回归结果进行调整后,重新运行 do-file 并编译 TeX 文件,文章中的表格会自动更新。

如果想在文本中突出 foreign 的系数,你可以将其手动粘贴进文档,然而这种方法的问题在于系数无法因调整而发生变化,需要手动修改回归系数。

为了解决这一问题,你可以将 foreign 的系数保存在本地,将其四舍五入到合理的小数位。例如:

. local foreign = round(_b[foreign], 0.1)

接着,可以使用 file 命令创建一个包含存储系数的新LaTex 文本文件。

capture: file close myfile
file open myfile using "results.tex", write replace
file write myfile "\newcommand{\foreign}{$`foreign'$}" _n
file close myfile

请注意,foreign 的系数保存在分隔符 $...$ 中,以便在 中直接显示。一个最简单的模板示例如下:

\documentclass{article}
\input{results.tex}
\begin{document}
Our main result is \foreign.
\end{document}

具体示例,参考「Export Stata results as LaTeX macros」。

2.2.4 regsave / texsave

命令 regsavetexsave 计算出的数值保存为 Stata 数据集,并导出 .tex 文件。

* 命令安装
ssc install regsave, replace
ssc install texsave, replace
. tempfile results
. sysuse auto, clear
. local replace replace
. foreach rhs in "mpg" "mpg weight" {
2. foreach type in "Domestic" "Foreign" {
3. reg price `rhs' if foreign=="`type'":origin, robust
4. regsave using "`results'", pval autoid `replace' ///
addlabel(rhs,"`rhs'",origin,"`type'")
5. local replace append
6. }
7. }
. use "`results'", clear
. list

2.2.5 texdoc

命令 texdoc 可以将计算值直接导入到含有 .do 文件的 .tex 模板中。

* 命令安装
ssc install texdoc, replace

texdoc 的文档结构:

texdoc init myexample.tex, replace

/***
\documentclass{article}
\usepackage{graphicx}
\usepackage{stata}
\begin{document}

\section{Exercise 1}
Open the 1978 Automobile Data and summarize the variables.

***/

texdoc stlog
sysuse auto
summarize
texdoc stlog close

/***

\section{Exercise 2}
Run a regression of price on milage and weight.

***/

texdoc stlog
regress price mpg weight
texdoc stlog close

/***

\end{document}
***/

2.2.6 write_mats

命令 write_mats 需要从「Alessandro Martinello 主页」手动安装。write_mats 将计算结果被保存为 .ster 文件,并将所需的数值排列为 Stata 矩阵,最后导出为 .tex 文件。

2.2.7 listtab

listtab 将表格设置为 Stata 数据集,然后导出 .tex 格式文件。

* 命令安装
ssc install listtab, replace

* 命令语法
listtab [ varlist ] [ using filename ] [if] [in] [ ,
begin(string) delimiter(string) end(string) missnum(string)
rstyle(rowstyle) vbegin(varname) vdelimiter(varname)
vend(varname) headlines(string_list) footlines(string_list)
headchars(namelist) footchars(namelist) nolabel type replace
appendto(filename) handle(handle_name) ]
. sysuse auto, clear
. listtab make weight mpg if foreign, type rstyle(markdown) ///
head("`tabhead'") headc(underline)

3. 基于动态文档的方式

这些方法通常适用于将分析结果集成到新建的文档中,当然也可以用于输出 LaTex文件 (但可能需要使用类似 Pandoc 工具将 Markdown 或 HTML 转换为LaTex)。

  • Stata 内置的 dyntext 命令 (文本,包括 tex 源码) 或 dyndoc 命令 (markdown) ;
  • markstat 命令。

4. 其他的方式生成表格

  • 在字符串中产生 .tex 代码,并使用 outsheet 导出 (根据「Damon Jones 的推特帖子」);
  • 使用 file write 直接编写 .tex 代码 (根据「Paul Goldsmith-Pinkham 的例子」);
  • 使用 extract-from-stata (程序包) 将来自 Stata 日志文件的回归输出转换为 .tex 格式 ;
  • 使用 R 代替 Stata (使用 stargazer (程序包) 输出 LaTeX 格式 )。

5. 相关推文

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

  • 专题:结果输出
    • Stata结果输出:用esttab命令绘制LaTeX表格
    • Stata:输出漂亮的LaTeX表格-T222
    • Stata结果输出:Excel结果表变身LaTeX表格
    • Stata与LaTeX的完美结合
    • Stata结果输出:用esttab生成带组别名称的LaTeX回归表格
  • 专题:Markdown-LaTeX
    • Latex系列3:使用Overleaf制作个人简历
    • Latex系列2:Beamer入门-学术范儿的幻灯片
    • LaTeX:TeXStudio编辑器快捷键大全
    • LaTeX小技巧:简单实用的Beamer模板
    • 用VScode正则表达式转换Markdown和LaTeX链接
    • DAG-有向无环图:如何用LaTeX快速绘制?-B017-
    • LaTeX小白入门:TeXLive安装及使用
    • Stata+LaTex:绘制流程图
    • Markdown教程之LaTeX数学公式简介
    • Markdown常用LaTex数学公式
    • Markdown中书写LaTeX数学公式简介


🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)


尊敬的老师 / 亲爱的同学们:

连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!




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



🍏 关于我们

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



连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
 最新文章