温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者: 云锋 (华南师范大学)
Email: leonfengyun@163.com
目录
温馨提示: 文中包含了一些比较宽的 Stata 结果代码,横屏浏览 效果更佳。。
描述性统计分析是实证论文中必备的一环,作为回归分析的前奏,我们似乎已经对它十分熟悉,却也因此渐渐地忘记它本身是多么的重要。事实上,描述性统计不仅仅向读者展示数据的统计特征、传递数据层面信息,也是我们对论文所用数据的审视。通过观察描述性统计表,我们可以得到是否存在极端值、数据缺失状况等讯息,便于我们进一步清洗和优化数据,剔除数据浑浊所带来的影响。
那么,Stata 中哪些描述性统计命令便捷好用?又有哪些描述性统计命令可以用于特殊情况呢?
我们下面就为大家整理、分析、对比一些常用的描述性统计命令,让大家依据论文需求做出适合自己的描述性统计表。
常用 Stata 列表命令效果对比
简适性 | 特殊性 | 功能性 | 综合评价 | |
---|---|---|---|---|
table | ★★☆ | ★★★★★ | ★★★ | ★★★☆ |
tabulate | ★★ | ★★★ | ★ | ★★ |
summtab | ★★ | ★★☆ | ★★★ | ★★☆ |
summarize | ★★★★★ | ★ | ★★☆ | ★★★☆ |
tabstat | ★★★ | ★★★ | ★★★★ | ★★★★ |
fsum | ★★★★ | ★★★★ | ★★★★★ | ★★★★☆ |
baselinetab | ★★★ | ★★★★ | ★★★ | ★★★☆ |
. 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
-------------------------------------------------------------------
. 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
----------------------------------------------------------------------
. 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
------------------------------------------------
. 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
------------------------------------------------
命令特点
table
命令主要用于做列表统计,尤其是类别变量的统计。table
命令不仅支持一维和二维列表,还支持三维和四维列表,具有特殊情况下不可替代性。更详细的 table
命令请参见连享会推文 https://mp.weixin.qq.com/s/Pd-lo6mkRXR6DJWRdo19kg
. 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
. 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
命令特点
tabulate
命令主要用于制作展示频数表。单频表中还可以利用 sort
进行排序,gen()
为区域创建指标变量,称为reg1, reg2。命令写作:tabulate region,sort/gen()
展示双频表命令中可在变量后面加上 row
,column
等代码增加行和列的百分比,如tabulate region agecat,row
,其他详细功能请参见help tabulate
。
. 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
命令仅支持 Stata 15 以上的版本。summtab
能分别设置每个统计变量的小数点位数。更详细的 summtab
命令请参见连享会推文https://mp.weixin.qq.com/s/Vw2Q6gPit3MvO5HTHgw5kg
. 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
命令特点
summarize
计算并显示各种单变量汇总统计信息。如果没有指定 varlist,则计算数据集中所有变量的汇总统计信息。summarize
十分简便,全部变量一般统计指标利用代码sum
即可。可利用 detail
展示峰度、偏度、P25、P50 等等详细指标。
. 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
--------------------------------------------------
. 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
---------------------------------------------------------------
命令特点
tabstat
在提供的统计数据和表的格式方面具有很大的灵活性。添加代码 nototal
可以令表格不展示total
总计。添加代码 long
可以令表格展示统计量名称。添加代码 col(stat)
可以令行展示统计信息,列展示变量。
. 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
. 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
命令特点
fsum
可以对类别变量进行更为细致的统计分析。fsum
允许用户设置变量的标签,汇报格式自动调整更符合多数期刊内容和格式要求。
. 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%) |
+------------------------------------+
. 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%) |
+----------------------------------------------------------------+
. 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%) |
+----------------------------------------------------------------+
命令特点
baselinetab
可以添加选项汇报缺漏样本数。baselinetab
可以对每个变量汇报不同的统计量。表格内容可以存储为数据、文本、网页等文件格式。 更详细的 baselinetab
命令请参见连享会推文 https://mp.weixin.qq.com/s/8Cr-avpihOtOyT1CSBc4iA
不难发现,上文介绍的各种命令各有千秋,我们在实际应用时需要根据每个命令的特点选择最符合自己要求的一个,因此我们从简适性、特殊性和功能性三个方面对这些命令进行对比评分,方便大家直观的进行选择。
简适性 | 特殊性 | 功能性 | 综合评价 | |
---|---|---|---|---|
table | ★★☆ | ★★★★★ | ★★★ | ★★★☆ |
tabulate | ★★ | ★★★ | ★ | ★★ |
summtab | ★★ | ★★☆ | ★★★ | ★★☆ |
summarize | ★★★★★ | ★ | ★★☆ | ★★★☆ |
tabstat | ★★★ | ★★★ | ★★★★ | ★★★★ |
fsum | ★★★★ | ★★★★ | ★★★★★ | ★★★★☆ |
baselinetab | ★★★ | ★★★★ | ★★★ | ★★★☆ |
summarize
命令以其简便的代码和直观简约的表格脱颖而出,但只能用于一维列表相关统计量计算。事实上,大部分实证论文所需描述性统计利用此命令即可完成,方便、快捷且直观。table
命令主要用于列表统计,尤其是类变量的统计,此命令在三维以上维度的统计中无可替代。
tabulate
可以用来展示频数一维和二维列表。
baselinetable
生成的表格内容可以转换为数据、文本、网页等格式。
fsum
命令支持用户设置的变量标签输出。fsum
不仅适用范围较广、功能较为强大、善于处理类变量的列表统计,而且命令相对简洁,比较而言功能性较为突出。
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD