R3. 基本统计量的呈现

作者: 刘雅玄 (北京大学) E-mail: lyxbamboo@163.com

   

1. 简介

我们在看论文的时候,常常在第一张表呈现基本统计量,便于读者了解我们使用的数据形态,也可以用于判断样本中是否包含严重的离群值。本文介绍几个快捷的命令以呈现基本统计量。

2. Stata 官方命令: sum 和 tabstat

2.1 summarize 命令

首先调入 Stata 官方的妇女工资的数据,执行 summarize 命令(简写为 sum),所有变量的基本统计量都将被列示。

sysuse nlsw88.dta, clear
sum               //粗看
sum wage, detail  //查看分布和离群值

执行 sum 命令后汇报的基本统计量共有 5 列,分别为观测值个数、平均值、标准差、最小值和最大值。通过观察最大值 (Max)、最小值 (Min),可以判断数据是否有离群值;通过观察标准差 (Std. Dev.),可以判断数据的离散情况;通过观察观测值个数 (Obs),可以判断变量是否存在缺失值。

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
      idcode |      2,246    2612.654    1480.864          1       5159
         age |      2,246    39.15316    3.060002         34         46
        race |      2,246    1.282725    .4754413          1          3
     married |      2,246    .6420303    .4795099          0          1
never_marr~d |      2,246    .1041852    .3055687          0          1
-------------+---------------------------------------------------------
       grade |      2,244    13.09893    2.521246          0         18
    collgrad |      2,246    .2368655    .4252538          0          1
       south |      2,246    .4194123    .4935728          0          1
        smsa |      2,246    .7039181    .4566292          0          1
      c_city |      2,246    .2916296    .4546139          0          1
-------------+---------------------------------------------------------
    industry |      2,232    8.189516    3.010875          1         12
  occupation |      2,237    4.642825    3.408897          1         13
       union |      1,878    .2454739    .4304825          0          1
        wage |      2,246    7.766949    5.755523   1.004952   40.74659
       hours |      2,242    37.21811    10.50914          1         80
-------------+---------------------------------------------------------
     ttl_exp |      2,246    12.53498    4.610208   .1153846   28.88461
      tenure |      2,231     5.97785    5.510331          0   25.91667

如果想了解某个变量更为详细的信息,可以附加一个 detail 选项,可以看到,除了列举平均值、标准差等外,页面中还列示了各分位点的信息,以进一步判断离群值的严重程度。

                         hourly wage
-------------------------------------------------------------
      Percentiles      Smallest
 1%     1.930993       1.004952
 5%     2.801002       1.032247
10%     3.220612       1.151368       Obs               2,246
25%     4.259257       1.344605       Sum of Wgt.       2,246

50%      6.27227                      Mean           7.766949
                        Largest       Std. Dev.      5.755523
75%     9.597424       40.19808
90%     12.77777       40.19808       Variance       33.12604
95%     16.52979       40.19808       Skewness       3.096199
99%     38.70926       40.74659       Kurtosis       15.85446

2.2 tabstat 命令

论文中呈现基本统计量通常不再使用 summmarize 命令,因为其格式不太符合多数期刊的要求(通常期刊要求保留三位或两位有效数字),更多时候使用 tabstat 命令。

tabstat wage age hours  married collgrad race, ///
    stat(N mean sd min max p25 p50 p75)      ///
    format(%4.2f) columns(statistics)

columns (statistics) 表示每一列呈现基本统计量,则每一行呈现变量名称。格式通过 format 命令 (可简写为 f )来控制,.2f 表示保留两位有效数字。注意,在将表格插入 Word 文档时需要进行一个小的处理,即需要把观测值个数中的 “.00” 手动删掉。

另外,每一列呈现的基本统计量是通过 Statistics 选项来控制的,可简写为 sStat,可在 help 文档中查看各种统计量的名称并进行列举。

上述命令简写后如下:

local x "wage age hours  married collgrad race"
local x "wage age hours  married collgrad race"
tabstat `x',  ///
    s(N mean sd min max p25 p50 p75)  ///
    f(%4.2f) c(s)

注意,表格插入 Word 有两种方式:

  • 使用 logout 命令输出为 Excel 表格。
  • 选中后,右键复制表格。

2. Stata 外部命令:fsum

在基本设定下,在 Stata 中输入 fsum 可以快速呈现基本统计量,呈现的结果和 sum 很接近,但也存在细微的差别,比如输入 sum 口令时,基本统计量的小数点位数并不完全一致,但是 fsum 基本保留了小数点后两位,符合多数期刊的要求。

      Variable |     N     Mean       SD      Min      Max
---------------+------------------------------------------
        idcode |  2246  2612.65  1480.86     1.00  5159.00
           age |  2246    39.15     3.06    34.00    46.00
          race |  2246     1.28     0.48     1.00     3.00
       married |  2246     0.64     0.48     0.00     1.00
 never_married |  2246     0.10     0.31     0.00     1.00
         grade |  2244    13.10     2.52     0.00    18.00
      collgrad |  2246     0.24     0.43     0.00     1.00
         south |  2246     0.42     0.49     0.00     1.00
          smsa |  2246     0.70     0.46     0.00     1.00
        c_city |  2246     0.29     0.45     0.00     1.00
      industry |  2232     8.19     3.01     1.00    12.00
    occupation |  2237     4.64     3.41     1.00    13.00
         union |  1878     0.25     0.43     0.00     1.00
          wage |  2246     7.77     5.76     1.00    40.75
         hours |  2242    37.22    10.51     1.00    80.00
       ttl_exp |  2246    12.53     4.61     0.12    28.88
        tenure |  2231     5.98     5.51     0.00    25.92

fsum 最大的优势在于呈现类别统计量时非常有效率,以下面的命令为例。

global x "wage age hours  married collgrad race occupation" 

fsum $x,  ///
    s(N mean median sd min max abspct) ///
    pctvar(married collgrad)  ///
    catvar(race occupation)   ///
    format(8.2) 

全局暂元中包含了两个类别变量,分别为 occupation 和 race。pctvar 选项后的 married 和 collgrad 都为虚拟变量,在执行 fsum 后,呈现出的是变量取 0/1 的比例。比如在数据中,有64.2%的妇女已婚,有23.69%的妇女的学历是大学毕业。注意虚拟变量并不需要呈现最小值和最大值,中位数也完全可以通过平均值判断,比如平均值是0.642,则显然中位数是1(即1的个数多于0的个数)。

再往下看,catvar 选项中设定了所有类别变量, race 共有三个类别,则会呈现三个类别分别的统计情况,如白种人占了72.89%。在没有 fsum 命令时,统计类别变量的占比时还需要 tab 命令来处理。

          Variable |       N  AbsPct    Mean      SD  Median     Min     Max  
-------------------+--------------------------------------------------------
              wage |    2246    0.00    7.77    5.76    6.27    1.00   40.75  
               age |    2246    0.00   39.15    3.06   39.00   34.00   46.00  
             hours |    2242    0.18   37.22   10.51   40.00    1.00   80.00  
           married |    2246    0.00   64.20                                    
          collgrad |    2246    0.00   23.69                                    
              race |    2246    0.00    1.28    0.48    1.00    1.00    3.00  
        white (%)  |    1637    0.00   72.89
        black (%)  |     583    0.00   25.96
        other (%)  |      26    0.00    1.16
        occupation |    2237    0.40    4.64    3.41    3.00    1.00   13.00  
 Professional (%)  |     317    0.00   14.17
Managers/admin(%)  |     264    0.00   11.80
        Sales (%)  |     726    0.00   32.45
    unskilled (%)  |     102    0.00    4.56
    Craftsmen (%)  |      53    0.00    2.37
   Operatives (%)  |     246    0.00   11.00
    Transport (%)  |      28    0.00    1.25
     Laborers (%)  |     286    0.00   12.78
      Farmers (%)  |       1    0.00    0.04
Farm laborers (%)  |       9    0.00    0.40
      Service (%)  |      16    0.00    0.72
    Household (%)  |       2    0.00    0.09
        Other (%)  |     187    0.00    8.36

我们也可以加入 uselabel 选项,可显示数据中已经定义好的标签,或用 char 临时定义标签,标签内容将呈现在表格左侧。

除上文介绍的命令外, tabout 命令也可以呈现基本统计量,比较灵活,功能强大,可以配合 latex 使用。

publish 的功能也很庞大,但是语法较为复杂,还是建议使用前文提到的若干命令,更加方便使用。