baselinetable命令:论文基本统计量表格输出到Excel和Word

发布时间:2020-09-20 阅读 97

Stata 连享会   主页 || 视频 || 推文

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

课程详情 https://gitee.com/arlionn/Course   |   lianxh.cn

课程主页 https://gitee.com/arlionn/Course

作者:何庆红(北京大学中国卫生经济研究中心)


目录


正所谓 「Garbage in, garbage out」。在实证分析中,对数据的基本描述是必要一环。今天我们介绍一个简洁便利的外部命令 baselinetable,用于连续变量和类别变量的基本描述性统计分析,呈现形式为 一维表 或者 二维表

baselinetable 命令有如下特征:

  • 添加选项可以汇报缺漏的样本数
  • 对于每个变量可汇报不同的统计量
  • 表格内容可以存储为数据、文本、网页等文件格式

1. 下载安装

在 Stata 命令窗口中输入如下命令即可自动安装 baselinetable 命令:

ssc install baselinetable, replace

2. 语法格式

baselinetable 的基本语法格式如下:

baselinetable [insertrow["string"]] varname [(rowvariable_options)] [[insertrow] varname...] [if] [in] [, main_options]

统计量的设定

  • by(varname[, by_options]) 定义的是统计描述的分组变量
  • catvartab(specs)定义类别变量的统计量,默认设置是catvartab("# (%\%)"),其中#表示某一类别的频数,%表示该类别占总体的比例
  • ctsvartab(specs)表示连续变量的统计量,默认设置是ctsvartab("mean (sd)"),其中mean表示该连续变量的均值,sd表示标准误,还可以根据研究需要作其他设定,如Varmaxminp1 p5 p10 p25 p50 p75 p90 p95 p99
  • missing汇报变量存在遗漏值的样本个数,其中reportmissing汇报每个行变量存在遗漏观测值的个数
  • pcformat(%fmt)定义百分数的显示形式,默认设置是pcformat(%5.1f),即保留小数点后一位,其他如均值meanformat(%fmt)、标准误sdformat(%fmt)、中位数medianformat(%fmt)等。

变量名的设定

  • varname 显示变量名称,
  • varvalue 显示类别变量的分类标签,若只显示某一个变量名称和分类标签,只需在指定变量后加上这两个选项即可,如 race(varname varvalue)
  • afterhead 在变量名后面添加选项,如 afterhead( meanformat(sd)) 表示在变量名后面添加 meanformat(sd);也可以更改变量名称,如 VAR(novarlabel afterhead("某某")) 将变量名VAR改为某某
  • subgroup 表示某变量子样本的结果,如 subgroup(race==1) 表示变量民族取值为 1 的结果  

连享会计量方法专题……

3. 应用举例

这里我们使用 Stata 官方范例数据 "nlsw88.dta" 来说明该命令的具体使用方法。

sysuse "nlsw88.dta", clear 

首先,看简单的一维表形式:

. baselinetable wage(cts) hours(cts) age(cts) union race  //一维表
  +------------------------------------+
  |                     | N=2246       |
  |---------------------+--------------|
  | hourly wage         | 7.8 (5.8)    |
  |---------------------+--------------|
  | usual hours worked  | 37.2 (10.5)  |
  |---------------------+--------------|
  | age in current year | 39.2 (3.1)   |
  |---------------------+--------------|
  | union worker        |              |
  |---------------------+--------------|
  |      nonunion       | 1417 (75.5%) |
  |---------------------+--------------|
  |      union          | 461 (24.5%)  |
  |---------------------+--------------|
  | race                |              |
  |---------------------+--------------|
  |      white          | 1637 (72.9%) |
  |---------------------+--------------|
  |      black          | 583 (26.0%)  |
  |---------------------+--------------|
  |      other          | 26 (1.2%)    |
  +------------------------------------+

其次,加入分组变量,汇报二维列联表形式:

. baselinetable wage(cts) hours(cts) age(cts) union race, by( married , totalcolumn) 
  +-----------------------------------------------------------------+
  |                     | married     |              |              |
  |---------------------+-------------+--------------+--------------|
  |                     | single      | married      | Total        |
  |---------------------+-------------+--------------+--------------|
  |                     | N=804       | N=1442       | N=2246       |
  |---------------------+-------------+--------------+--------------|
  | hourly wage         | 8.1 (6.3)   | 7.6 (5.4)    | 7.8 (5.8)    |
  |---------------------+-------------+--------------+--------------|
  | usual hours worked  | 39.2 (9.1)  | 36.1 (11.1)  | 37.2 (10.5)  |
  |---------------------+-------------+--------------+--------------|
  | age in current year | 39.2 (3.0)  | 39.1 (3.1)   | 39.2 (3.1)   |
  |---------------------+-------------+--------------+--------------|
  | union worker        |             |              |              |
  |---------------------+-------------+--------------+--------------|
  |      nonunion       | 475 (72.4%) | 942 (77.1%)  | 1417 (75.5%) |
  |---------------------+-------------+--------------+--------------|
  |      union          | 181 (27.6%) | 280 (22.9%)  | 461 (24.5%)  |
  |---------------------+-------------+--------------+--------------|
  | race                |             |              |              |
  |---------------------+-------------+--------------+--------------|
  |      white          | 487 (60.6%) | 1150 (79.8%) | 1637 (72.9%) |
  |---------------------+-------------+--------------+--------------|
  |      black          | 309 (38.4%) | 274 (19.0%)  | 583 (26.0%)  |
  |---------------------+-------------+--------------+--------------|
  |      other          | 8 (1.0%)    | 18 (1.2%)    | 26 (1.2%)    |
  +-----------------------------------------------------------------+

第三,添加选项,汇报缺漏的样本数:

. baselinetable wage(cts) hours(cts) age(cts) union race,  ///
        by( married , totalcolumn) reportmissing

  +-----------------------------------------------------------------+
  |                     | married     |              |              |
  |---------------------+-------------+--------------+--------------|
  |                     | single      | married      | Total        |
  |---------------------+-------------+--------------+--------------|
  |                     | N=804       | N=1442       | N=2246       |
  |---------------------+-------------+--------------+--------------|
  | hourly wage         | 8.1 (6.3)   | 7.6 (5.4)    | 7.8 (5.8)    |
  |---------------------+-------------+--------------+--------------|
  | usual hours worked  | 39.2 (9.1)  | 36.1 (11.1)  | 37.2 (10.5)  |
  |---------------------+-------------+--------------+--------------|
  |      MISSING        | 3           | 1            | 4            |
  |---------------------+-------------+--------------+--------------|
  | age in current year | 39.2 (3.0)  | 39.1 (3.1)   | 39.2 (3.1)   |
  |---------------------+-------------+--------------+--------------|
  | union worker        |             |              |              |
  |---------------------+-------------+--------------+--------------|
  |      nonunion       | 475 (72.4%) | 942 (77.1%)  | 1417 (75.5%) |
  |---------------------+-------------+--------------+--------------|
  |      union          | 181 (27.6%) | 280 (22.9%)  | 461 (24.5%)  |
  |---------------------+-------------+--------------+--------------|
  |      MISSING        | 148         | 220          | 368          |
  |---------------------+-------------+--------------+--------------|
  | race                |             |              |              |
  |---------------------+-------------+--------------+--------------|
  |      white          | 487 (60.6%) | 1150 (79.8%) | 1637 (72.9%) |
  |---------------------+-------------+--------------+--------------|
  |      black          | 309 (38.4%) | 274 (19.0%)  | 583 (26.0%)  |
  |---------------------+-------------+--------------+--------------|
  |      other          | 8 (1.0%)    | 18 (1.2%)    | 26 (1.2%)    |
  +-----------------------------------------------------------------

4. baselinetable 与其他命令的比较

baselinetable 功能相似的命令还有 summarizetabulatetabletabstatfsum 等。summarize 命令 (通常简写为 susum) 主要用于一维列表的相关统计量的计算。table 命令主要是用来做列表统计,尤其对于类别变量的统计,包括一维表、二维表、三维等以上维度,具体可参看 「Stata:今天你 “table” 了吗?(微信版)」CSDN版本

下面通过具体例子对它们之间的差异进行对比。

4.1 fsum 命令

fsum 命令的语法非常简洁,输出结果也颇为丰富,包括:N、mean、sd、min、max、median 等几十个统计量 (sum varlist, detail 存储于内存中的返回值都可以通过 fsum 输出)。相对于 Stata 官方命令 summarizetabstat,该命令可以对类别变量进行更为细致的统计分析。更为便利的是,该命令允许用户设置的变量标签,汇报格式自动调整更符合多数期刊的内容和格式要求。

下面举例说明该命令的主要用法。

*-基本表格

. fsum wage hours age union race, cat(union) mcat(race) 
 		
      Variable |        N     Mean       SD      Min      Max                                                                                                                              
---------------+---------------------------------------------
          wage |     2246     7.77     5.76     1.00    40.75  
         hours |     2242    37.22    10.51     1.00    80.00  
           age |     2246    39.15     3.06    34.00    46.00  
         union |     1878     0.25     0.43     0.00     1.00  
 nonunion (%)  |     1417    75.45
    union (%)  |      461    24.55
          race |     2246     1.28     0.48     1.00     3.00  
    white (%)  |     1637    72.89
    black (%)  |      583    25.96
    other (%)  |       26     1.16

*-借助 `bysort' 前缀可以实现分组统计

. bysort married: fsum wage hours age union race

-------------------------------------------------------------
-> married = single

      Variable |        N     Mean       SD      Min      Max 
---------------+---------------------------------------------
          wage |      804     8.08     6.34     1.15    40.20  
         hours |      801    39.24     9.10     2.00    80.00  
           age |      804    39.22     3.05    34.00    46.00  
         union |      656     0.28     0.45     0.00     1.00  
          race |      804     1.40     0.51     1.00     3.00  

-------------------------------------------------------------
-> married = married

      Variable |        N     Mean       SD      Min      Max  
---------------+---------------------------------------------
          wage |     1442     7.59     5.40     1.00    40.75  
         hours |     1441    36.10    11.06     1.00    80.00  
           age |     1442    39.12     3.07    34.00    45.00  
         union |     1222     0.23     0.42     0.00     1.00  
          race |     1442     1.21     0.44     1.00     3.00 

4.2 tabstat 命令

这是目前最为常用的用于报告基本统计量的 Stata 官方命令。它可以汇报一系列的统计量,汇报内容和格式也较为灵活。

\\\一维表形式如下:

. tabstat wage hours  age  union race, stat(N mean sd min max) col(stat)

    variable |         N      mean        sd       min       max
-------------+--------------------------------------------------
        wage |      2246  7.766949  5.755523  1.004952  40.74659
       hours |      2242  37.21811  10.50914         1        80
         age |      2246  39.15316  3.060002        34        46
       union |      1878  .2454739  .4304825         0         1
        race |      2246  1.282725  .4754413         1         3
----------------------------------------------------------------

\\\加入分组变量,汇报二维表形式:

. tabstat wage hours  age  union race, by(married) stat(N mean sd min max) nototal long col(stat)

married     variable |         N      mean        sd       min       max
---------------------+--------------------------------------------------
single          wage |       804  8.080765  6.336071  1.151368  40.19808
               hours |       801  39.23845  9.099001         2        80
                 age |       804  39.21891  3.049911        34        46
               union |       656  .2759146  .4473151         0         1
                race |       804  1.404229  .5109335         1         3
---------------------+--------------------------------------------------
married         wage |      1442  7.591978  5.399229  1.004952  40.74659
               hours |      1441  36.09507  11.06107         1        80
                 age |      1442   39.1165  3.066058        34        45
               union |      1222  .2291326  .4204468         0         1
                race |      1442  1.214979  .4402987         1         3
------------------------------------------------------------------------

5. baselinetable 结果输出

baselinetable 命令提供了两个选项,可以把屏幕上输出的结果快捷地输出为 Excel 或 Word 文档:

  • exportexcel 表示将结果输出到excel表格里面
  • putdocxtable 表示将结果输出到word里面
*-第一种方法:将结果输出到Excel表格里面
 baselinetable race age(cts) ht lwt(cts), by(smoke, totalcolumn) exportexcel(table1)
*-第二种方法:将结果输出到word里面
putdocx begin
baselinetable race age(cts) ht lwt(cts), by(smoke, totalcolumn) putdocxtab(table1)
putdocx save mydoc, replace

6. 结果输出和呈现相关推文

7. 参考资料

  • Nicholas J. Cox, 2003, Speaking Stata: Problems with Tables, Part I, Stata Journal, 3(3): 309–324. -PDF-
  • Nicholas J. Cox, 2003, Speaking Stata: Problems with Tables, Part II, Stata Journal, 3(4): 420–439. -PDF-
  • Ben Jann, 2005, Making Regression Tables from Stored Estimates, Stata Journal, 5(3): 288–308. -PDF-
  • Ben Jann, 2007, Making Regression Tables Simplified, Stata Journal, 7(2): 227–244. -PDF-
  • Michael Lokshin, Zurab Sajaia, 2008, Creating Print-ready Tables in Stata, Stata Journal, 8(3): 374–389. -PDF-
  • John Luke Gallup, 2012, A New System for Formatting Estimation Tables, Stata Journal, 12(1): 3–28. -PDF-
  • Lauren J. Scott, Chris A. Rogers, 2015, Creating Summary Tables Using the Sumtable Command, Stata Journal, 15(3): 775–783. -PDF-
  • Susan Donath, 2018, Baselinetable: A Command for Creating one- and Two-way Tables of Summary Statistics, Stata Journal, 18(2): 327–344. -PDF-
  • Susan Donath, 2018, Baselinetable: A Command for Creating one- and Two-way Tables of Summary Statistics, Stata Journal, 18(2): 327–344. -PDF-

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD