Stata:描述性统计分析新命令-dstat
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
理论 + 实证:从「读懂模型」到「折腾模型」
🎦 理论模型构建专题
📅 2022 年 4 月 23-24 日 (周六-周日)
🔑 郭凯明副教授 (中山大学)
🍓 课程主页:https://gitee.com/lianxh/emodel
刘欣妍 (香港中文大学),liuxinyan@link.cuhk.edu.hk
史 柯 (中央财经大学),shike2231128@gmail.com
编者按:本文主要整理自下文,特此致谢!
Source:Jann B. dstat: A new command for the analysis of distributions[J]. 2021. -PDF- -Github-
目录
1. 描述性统计
2. 命令安装
3. 具体示例
3.1 计算多个变量的描述性统计值
3.2 变量的分布图
3.3 控制其他变量
3.4 IF 函数和分解分析
3.5 常见图形
4. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
1. 描述性统计
Stata 为高级统计和计量经济学分析提供了强大的功能。但是仍存在一定缺陷,主要包括以下几点:
不同类型的统计数据需要通过各种不同的命令才能得到; 每个命令都有特定的运行逻辑 (特定的语法、特定的输出、特定的返回值); 不同命令对统计推断的支持差异很大 (有些命令甚至不允许设置权重,有些命令则完全支持复杂的统计分析); 表格和图表的创建不够便捷,尤其是涉及置信区间的输出; Stata 官方并没有涵盖某些问题,例如不同权重的描述性统计在某些命令中并不能实现。
2. 命令安装
当我们对置信区间很感兴趣时,Stata 目前的命令并不能直接输出变量的置信区间。基于 Stata 现有的描述性统计分析命令的不足,本文将着重于介绍一个新命令 dstat
。
. ssc install dstat, replace
. ssc install moremata, replace
. ssc install coefplot, replace
3. 具体示例
3.1 计算多个变量的描述性统计值
. sysuse nlsw88, clear
. * 一个变量:不同union下的工资的均值
. dstat (mean) wage, over(union)
mean Number of obs = 1,878
--------------------------------------------------------------
wage | Coefficient Std. err. [95% conf. interval]
-------------+------------------------------------------------
union |
Nonunion | 7.205 0.109 6.991 7.418
Union | 8.674 0.194 8.293 9.055
--------------------------------------------------------------
. * 多个变量:同时展示工资(wage)的均值,工资时长(median)的中位数,以及种族(race)的均值
. dstat (mean) wage (median) hours (mean) race
Summary statistics Number of obs = 2,242
--------------------------------------------------------------
| Coefficient Std. err. [95% conf. interval]
-------------+------------------------------------------------
wage |
mean | 7.775 0.122 7.536 8.013
-------------+------------------------------------------------
hours |
median | 40.000 0.006 39.988 40.012
-------------+------------------------------------------------
race |
mean | 1.282 0.010 1.263 1.302
--------------------------------------------------------------
3.2 变量的分布图
. dstat density wage, over(union) ll(0) graph // 选项ll(0)的作用是工资只能是正数
在上面的例子中,工会工人和非工会工人的工资密度分别显示在两个子图中。如果需要将两条曲线叠加在一个坐标系中,则可以使用以下命令:
. dstat graph, merge
如果想进一步了解整个工资分布是如何由两组构成的,我们可以使用选项 unonditional
重新调整密度,并使用选项 total
包括总密度。
. * 如果想要将下图的线条变成覆盖面积,则可以简单的修改为graph(recast(area))即可
. dstat density wage, over(union) total unconditional ll(0) graph(merge)
除此之外,我们还可以通过 dstat
命令画出每个教育程度中,工会与非工会的分布情况。
. dstat prop grade, over(union) graph(merge)
3.3 控制其他变量
我们可以通过简单的 t-test 来判断出两个变量均值的区别。但是,如果我们想通过控制一些其他变量之后,再看核心变量均值区别,现有的 Stata 命令则无法满足。这时 dstat
命令可以帮助我们解决这一问题。
. *在不控制任何变量的情况下,工会与非工会的工资均值区别如下:
. sysuse nlsw88, clear
. dstat (mean) wage, over(union)
mean Number of obs = 1,878
--------------------------------------------------------------
wage | Coefficient Std. err. [95% conf. interval]
-------------+------------------------------------------------
union |
Nonunion | 7.205 0.109 6.991 7.418
Union | 8.674 0.194 8.293 9.055
--------------------------------------------------------------
. lincom _b[1.union]-_b[0.union]
(1) - 0bn.union + 1.union = 0
------------------------------------------------------------------------------
wage | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
(1) | 1.470 0.223 6.60 0.000 1.033 1.907
------------------------------------------------------------------------------
. *若我们控制了教育,工作时间,工作经验和任期后,工会与非工会的工资均值区别如下:
. dstat (mean) wage, over(union) balance(grade hours ttl_exp tenure)
--------------------------------------------------------------
wage | Coefficient Std. err. [95% conf. interval]
-------------+------------------------------------------------
union |
Nonunion | 7.372 0.108 7.160 7.584
Union | 8.330 0.203 7.933 8.727
--------------------------------------------------------------
. lincom _b[1.union]-_b[0.union]
(1) - 0bn.union + 1.union = 0
------------------------------------------------------------------------------
wage | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
(1) | 0.958 0.220 4.36 0.000 0.527 1.389
------------------------------------------------------------------------------
. /*
> 另外注意,除了采用上面lincom的方法计算两个分组的均值差异之外,
> 我们还可以在dstat命令本身加constrast,自动计算均值差异。
> 其中,eb:代表熵值平衡, 是一种更加倾向于使用的平衡方法,具体可参考Jann 2021.
> */
. dstat (mean) wage, over(union, contrast(0)) balance(eb:grade hours ttl_exp tenure)
------------------------------------------------------------------------------
wage | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
union |
Union | 0.989 0.218 4.53 0.000 0.561 1.417
------------------------------------------------------------------------------
3.4 IF 函数和分解分析
dstat
命令还可以用作分解分析 (decomposition analysis)。在下面的例子中,加入工会的工人和未加入工会的工人之间的工资差距,被分解为由协变量差异解释部分和残差 (无法解释) 部分。
. * rif命令是用来计算Recentered Influence Functions(RIF)回归,有关RIF回归具体可参考(Firpo et al.2009)
. dstat (mean) wage, over(union) balance(eb: grade hours ttl_exp tenure, reference(1)) rif(RIF0c)
. dstat (mean) wage if e(sample), over(union) rif(RIF0 RIF1)
. generate difference = RIF1 - RIF0 // 工资的差异
. generate explained = RIF0c - RIF0 // 解释的部分
. generate unexplained = RIF1 - RIF0c // 未解释的部分
. mean difference explained unexplained
--------------------------------------------------------------
| Mean Std. err. [95% conf. interval]
-------------+------------------------------------------------
difference | 1.457 0.223 1.019 1.895
explained | 0.607 0.136 0.341 0.872
unexplained | 0.850 0.208 0.442 1.259
--------------------------------------------------------------
3.5 常见图形
带有置信区间的直方图:
. dstat histogram wage, ep n(20) graph // 其中ep代表equal probability
重叠的两个直方图:
. dstat histogram wage, over(union) common nose graph(merge)
分组分布情况的差异:
. * 工会与非工会的工资分布情况的差异
. dstat density wage, over(union, contrast) n(200) graph(yline(0))
分位数上的差异:
. dstat quantile wage, over(union, contrast) notable balance(eb:grade hours ttl_exp tenure)
. estimates store balanced
. dstat quantile wage if e(sample), over(union, contrast)
. estimates store raw
. coefplot raw balanced, se(se) at(at) keep(1:) recast(line) ciopts(recast(rarea) ///
> pstyle(ci) color(%50) lcolor(%0)) plotlabels("raw wage gap" "adjusted wage gap")
连享会 · 五一论文班
4. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 统计, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata入门 25常见种误区:P值、置信区间和统计功效 专题:Stata资源 在线统计课本分享:online-statistics-book 专题:数据处理 Stata数据处理:清洗中国城市建设统计年鉴 Stata:变量非重复值统计-distinct Stata:mtab2-将二维统计表存储为矩阵 滚动吧统计量!Stata数据处理 Stata数据处理:统计组内非重复值个数 专题:Stata绘图 常用科研统计绘图工具介绍 专题:结果输出 Stata结果输出:addest自己定制输出的统计量 Stata结果输出-addest:自己添加统计量 baselinetable命令:论文基本统计量表格输出到Excel和Word sumup:快速呈现分组统计量 Stata:一文搞定论文表1——基本统计量列表 专题:机器学习 Lasso:拉索中如何做统计推断
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【**百度一下:**连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。