Stata:一文搞定论文表1——基本统计量列表

发布时间:2020-02-18 阅读 1116

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

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

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

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

作者: 云锋 (华南师范大学)
Email: leonfengyun@163.com


目录


温馨提示: 文中包含了一些比较宽的 Stata 结果代码,横屏浏览 效果更佳。。

1. 引言

描述性统计分析是实证论文中必备的一环,作为回归分析的前奏,我们似乎已经对它十分熟悉,却也因此渐渐地忘记它本身是多么的重要。事实上,描述性统计不仅仅向读者展示数据的统计特征、传递数据层面信息,也是我们对论文所用数据的审视。通过观察描述性统计表,我们可以得到是否存在极端值、数据缺失状况等讯息,便于我们进一步清洗和优化数据,剔除数据浑浊所带来的影响。

那么,Stata 中哪些描述性统计命令便捷好用?又有哪些描述性统计命令可以用于特殊情况呢?

我们下面就为大家整理、分析、对比一些常用的描述性统计命令,让大家依据论文需求做出适合自己的描述性统计表。

常用 Stata 列表命令效果对比

简适性 特殊性 功能性 综合评价
table ★★☆ ★★★★★ ★★★ ★★★☆
tabulate ★★ ★★★ ★★
summtab ★★ ★★☆ ★★★ ★★☆
summarize ★★★★★ ★★☆ ★★★☆
tabstat ★★★ ★★★ ★★★★ ★★★★
fsum ★★★★ ★★★★ ★★★★★ ★★★★☆
baselinetab ★★★ ★★★★ ★★★ ★★★☆

2. 计算基本统计量的命令展示与描述

2.1 table 命令

table - 一维列表

. sysuse auto, clear
. table foreign,                     ///
    contents(mean price sd price min ///
    price max price n price)         ///
    format(%9.2f) center row
  
-------------------------------------------------------------------
 Car type | mean(price)  sd(price)  min(price)  max(price) N(price) 
----------+--------------------------------------------------------
 Domestic |  6072.42     3097.10    3291.00     15906.00      52 
  Foreign |  6384.68     2621.92    3748.00     12990.00      22 
          |
    Total |  6165.26     2949.50    3291.00     15906.00      74 
-------------------------------------------------------------------
  

table - 二维列表

. sysuse auto,clear
. table foreign rep78,      ///
    c(mean price sd price min price max price n price) ///
	format(%9.2f) center row col
  
----------------------------------------------------------------------
          |                     Repair Record 1978                    
 Car type |     1         2         3         4         5       Total 
----------+-----------------------------------------------------------
 Domestic |  4564.50   5967.63   6607.07   5881.56   4204.50   6179.25
          |   522.55   3579.36   3661.27   1592.02    311.83   3188.97
          |  4195.00   3667.00   3291.00   3829.00   3984.00   3291.00
          |  4934.00  14500.00  15906.00   8814.00   4425.00  15906.00
          |        2         8        27         9         2        48
          | 
  Foreign |                      4828.67   6261.44   6292.67   6070.14
          |                      1285.61   1896.09   2765.63   2220.98
          |                      3895.00   3995.00   3748.00   3748.00
          |                      6295.00   9735.00  11995.00  11995.00
          |                            3         9         9        21
          | 
    Total |  4564.50   5967.63   6429.23   6071.50   5913.00   6146.04
          |   522.55   3579.36   3525.14   1709.61   2615.76   2912.44
          |  4195.00   3667.00   3291.00   3829.00   3748.00   3291.00
          |  4934.00  14500.00  15906.00   9735.00  11995.00  15906.00
          |        2         8        30        18        11        69
----------------------------------------------------------------------
  

table - 三维列表

. sysuse "nlsw88.dta",clear
. table race married coll, c(mean wage) format(%9.2f)

------------------------------------------------
          |     college graduate and married    
          | - not college  -    - college grad -
     race |  single  married     single  married
----------+-------------------------------------
    white |    7.93     7.06      11.61     9.70
    black |    5.95     5.79      10.52    12.25
    other |    6.47     7.14      11.71    11.54
------------------------------------------------

table - 四维列表

. sysuse "nlsw88.dta",clear
. table race married coll,  ///
     by(union) c(mean wage) format(%9.2f)  
     
------------------------------------------------
union     |     college graduate and married    
worker    | - not college  -    - college grad -
and race  |  single  married     single  married
----------+-------------------------------------
nonunion  |
    white |    7.10     6.62      10.74     9.85
    black |    5.34     5.32      10.10     8.81
    other |    7.25     6.74      15.15    15.16
----------+-------------------------------------
union     |
    white |    8.23     7.56      11.70     9.89
    black |    7.95     7.90      10.78    10.68
    other |    5.29     8.49                7.92
------------------------------------------------
  

命令特点

  1. table 命令主要用于做列表统计,尤其是类别变量的统计。
  2. table 命令不仅支持一维和二维列表,还支持三维和四维列表,具有特殊情况下不可替代性。
  3. 更详细的 table 命令请参见连享会推文 https://mp.weixin.qq.com/s/Pd-lo6mkRXR6DJWRdo19kg

2.2 tabulate 命令

tabulate - 一维列表

. sysuse census, clear
. tabulate region

     Census |
     region |      Freq.     Percent        Cum.
------------+-----------------------------------
         NE |          9       18.00       18.00
    N Cntrl |         12       24.00       42.00
      South |         16       32.00       74.00
       West |         13       26.00      100.00
------------+-----------------------------------
      Total |         50      100.00

tabulate - 二维列表

. webuse citytemp2
. tabulate region agecat

  Census |           agecat
  Region |  19-29      30-34     35+ |  Total
---------+---------------------------+-------
      NE |     46         83      37 |    166 
 N Cntrl |    162         92      30 |    284 
   South |    139         68      43 |    250 
    West |    160         73      23 |    256 
---------+---------------------------+-------
   Total |    507        316     133 |    956 

命令特点

  1. tabulate 命令主要用于制作展示频数表。
  2. 单频表中还可以利用 sort 进行排序,gen() 为区域创建指标变量,称为reg1, reg2。命令写作: tabulate region,sort/gen()
  3. 展示双频表命令中可在变量后面加上 rowcolumn 等代码增加行和列的百分比,如 tabulate region agecat,row,其他详细功能请参见 help tabulate

2.3 summtab 命令

. ssc install summtab, replace // 下载外部命令
. sysuse auto, clear
. summtab, by(foreign)    ///
    cont_vars(price mpg weight length) ///
    cat_vars(rep78) mean median range  ///
    total medfmt(1) mnfmt(2)           ///
    excel excelname(table1) title(table1) replace
summtab 输出结果
summtab 输出结果

命令特点

  1. summtab 命令主要用于连续变量和类别变量的基本描述性统计分析。
  2. summtab 命令仅支持 Stata 15 以上的版本。
  3. summtab 能分别设置每个统计变量的小数点位数。
  4. 更详细的 summtab 命令请参见连享会推文https://mp.weixin.qq.com/s/Vw2Q6gPit3MvO5HTHgw5kg

2.4 summarize 命令

. sysuse auto,clear
. summarize mpg weight


 Variable |  Obs      Mean    Std. Dev.    Min   Max
----------+-----------------------------------------
      mpg |   74   21.2973    5.785503      12    41
   weight |   74  3019.459    777.1936    1760  4840

命令特点

  1. summarize 计算并显示各种单变量汇总统计信息。如果没有指定 varlist,则计算数据集中所有变量的汇总统计信息。
  2. summarize 十分简便,全部变量一般统计指标利用代码 sum 即可。
  3. 可利用 detail 展示峰度、偏度、P25、P50 等等详细指标。

2.5 tabstat 命令

tabstat - 基本表格

. sysuse auto,clear
. tabstat price weight mpg rep78, ///
    stat(mean sd min max) col(s) format(%6.3f)

variable |      mean        sd       min       max
---------+----------------------------------------
   price |  6165.257  2949.496  3291.000   1.6e+04
  weight |  3019.459   777.194  1760.000  4840.000
     mpg |    21.297     5.786    12.000    41.000
   rep78 |     3.406     0.990     1.000     5.000
--------------------------------------------------
	

tabstat - 复杂表格(行展示统计信息,列展示变量)

. sysuse auto
. tabstat price weight mpg rep78, by(foreign)     ///
    stat(mean sd min max) nototal long  ///
    col(stat) format(%6.1f)
	
foreign      variable |      mean        sd       min       max
----------------------+----------------------------------------
Domestic        price |    6072.4    3097.1    3291.0   15906.0
               weight |    3317.1     695.4    1800.0    4840.0
                  mpg |      19.8       4.7      12.0      34.0
                rep78 |       3.0       0.8       1.0       5.0
----------------------+----------------------------------------
Foreign         price |    6384.7    2621.9    3748.0   12990.0
               weight |    2315.9     433.0    1760.0    3420.0
                  mpg |      24.8       6.6      14.0      41.0
                rep78 |       4.3       0.7       3.0       5.0
---------------------------------------------------------------
	

命令特点

  1. tabstat 在提供的统计数据和表的格式方面具有很大的灵活性。
  2. 添加代码 nototal 可以令表格不展示 total 总计。
  3. 添加代码long 可以令表格展示统计量名称。
  4. 添加代码 col(stat) 可以令行展示统计信息,列展示变量。

2.6 fsum 命令

fsum - 基本表格

. ssc install fsum, replace //下载外部命令
. sysuse "nlsw88.dta",clear
. 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
 

fsum - 分组统计

. sysuse "nlsw88.dta",clear
. 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  


				  

命令特点

  1. fsum 可以对类别变量进行更为细致的统计分析。
  2. fsum 允许用户设置变量的标签,汇报格式自动调整更符合多数期刊内容和格式要求。

2.7 baselinetab 命令

baselinetab - 一维列表

. net install st0524_1.pkg, replace //下载外部命令
. 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%)    |
  +------------------------------------+
  

baselinetab - 二维列表

. sysuse "nlsw88.dta",clear
. baselinetable wage(cts) hours(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)  |
|--------------------+-------------+--------------+--------------|
| 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%)    |
+----------------------------------------------------------------+
  

baselinetab - 汇报缺漏样本

. sysuse "nlsw88.dta",clear
. baselinetable wage(cts) hours(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            |
|--------------------+-------------+--------------+--------------|
| 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%)    |
+----------------------------------------------------------------+
  

命令特点

  1. baselinetab 可以添加选项汇报缺漏样本数。
  2. baselinetab 可以对每个变量汇报不同的统计量。
  3. 表格内容可以存储为数据、文本、网页等文件格式。
  4. 更详细的 baselinetab 命令请参见连享会推文 https://mp.weixin.qq.com/s/8Cr-avpihOtOyT1CSBc4iA

3. 命令特点及总结

不难发现,上文介绍的各种命令各有千秋,我们在实际应用时需要根据每个命令的特点选择最符合自己要求的一个,因此我们从简适性特殊性功能性三个方面对这些命令进行对比评分,方便大家直观的进行选择。

简适性 特殊性 功能性 综合评价
table ★★☆ ★★★★★ ★★★ ★★★☆
tabulate ★★ ★★★ ★★
summtab ★★ ★★☆ ★★★ ★★☆
summarize ★★★★★ ★★☆ ★★★☆
tabstat ★★★ ★★★ ★★★★ ★★★★
fsum ★★★★ ★★★★ ★★★★★ ★★★★☆
baselinetab ★★★ ★★★★ ★★★ ★★★☆
  • 简适性 summarize 命令以其简便的代码和直观简约的表格脱颖而出,但只能用于一维列表相关统计量计算。事实上,大部分实证论文所需描述性统计利用此命令即可完成,方便、快捷且直观。
  • 特殊性 table 命令主要用于列表统计,尤其是类变量的统计,此命令在三维以上维度的统计中无可替代。 tabulate 可以用来展示频数一维和二维列表。 baselinetable 生成的表格内容可以转换为数据、文本、网页等格式。 fsum 命令支持用户设置的变量标签输出。
  • 功能性 fsum 不仅适用范围较广、功能较为强大、善于处理类变量的列表统计,而且命令相对简洁,比较而言功能性较为突出。

4. 附录:本文示例 do 文档

- 点我查看 -

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」

相关课程

连享会-直播课 上线了!
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