温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh
作者: 陈治中 (CEMFI)
邮箱: peterchen418@gmail.com
目录
在遇到需要比较不同分布的情况时,经济学论文除了均值差异以外,正越来越多地侧重于分布整体上,及其在不同分位数上的差异。例如,在比较实验组和对照组情况时,不同分位数上的处理效应 (quantile treatment effect) 往往能捕捉到平均处理效应 (average treatment effect) 忽略的异质性。
在比较两个分布的整体异同时,我们常用 KS 检验 (Kolmogorov-Smirnov test) 评价其整体分布是否存在差异。在累积分布函数 (cumulative distribution function, CDF) 相等的原假设下,这一非参数检验以其经验分布函数 (empirical distribution function) 垂直距离的上界为统计量,通过其渐进分布为柯尔莫哥洛夫 (Kolmogorov) 分布的性质进行假设检验。
然而,KS 检验依然存在两点重要不足:
为了说明第二点不足,我们举一个简单的例子。假设一个样本取自 (0,1) 均匀分布,由观测值 0.02, 0.04, ..., 0.98 组成。接着,我们将从同一分布中取观测值 1/21, 2/21, ..., 20/21 的另一组样本,并将尾端 15/21 至 20/21 的 6 个观测值替换为原值加 1,000,000。然而,KS 检验在 10%的显著性水平上却无法拒绝原假设。这一例子可用 Stata 指令 ksmirnov
可以实现,代码如下:
. set obs 69
// 新建一个变量y,前49次观测为第一组样本0.02, 0.04, ..., 0.98,
// 后20次观测为第二组样本1/21, 2/21, ..., 20/21
. gen y = (_n<=49)*(_n/50) + (_n>49)*(_n-49)/21
. replace y = 1000000+_n if _n>63
. gen grp = (_n>49)
// 对这两组样本分布进行 KS 检验
. ksmirnov y , by(grp) exact
Two-sample Kolmogorov-Smirnov test
for equality of distribution functions
Smaller group D P-value Exact
----------------------------------------------
0: 0.3000 0.078
1: -0.0378 0.960
Combined K-S: 0.3000 0.155 0.121
第三行的结果显示,p 值大于显著性水平 10%,因此我们无法拒绝这两个分布相同的原假设,而这一结论显然与直觉相悖。
为此,Goldman and Kaplan (2018) 在 KS 检验的基础上进行改进。Stata 指令 distcomp
正是基于这种方法,在满足两个样本均独立同分布 (iid) 且相互独立、总体分布连续 (或仅有部分不连续) 的假设下可以使用。它较 KS 检验有如下特点:
在本推文中,笔者主要介绍 distcomp
指令的应用范例。关于该检验方法的统计性质等技术细节,请参阅相关文献。
distcomp
是外部命令,可以使用如下命令安装最新版本:
search distcomp
ssc install distcomp, replace
若想获取附带数据文件和说明文件,可以在命令窗口中输入:
net describe st0579, from(http://www.stata-journal.com/software/sj19-4)
基本语法格式如下:
distcomp varname [if] [in], by(groupvar) [alpha(#) pvalue noplot]
varname
表示变量名称,由被比较的两个样本竖向合并后组成groupvar
表示分组变量名称,是二元变量,用于区分varname
中的两组样本alpha(#)
表示多重检验的第一类错误率/显著性水平 (FWER)pvalue
表示要求返回全局的 p 值,即检验两个分布整体相等的 p 值pvalue
表示要求不返回画图
在本文开始,我们通过一个简单例子说明了 KS 检验在分布尾端缺乏灵敏度。我们接着用 distcomp
指令说明 Goldman 和 Kaplan (2018) 的方法在改进这一不足上有怎样的效果。
* 延续上文的代码,得到y和grp两变量
*- DGP
. clear
. set obs 69
. gen y = (_n<=49)*(_n/50) + (_n>49)*(_n-49)/21
. replace y = 1000000+_n if _n>63
. gen grp = (_n>49)
*-Test
. distcomp y , by(grp) alpha(0.01) noplot p
Comparing distribution of y when grp=0 vs. grp=1
Global test of equality of two CDFs:
Simulated p-value = .0055889
At a 10% level: reject
At a 5% level: reject
At a 1% level: reject
With strong control of FWER at a 1% level,
CDF equality is rejected at all points in the following
ranges of y:
from to
.98 1000064
第一段的结果显示,这一方法计算的 p 值更小,以至于在 1%的显著性水平上,我们也可以得出拒绝两分布相等的结论,更符合直觉。
在本部分,本文借助于 Stata 提供的 nlsw88 数据,对工会工人与非工会工人工资分布的差异进行比较,设 FWER 为 10%
. sysuse nlsw88 , clear
. set scheme sj
. distcomp wage , by(union) alpha(0.10) p
Comparing distribution of wage when union=0 vs. union=1
Global test of equality of two CDFs:
Simulated p-value < .0001
At a 10% level: reject
At a 5% level: reject
At a 1% level: reject
With strong control of FWER at a 10% level,
CDF equality is rejected at all points in the following
ranges of wage:
from to
2.383252 2.520128
2.568437 11.51368
11.52979 11.5781
我们发现,p 值远小于 1%,于是拒绝工会组与非工会组工资分布相等的原假设。除此之外,该命令还返回了两分布相异的区间。
绘制图形如下所示:
图中的实线表示工会组工资的累积分布,而虚线表示非工会组工资的累积分布。可以看出非工会组的工资低于工会组工资,但仅仅比较这两条线,我们无法得出其分布是否相同的结论。在 distcomp
的帮助下,底部的水平线段显示原假设被拒绝的取值范围,可以看出其包含了除右尾以外的大部分区间。
distcomp
可以用于 by
前缀之后,我们可以利用 by
前缀,比较复合分组的分布差异,例如输入: bysort race : distcomp wage, by(union) p
那么 Stata 会首先按照种族分组,再在各种族组内进行同样的分析,有兴趣的读者可以自行尝试。
Uri Gneezy 和 John A. List (2006) 通过田野实验的方法,研究意外的工资收入 (“礼物”) 是否对劳动者工作的努力程度造成积极影响 (下文简称“礼物交换”假说) 。处理效应的分布结果表明,工作的前几个小时内,提供“礼物”能有效地提升工作努力程度;但是,在这段时间之后,实验组 (被试者收到“礼物”) 和对照组之间没有显著差别;总体看来,提供“礼物”不利于雇佣者的利益。
具体地说,他们的田野实验总共采用两种形式:帮图书馆录入书目,和上门筹款。图书馆任务中,他们每 90 分钟统计一次被试者录入书目数量,并以此为目标变量 (ylib)。他们用单尾曼-惠特尼 U 检验 (Mann–Whitney U test) 比较前 90 分钟内,对照组和实验组目标变量均值,发现其中存在约 25%的显著差异;对于 90 分钟后的数据,他们做了同样的检验,结果未能支持“礼物交换”假说。对于筹款任务,他们统计每小时筹集到的总款项为目标变量 (yfun) ,结果发现,前三小时,实验组筹集款项比对照组平均高 70%;而三小时之后的结果,未发现显著差异。
正如前文所述,仅比较分布的均值具有一定局限性,而使用 distcomp
能更好地比较处理效应的异质性,结果如下:
. distcomp ylib , by(treated) alpha(0.05) p noplot
Comparing distribution of ylib when treated=0 vs. treated=1
Global test of equality of two CDFs:
Simulated p-value = .14105487
At a 10% level: do not reject
At a 5% level: do not reject
At a 1% level: do not reject
. distcomp yfun , by(treated) a(0.05) p noplot
Comparing distribution of yfun when treated=0 vs. treated=1
Global test of equality of two CDFs:
Simulated p-value = .03979024
At a 10% level: reject
At a 5% level: reject
At a 1% level: do not reject
With strong control of FWER at a 5% level, CDF equality is rejected at all points in the ranges of yfun:
from to
8 14
绘图结果如下 (去掉上述命令中的 noplot
选项即可图形,亦可使用 graph export
保存图形):
结果可以看出,对于图书馆任务,尽管在前 90 分钟内,实验组和对照组录入书目数量均值有差异,但我们无法拒绝两组分布相等的原假设;对于筹款任务,我们在 1%的显著性水平上无法拒绝原假设,但在 5%的水平上可以,其差异集中在
范例 4:Cattaneo et al. (2015) 断点回归设计
在发展经济学等领域中,自然实验和随机实验往往可望而不可求,断点回归设计 (regression discontinuity design, RDD) 应用也越来越多。其主要方法在于,如果连续变量落入断点 (cutoff) 附近任意一侧随机发生,而落入不同侧能改变个体受政策或冲击影响的概率,那么我们可以利用这一特性解决内生性问题,在断点附近,将其当作准自然实验 (quasi-experiment)。连享会也有许多相关推送,更多内容感兴趣的读者可自行查找。
Cattaneo, Frandsen 和 Titiunik (2015) 利用这一思想,研究美国参议院中,赢得上一次选举的官员,其在职地位是否有助于其连任。在职官员在前一次选举中的胜利,如果优势很小,那么可以近似将其视为随机发生,不受官员个人品质因素或其他协变量影响,从而得到近似局部随机实验 (local random experiment) 。我们可以利用 distcomp
指令比较上届选举中以微弱优势获选,和以微弱劣势落败的官员,本次选举得票率分布的异同。如果发现显著差异,则与在职官员具有选举优势的直觉相一致。
先下载数据文件: -数据链接-:
https://github.com/rdpackages-replication/CIT_2019_CUP/raw/master/CIT_2019_Cambridge_senate.dta
打开数据文件,输入如下代码:
*-变量定义:
//demmv: 民主党在上次选举中的得票率与共和党之差
// (如果大于零则以为着上次选举顺利当选),
//D_incumbent: 用来区分民主党议员是否为在职官员
//demvoteshfor2: 民主党当前选举同一参议院席位的得票率
*先use文件 (略)
scalar R0 = 0 //断点为0
scalar h = 0.75 //我们用0±0.75作为断点附近区间
gen D_incumbent = (demmv>=R0)
distcomp demvoteshfor2 if demmv>=R0-h & demmv<=R0+h , ///
by(D_incumbent) a(0.10) p
得到如下结果:
. distcomp demvoteshfor2 if demmv>=R0-h & demmv<=R0+h , ///
by(D_incumbent) a(0.10) p
Comparing distribution of demvoteshfor2 when D_incumbent=0 vs. D_incumbent=1
Global test of equality of two CDFs:
Simulated p-value = .00721501
At a 10% level: reject
At a 5% level: reject
At a 1% level: reject
With strong control of FWER at a 10% level,
CDF equality is rejected at all points in the following
ranges of demvoteshfor2:
from to
43.21114 47.73871
47.81345 51.70049
51.83689 56.64765
以及如下图像:
可以看出,在职议员得票率的累积分布一阶占优 (first-order stochastically dominate) 于非在职议员的竞选得票率,其差异在 43% 至 56% 区间基本显著。当然,为了具体测量在职效应的具体大小,我们需要控制其他协变量,用断点回归估计量。但在此之前,直接比较其分布差异可以给我们直观的、直觉的启发。
本文主要介绍了 Stata 中 distcomp
命令的应用。这一命令基于对 KS 检验的改进,在保留其优点的前提下,能比较不同分布存在显著差异的区间,并直观绘制比较图。与一般的 t 检验比较均值异同,和 KS 检验比较分布异同相比,这一方法展现了分布差异的异质性,提供了更丰富的信息。
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟,课程主页 Stata 33 讲 - 连玉君, 每讲 15 分钟. Stata 小白的取经之路 - 龙志能,时长:2 小时,课程主页 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 因果推断, 空间计量,寒暑假班等 | |
⭕ 数据清洗系列 | 游万海 | 直播, 88 元,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh