查看原文
其他

Stata17新亮点——解放表格输出生产力

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:闫续文,中南财经政法大学金融学院

本文编辑:刘子艳

技术总编:戴   雯

Stata&Python云端课程来啦!

好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

2021年4月20日,Stata17正式发布,一改往日成熟稳重的深蓝主色调,甚至连官网都变成了清新时尚的紫色。全新的Stata17不仅增加了一系列更为贴近实操的新功能,如do-file编辑器的改进、表格输出方式的变革、处理日期与时间的新函数等等,而且推进了与主流计算机语言平台的深度整合,如与Python、Java及Jupyter Notebook等的进一步交互,同时也在计量模型的使用上为我们带来了一系列眼前一亮的新命令,如离散选择模型的xtmlogit命令、双重差分法的didregressxtdidregress命令以及Lassotelasso命令等等。为了方便大家快速了解Stata17的使用体验,我们将会通过一系列推文详细地展示新功能的具体用途与操作方法。今天我们首先来开启系列的第一篇,为大家介绍Stata17在表格输出方式上的革新。对于大多数实证研究者而言,报告结果往往是研究中非常重要的一步,需要将Stata中储存的数据信息(如描述性统计信息、回归结果等)以表格形式输出到Word文档中。由于此前Stata的官方命令使用起来较为不便,为此,我们也曾在公众号中撰写了多篇推文介绍如何方便快捷地输出实证结果,包括外部命令esttabestout以及由爬虫俱乐部开发的命令sum2docxcorr2docxt2docxreg2docx的用法等。Stata17的发布为我们带来了全新的table命令以及强大的Collection系统。在此之前,table命令主要用于格式化输出变量之间较为简单的统计信息,功能单一且使用受限。Stata17通过引入Collection系统,极大程度地丰富了table命令的使用范围,不仅能够输出描述性统计信息,还可以通过Collection系统自定义表格的样式(style),调用并输出由其他Stata常用命令(如regresspwcorrttest等)所产生的结果。01
Collection系统
Stata17更新后的table命令是如何做到输出各种实证表格信息的呢?这主要建立在一个全新的系统——Collection——之上。Collection系统为我们提供了一个框架,用于提取其他命令中所储存的结果。Collection系统中的值会被归类为不同的维度(Dimension),我们可以通过选择相应的维度将所需结果以表格形式输出到Microsoft Word、Microsoft Excel、PDF、HTML、LATEX、SMCL或Markdown。添加内容至当前Collection系统的方式很简单,只需要在命令前加上前缀collect get:即可,get可以省略,如下所示:
collect [get]: command我们以回归中常用的regress命令为例,调用Collection系统将回归结果以表格形式输出到Word文档,对表格的样式(style)进行调整,并将该输出的表格样式保存为“myreg”,程序如下:
collect clear //清空Collection系统webuse nhanes2l, clearcollect: regress bpsystol weightcollect: regress bpsystol weight i.sexcollect: regress bpsystol weight i.sex i.agegrpcollect: regress bpsystol weight i.sex i.agegrp i.sex#i.agegrp//收缩压bpsystol对体重weight进行回归,并加入性别和年龄的分组//将regress的结果放入当前Collection系统中
collect style autolevels result _r_b _r_se//指定表格中的维度“result”包含回归系数(_r_b)和标准误(_r_se)//当表格的布局中包含维度“result”时,回归系数和标准误将会被自动输出
collect style cell, nformat(%5.3f) halign(center) font(bold)//设置单元格中数字的显示格式为总长度5,保留小数点后3位数字,居中对齐,设置字体为boldcollect style cell result[_r_se], sformat("(%s)")//设置标准误(_r_se)在报告时出现在圆括号中
collect style _cons last//指定估计的截距项出现在变量列表的最后collect style header result, level(hide)//指定表格不显示维度“result”中系数和标准误的标签名collect style showbase off//不报告变量基准组的回归结果
collect layout (colname#result) (cmdset)//指定表格的行由变量名、系数和标准误组成,列为4次回归的结果
collect style save myreg, replace//将该样式保存为“myreg”,方便以后调用collect export mytable.docx, replace//将表格导出到mytable.docx在上述程序中,我们使用到了三个常用的维度resultcolnamecmdset,分别表示regress命令所储存的结果(如回归系数、标准误、P值等)、变量名和截距项、回归结果的索引,对于这些维度的具体内容,我们可以通过collect label list resultcollect label list colnamecollect label list cmdset进一步查看。输出的表格如下所示:

观察Collection系统的使用过程,我们可以发现,这一系统为我们提供了各式各样修改样式的命令,单是help collect style就能找到十几个相关的命令。虽然第一次调用Collection系统来设计所需表格样式是非常繁琐的,但如果我们后续基本沿用这一样式的话,只需要直接使用该样式即可,程序如下:
collect clearsysuse auto, clearcollect get: regress mpg pricecollect get: regress mpg price i.foreigncollect get: regress mpg price weight length i.foreigncollect style use myreg, replace //直接使用样式myregcollect export mytable1.docx, replace输出的表格如下所示:

02
table命令
Stata17带来了更加丰富的table命令,不仅能够像以前的版本一样输出频数和百分比的表格,还能够通过Collection系统,调用其他Stata命令所产生的结果,输出常用的如相关系数矩阵、回归结果表格等,这一功能主要通过新选项command()来实现。我们使用table命令输出频数分布表,通过Collection系统调用pwcorr命令所产生的相关系数矩阵并将其以表格形式输出到Word文档中,程序如下:
collect clearwebuse nhanes2l, cleartable (agegrp) (race)//行为年龄分组、列为种族分组的频数分布表collect export mytable2.docx, replace
table (rowname) (colname), command(r(C): pwcorr age bmi hlthstat weight)//调用pwcorr命令产生的矩阵"r(C)"输出变量之间的相关系数矩阵collect style cell, nformat(%6.3f) halign(center) font(bold)collect export mytable3.docx, replace输出的表格如下所示:

与我们先前常用输出实证结果的命令相比,无论是使用table命令的command()选项还是直接使用collect:,Stata17都给予了我们更加丰富的选择来调用多个常用命令所产生的结果,并能够结合多样的Style功能来调整表格的样式。但是,Collection系统的相关命令繁多,初次建立表格样式的过程很不友好,即使是非常简单的表格样式调整也需要较为复杂的多个步骤才能完成。因此,当常用的各种表格样式一步步建立起来之后,这一新功能的优势才会逐渐显现。最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



喜欢的话可以点赞、转发哦~



对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐

【爬虫+可视化】链家网北京租房信息

 手把手教你如何获取股票数据和可视化

  Countvalues——数数的超级小帮手

         frame框架进阶篇

 下拉选择框如何变成“小猫咪” | selenium小技巧

  Python中的运算符知多少?

  快来get缺失值的正确打开方式

  frame框架——我到底在哪个“房间”

如何使用Pandas读取txt文件?

基于MySQL数据库实现增量式爬取

寻找春日气息|本月最受欢迎的景点都在这里!

问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!

Python与数据库交互—浅述pymysql

偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇

大家用Stata来“找茬”

“粉墨登场”——多期双重差分法(DID)的Stata操作

Python与百度地图合璧,绘制棒呆的热力地图

【数据可视化】统计图绘制神器:Seaborn

检索Stata推文的“任意门”学会了这些,分分钟提升你的毕业体验

【爬虫实战】双一流大学的月关注度

【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析

进化的标签管理助手——elabel命令

“学术明星”——双重差分法(DID)的Stata操作

偷懒小妙招| selenium之玩转鼠标键盘操作(上)

【爬虫实战】南京地铁又上热榜——客流量分析

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

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

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