首页 >> 新闻动态 >> 新闻标题

Stata 18中的dtable命令介绍

2023-07-07


在Stata 17中,我们介绍了用于创建和自定义表格的新collect命令集,以及用于创建和导出估计结果表的etable命令。Stata 18提供了另一个新命令dtable,它可以轻松地构建和导出描述性统计数据表,在出版物中通常称为Table 1。现在,为分类变量和连续变量生成描述性统计表比以往任何时候都容易。值得一提的是,etabledtable这两个命令都是基于我们在Stata 17中引入的collect框架构建的,因此它们共享许多属性。

 

在本文中,将演示如何创建和导出描述性统计数据的简单表格和更复杂的数据表,这些数据表按组显示统计数据,测试组间的差异等等。本文还将展示如何使用collect命令套件来进一步自定义表的外观,以及如何在完整的报告中包括使用dtable创建的表。

 

举个简单的实例

在Stata 18之前,如果我们想生成一个描述性数据统计表,可以使用summary来获得连续变量的汇总统计数据,并使用tabulate来报告分类变量的频率、比例或百分比。我们以auto.dta(1978年的汽车数据)为例:

 

                 

这些命令为我们计算了统计数据。然而,手动将所有这些数字输入到一个格式规范的表中是一项繁琐的工作,而且当我们有新数据时,它是不可复制的。 

 

相比之下,使用dtable,我们可以输入

就像这样简单的,我们已经建立了一个表,显示了指定连续变量(priceweight和 mpg)的数据样本量、平均值和标准差,以及指定分类变量水平的频率和百分比(rep78)。

 

除了完整样本的结果外,我们还可以通过添加by()选项,分别请求组变量(比如foreign)的每个类别的上述统计信息:

 

我们可以使用by()中的子选项nototal来抑制总样本的列。我们可以使用export()选项将该表导出到Word文档myfile.docx中:

导出的表如下

 

 

请求自定义统计数据和检验

默认情况下,dtable报告数据集的样本量、连续变量的均值和标准差,以及分类变量的频率和百分比。但我们可以要求其他描述性统计数据,如中位数和四分位数范围。我们甚至可以为同一个表中的不同变量指定不同的统计信息。在我们进入更高级的示例之前,您先看看下方dtable的对话框。

 

菜单Statistics > Summaries, tables, and tests > Table of descriptive statistics,打开dtable对话框。

?

浏览对话框中的选项卡以熟悉此命令。这是探索使用dtable可以做什么的好方法。我想突出显示三个选项卡,其余的留给您自己探索。

 

•在 Main选项卡上,我们可以指定感兴趣的连续变量和分类变量(使用i.因子变量表示法表示分类变量)。我们也可以指定by变量。我们还可以查看其他结果,比如通过by组显示检验结果,是否要显示样本统计数据等。

•在Continuous选项卡上,我们可以指定连续变量(它们可以在Main选项卡上指定,也可以不指定),并且我们可以请求针对不同变量的自定义统计数据和检验。

Factors选项卡的工作原理与Continuous选项卡类似。我们可以指定factor变量,并为不同的变量选择定制的统计和检验。

 

例如,我们将加载Zeng, Mao, and Lin(2016)中提供的修改后的Modified Bangkok IDU Preparatory Study数据。我们可以尝试为不同的变量指定自定义的统计信息和检验,而不是生成默认的表。在这里,我使用了对话框(主要是上面提到的三个选项卡)来轻松地构建表,相应的语法显示在下面的输出中。

?

在该表中,我们要求报告以下描述性统计数据:1) age变量的平均值、最小值和最大值;2) 变量ltimertime的均值、偏度和峰度;3)needle变量的频率和比例;4)变量jail inject的频率。统计数据分别报告每个级别的组变量male。我们还显示了每组的样本量和比例。


您可能会注意到,我们添加了一列自定义检验来比较组之间的变量。只有在指定了by变量时,才能包含检验。因为我们在testnotes上指定了by()子选项,所以我们为不同变量选择的特定检验在注释中(表前)有明确提及。

 

连续变量的可用检验类型如下:

regress

main effects test from a linear regression (t test)

poisson

main effects test from a Poisson regression

lnormal

main effects test from a log-normal regression

kwallis

Kruskal–Wallis rank test

分类变量的可用的检验类型如下:

pearson

Pearson's chi-squared test

fisher

Fisher's exact test

lrchi2

likelihood-ratio chi-squared test

gamma

Goodman and Kruskal's gamma

kendall

Kendall's τ

cramer

Cramér's V

svylr

survey-adjusted likelihood-ratio test

svywald

survey-adjusted Wald test

svyllwald

survey-adjusted log-linear Wald test

none

suppress the test

 

有了这些选项,dtable可以非常方便地执行跨组比较变量的许多检验,并一步到位将p值放入表中。

 

自定义格式和样式

从上表可以看出,我们可以对其外观进行改进。例如,我们想在列标题中而不是在第一行中显示子组样本大小和比例。我们可能还想增加或减少某些统计数据报告的小数位数。我们可能希望将min值和max值的显示格式更改为“min-max”,并将其放入括号中,我们也可能希望将比例放入括号中。所有这些更改都可以通过dtable选项完成,而无需额外编码。以下是修改后的dtable语法和输出。

?

在上面的语法中,我使用选项define()来定义一个新的复合统计数据minmax,使用现有的统计数据minmax(分隔符“-”用于组合它们)。我们还使用选项nformat()sfomat()分别更改一些统计数据的数字显示格式和字符串显示格式。请注意,“%s”是我们正在编辑字符串格式的统计数据的占位符。

 

如上面例子所示,如果喜欢现在的表,我们可以使用export()选项将表导出到文档中。下面列出了所有支持的导出表的文件类型:

Suffix

File format

Output format

docx

as(docx)

Microsoft Word

html

as(html)

HTML 5 with CSS

pdf

as(pdf)

PDF

xlsx

as(xlsx)

Microsoft Excel 2007/2010 or newer

xls

as(xls)

Microsoft Excel 1997/2003

tex

as(latex)

LaTeX

smcl

as(smcl)

SMCL

txt

as(txt)

Plain text

markdown

as(markdown)

Markdown

md

as(markdown)

Markdown

 

使用collect进一步自定义表格

上面的表格看起来不错。我还将演示如何进行一些dtable无法直接使用的其他更改。由于dtable是使用collect实现的,因此我们可以使用collect命令集来进一步管理使用dtable创建的表,并以各种方式对其进行编辑。顺便说一句,collect命令一开始需要花点功夫来熟悉所有工具,但我相信您会掌握这些技能,并在稍加练习后喜欢使用这组命令来创建您需要的任何表。

 

进一步更改表信息,我想1)隐藏表格标题中的变量名称male,并将组标签NoYes分别更改为Femalemale,2)在连续变量和分类变量之间以及不同分类变量之间添加水平线,3)将检验的p值加粗,并用浅黄色阴影突出显示检验列,4)在表中添加自定义注释,显示不同变量的检验类型。让我们使用下面的collect命令来进行这些更改:

?

请注意,Stata Results窗口可以显示其中的一些更改,但它不能显示诸如阴影颜色之类的修改。我们可以打开Tables生成器,并在那里确认我们拥有所需的确切表格样式。我们可以从菜单中打开表格生成器,打开菜单Statistics > Summaries, tables, and tests > Tables and collections > Build and style table

 

我们可以在Tables生成器的预览窗口中看到表格的外观。

?

 

当我们将该表导出到其他文档时,导出的表将与这里显示的表相同。我们将该表导出为.html文件中。

?

以下是我们的最终文档:

 

生成包含表格的完整报告

由于dtable创建描述性统计数据表,而这种类型的表通常作为Table 1包含在技术文档中,因此您可能希望将使用dtable获得的表插入到更大的文档中,而不是单独将表导出为文档。如果是这种情况,如果您分别使用putdocx、putpdfputexcel创建文档,则可以使用putdocx collect、putpdf collectputexcel ul_cell=collect导出表格。通过这种方式,该表可以与其他内容一起放在文档中的任何位置。以下是使用putdocx创建包含上述表的文档的示例:

?

使用上面的代码,我们创建了文件report1.docx,如下所示

?

本报告也可复制。随时重新运行命令并重新创建报告。

 

结语

在这篇博文中,向您展示了Stata 18中使用dtable可以实现的一些功能和有趣的操作。它有很多功能,我无法在一篇文章中全部展示。您可以申请Stata 18试用来体验一下它给您带来的便利。

 

 

北京天演融智软件有限公司(科学软件网)是STATA软件在中国的授权经销商,为中国软件用户提供优质的软件销售和培训服务。