Stata 17 中的可自定义表格,第六部分:多元回归模型的表格

在上一篇文章中,向您展示了如何使用新的改进的table命令中的command()选项创建统计测试表。在这篇文章中,将向您展示如何使用新的collect命令套件手机信息和创建表。我们的目标是拟合三个逻辑回归模型并在下面的Adobe PDF文档中创建表格。

创建基本表

让数显输入webuse nhanes2l打开NHANES数据集,然后输入describe来检查一些变量。


该数据集包括年龄、性别、高血压指标(highbp)和糖尿病指标(DM)。


一种新的剪标策略

我们将为二元结果highbp拟合三个逻辑回归模型。对于每个模型,我们将使用逻辑命令来估计优势比和标准误差。然后我们将使用estat ic来估计每个模型的Akaike信息准则(AIC)和Schwarz的贝叶斯信息准则(BIC)。表格将包含来自六个不同命令的三个模型的信息。


鉴于我们表达的相对复杂性,我们将使用一种新策略来构建它。我们将使用collect get从每个命令收集信息。然后我们将使用collect布局来定义我们表的布局。在开始整体的表格之前,让我们做一个简单的例子来说明这个策略。


让我们在逻辑回归命令之前输入collect get.


接下来让我们输入collect layout来定义具有行维度colname和列维度resual的表的布局。我使用方括号包含维度resualt 中的_r_b和_r_se级别。这将分别为系数和标准误差添加列。


那很简单!我们使用两个命令创建了一个基本的回归输出表。输出告诉我们collect创建了一个名为default的新集合。


这样我们重复这个策略并添加一些选项。让偶我们先输入collect clear以清楚Stata内存中的全部几何。然后让我们使用collect create创建一个名为MyModels的新集合。

接下来,让我们使用collect get选项name()从名为MyModels的集合中的逻辑回归模型中收集结果。请注意,我输入的是collect而不是collect get。“得到”这个词不是必需的。

我还想为我的逻辑回归模型的结果指定一个新的维度和级别。我可以使用tag()选项来做到这一点。基本语法是tag( dimension [ level ])。下面的示例将逻辑回归模型的结果存储到维度模型中的级别(1)。

上面的例子存储了模型的全部结果。但我们需要系数和标准误差。我们可以通过在collect之后包含这些结果来指定要在表中自动报告的结果列表。下面的示例从逻辑回归模型中收集系数 ( _r_b ) 和标准误差 ( _r_se )。 

现在我们可以使用collect 布局从我们存储在集合MyTables中维度模型的级别(1)中的结果创建一个表。


您可能想知道我是如何为collect 布局选择行和列维度的。我可以解释为什么这个特定的例子有效。但它可能不适用于您的桌子。那么让我们来看看我用来解决它的步骤。

关于收集布局的一些细节

让我们先输入collect dims来查看我们集合中的维度列表。


维度结果吸引了我的眼球,因为它的名字和它有 43 个级别。我们可以通过输入collect levelsof result来查看级别列表。

维度结果包含我们模型的系数估计值、标准误差和很多别的统计结果。让我们使用collect 布局为维度result创建一个表。

那没有用。但输出表明,包括维度colname可能会有所帮助。名为colname的维度有八个级别,我们可以通过键入collect levelsof colname来查看级别列表。

维度colname包括来自我们的逻辑回归模型的变量名称,包括因子变量。它还包含名为c1、c2、c3和c4 的级别。让我们添加行维度colname看看会发生什么。


那行得通——我们有一张桌子!但该表提出了一个问题。维度结果有 43 个级别,维度colname包括像c1这样的级别。为什么不是全部这些级别都显示在表中?

答案是,collect 布局包括单元格,其中的值与行和列维度的每个级别相关联。回想一下,我们要求显示模型中的系数 ( _r_b ) 和标准误差 ( _r_se )。并且这些系数和标准误差针对维度colname 的年龄、1.sex、2.sex和_cons级别收集。

一旦我们理解了这个概念,我们就可以探索我们表格别的布局。例如,我们可以堆叠模型中每个变量下的系数和标准误差。


我们终将为这三个模型中的每一个创建一个类似的结果列。回想一下,我们使用collect、tag()创建了维度模型。让我们通过输入collect levelsof model来查看维度模型的级别。

目前,维度模型有一个名为(1) 的级别,我们可以将模型指定为我们的列维度。


如果您不确定如何开始,这种分步构建表格的方法会很有帮助。先键入collect dims以查看集合中的维度。然后使用collect levelsof查看每个维度的级别。然后尝试使用收集布局来设计您的表格。collect 布局的输出通常会提供有用的说明。

从多个命令收集结果

回想一下,我们还期望在表格中包含每个模型的 AIC 和 BIC,我们可以在拟合模型后通过键入estat ic来估计它们。


AIC 和 BIC 的估计值存储在名为r(S)的矩阵中。

我们可以通过输入matlist r(S)来查看矩阵。

我们可以使用矩阵下标来引用矩阵r(S) 中的 AIC 和 BIC 。引用矩阵中元素的一般语法是matname [ row , column ]。使用此语法,我们可以将 BIC 称为r(S)[1,6]。第 6 列名为BIC,因此我们也可以将 BIC 称为r(S)[1,”BIC”]。

让我们收集AIC 和 BIC 并将它们存储在我们的MyModels集合中维度模型的级别(1)中。

然后我们可以通过将result[AIC BIC]添加到collect layout的行维度来将它们包含在我们的表中。


请注意,我在添加行维度result[AIC BIC]时没有包含“#”运算符。这是因为 AIC 和 BIC 未嵌套在维度colname 的每个级别中。我是想在表格底部为 AIC 和 BIC 添加行。

向表中添加更多模型

让我们向表中添加第二个模型。请注意,下面的命令与我上面使用的命令几乎相同。有两个不同。先使用因子变量表示法将年龄和性别的相互作用添加到逻辑回归模型中。其次,我将结果存储到维度模型的级别(2)。


我们可以使用collect 布局来确保它有效。

那行得通,所以让我们向表中添加第三个模型。让我们将变量糖尿病添加到我们的第二个模型中。我们将结果存储到维度模型的第(3)级。

让我们再次使用collect 布局来确保它有效。


现在我们有了表格的基本布局。我们现在需要做的就是自定义布局并将其导出为 Adobe PDF 文档。

使用 collect 样式来格式化表格

我将使用collect style showbase,collect style row,collect style cell和collect style header来自定义表格的布局。下面代码块中的命令与我在之前的帖子中使用的命令相同,所以我不会在这里解释每个步骤。但我已经添加了评论以刷新我们的记忆。


让我们输入collect preview来检查我们到目前为止的工作。

接下来,我将使用该表独有的一些选项。先将使用收集样式单元格选项halign()将表中的项目和列标题居中。

然后我将使用collect 样式标题选项level()隐藏行维度result的标签。

我将使用收集样式列选项extraspace在列之间添加额外的空间。我认为这使阅读表格更简单。


我们做到了!我们从模型中收集结果并自定义布局。

将表格导出为 Adobe PDF 文档

我在之前的帖子中向您展示了如何将您的表格导出到 Microsoft Word 文档。让我们尝试一些新的东西并将我们的表格导出为 Adobe PDF 文档。大多数putpdf命令与其对应的putdocx命令相同,但明显的例外是它们以putpdf而不是putdocx 开头。但是有一些的区别。

已将putdocx 段落 style()替换为putpdf 段落 font() halign()。The first one实例将字体设置为 26 磅 Calibri Light 字体并将文本水平居中放置在页面上。第二个实例将字体设置为 14 磅 Calibri Light 字体,并从页面左侧开始文本。第三个实例未指定font()或halign()选项,因此使用默认的 11 磅 Helvetica 字体。

第二,我已经取代了采集方式putdocx选项布局(autofitcontents)与采集方式putpdf选项宽度()和 缩进() 。的宽度(60%)的选择表中的宽度设置到页面的整个宽度的60%。的缩进(1)选项凹痕从页面的左侧的表一英寸。

第三,我使用了带有collect 样式 putpdf的note()选项来向表格添加注释,以告诉读者该表格显示优势比,括号中带有标准误差。


生成的 Adobe PDF 文档如下图所示。


结论

在这篇文章中,我们学习了一种使用collect命令套件来创建表的新策略。我们使用collect get从 Stata 命令中收集结果,使用collect layout来指定表格的布局。我们学习了如何命名我们的集合并将命令的结果存储到特定级别的维度。

您可能已经注意到,我们在这些博客文章中使用了相同的收集样式命令集。我们可以继续将它们复制并粘贴到我们未来的 do 文件中,但是有一种更简单的方法来重用收集样式命令。在我的下一篇文章中,我将向您展示如何使用collect style save和collect style use来保存样式并将其与别的表重用。我将向您展示如何使用collect label save和collect label use来保存维度级别的标签。





热门产品

2021-09-15 11:23
首页    技术文档    Stata 17 中的可自定义表格,第六部分:多元回归模型的表格