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

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

举个简单的

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



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

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



就像这样简单的,我们已经建立了一个表,显示了指定连续变量( price , weight ,和 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) 变量 ltime rtime 的均值、偏度和峰度;3) needle 变量的频率和比例;4)变量 jail inject 的频率。统计数据分别报告每个级别的组变量 male 。我们还显示了每组的样本量和比例。


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

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



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



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

自定义格式和样式

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



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

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



使用collect进一步自定义表格

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

进一步更改表信息,我想1)隐藏表格标题中的变量名称 male ,并将组标签 No Yes 分别更改为 Female male ,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、putpdf putexcel 创建文档,则可以使用 putdocx collect、putpdf collect putexcel ul_cell=collec t导出表格。通过这种方式,该表可以与其他内容一起放在文档中的任何位置。以下是使用 putdocx 创建包含上述表的文档的示例:





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



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

结语

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

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