R4. 组间均值差异检验
整理人:秦利宾
邮箱: qlb150@163.com
1. 简介
检验连续变量在两组中的均值是否存在显著差异是一项非常重要的统计工作。在本文中,我们又将均值差异检验分为三种情形:第一种「单变量组间差异检验」,如检验是否大学毕业的两组人群 工资 是否存在显著差异;第二种「多变量组间差异检验」,如检验是否大学毕业的两组人群在 工资、每周工作时数、工作年限 等方面是否存在显著差异;第三种「变量在多组之间差异检验」,如工资在是否大学毕业、黑人和白人、是否工会成员等组中存在显著差异。
当然,在运行命令前,还需安装一些外部命令。可通过以下方式加载:首先,将「LY_sata」文件放置在「..\ado\personal
」文件夹下,「..」对应自己 Stata 安装路径;然后,运行一下命令可以加载相应外部命令。
global path "`c(sysdir_personal)'\LY_stata"
"$path\_Results"
cd adopath + "$path\_plus" //外部命令统一存放于此处
我们也可以将外部命令放在自己 Stata 安装路径下 「plus」文件夹。
2. 单变量组间差异 t-test
以「nlsw88」这份数据为例,研究工资在女性是否大学毕业两组中是否存在显著差异。在 Stata 中,我们可以使用 ttest
命令进行检验,即 ttest wage, by(conllgrad)
,其中 conllgrad 为是否大学毕业的分类变量,而 wage 为工资连续变量。
下图为 ttest wage, by(conllgrad)
命令运行结果。可以看出,没有大学毕业女性组样本数为 1714,均值为 6.910561,而大学毕业组样本数为 552,均值为 10.52606,二者差异为 -3.615502。原假设为「H0: diff = 0」,三个备择假设只有「Ha: diff < 0」和「Ha: diff != 0」显著,说明没有大学毕业女性组工资显著小于大学毕业组。
「nlsw88」数据中还有类别变量 race,其数值为 1、2 和 3,分别代表白种人、黑种人和其他人种。若想检验白种人和黑种人在工资上是否存在显著差异,直接运行 ttest wage, by(race)
命令会报错,因为 race 有三个组别。可行的做法是生产一个新的组别虚拟变量,或者加条件语句,即 ttest wage if race != 3, by(race)
。
help ttest
sysuse nlsw88, clear
ttest wage, by(collgrad)
ttest wage, by(race) //错误命令
ttest wage if race!=3, by(race) //限定为两组即可
3 多变量组间差异 t-test
多变量组间差异检验是更为一般的组间差异检验。实现该检验有几个主要命令,即 ttable2
,ttable3
和 normdiff
。
先看一下 ttable3
命令 (后面的例子中,使用 ttable2
也可以复现多数结果)。我们仍以「nslw88」这份数据为例,不同的是,这次要考虑 wage 、hours、tenure、ttl_exp 这四个变量在是否大学毕业的两组中的差异。而 ttable3
命令工作原理就是对上述四个变量循环运行 ttest
。
sysuse nlsw88, clear
global x "wage hours tenure ttl_exp" //待检验变量列表
$x, by(collgrad) ttable3
从下图可以看出,大学毕业组与非大学毕业组均值差异在 1% 的统计水平上显著。由于在 hours、tenure、ttl_exp 三个变量也存在显著差异,故不能认为是否大学毕业是工资差异的原因,否则就可能存在自选择问题。
ttable
命令有两个缺陷,一是无法报告 t 值,二是无法提供「标准化」的均值差异检验,而 normdiff
命令可以克服这两个问题。
「输出 t 值或 p 值」命令为 normdiff $x, over(collgrad) diff t p n(below) f(%16.2f) quietly nonormdiff
。与 ttest
命令中 by 一样,normdiff
用 over 来分组。
p 值
*-输出 t 值或 $x, over(collgrad) ///
normdiff diff t p n(below) f(%16.2f) quietly nonormdiff
「标准化差异」命令为 normdiff $x, over(collgrad) diff t p n(below) f(%16.2f) quietly
,就是将 nonormdiff 这个选项去掉。
标准化的差异为下式,详见 Imbens & Wooldridge (2009, JEL, p24)。
\[ \Delta x = (x_1 - x_0) / \sqrt{(s^2_1+s^2_2)} \]
其中,\(x\) 为样本均值,\(s^2\) 为样本方差。
*-标准化差异 qui reg $x
keep if e(sample) //保证所有的变量有相同的观察值个数
$x, over(collgrad) ///
normdiff diff t p n(below) f(%16.2f) quietly
4 变量在多组之间的差异
最后一种情形就是变量在多个组中的差异检验,命令为 ttestplus
。以工资在是否结婚、是否工会成员、是否大学毕业和是否住在南部差异检验为例,命令语句为 ttestplus wage, by(married union collgrad south)
。
help ttestplus //t-tests on one or more dimensions
sysuse nlsw88, clear
by(married union collgrad south) ttestplus wage,
下图为变量在多组间差异检验结果。以 married 为例,Group1 为未婚,Group2 为已婚,未婚女性工资在 5% 的统计水平上显著高于已婚女性。3.18e-11 为科学计数法,等价于 \(3.18e^{-11}\)。
5. 扩展阅读
help dmout //类似于 ttable3, 呈现 se 或 p 值
help pwmean //Pairwise comparisons of means
help ttab //分层列表
help cendif //各个分位点上的差异检验
help signrank //Equality tests on matched data
help ranksum //Equality tests on unmatched data
help sdtest //Variance-comparison tests
help nptrend //Test for trend across ordered groups
6. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 组间
安装最新版lianxh
命令:
ssc install lianxh, replace
- 保瑞, 2021, Stata绘图-组间差异可视化:不良事件火山图、点阵图, 连享会 No.675.
- 张蛟蛟, 2022, Stata绘图-可视化:组间差异比较散点图, 连享会 No.897.
- 方森辉, 2022, Stata绘图:复现组间均值差异图, 连享会 No.1030.
- 李原, 2024, Stata绘图:漏斗图-组间绩效比较可视化-funnelinst, 连享会 No.1373.
- 李烨阳, 2022, Stata:堆叠回归及组间差异联合检验, 连享会 No.980.
- 李烨阳, 2023, Stata:自己动手做组间系数差异检验-bootstrap-bdiff, 连享会 No.1286.
- 李胜胜, 2023, Stata绘图:balanceplot-图示组间差异和平衡性, 连享会 No.1236.
- 谭炜荣, 2024, Stata:组间边际效应差异检验-gsem, 连享会 No.1442.
- 连玉君, 2020, Stata: 如何检验分组回归后的组间系数差异?, 连享会 No.19.
- 连玉君, 2024, ttestplus:组间均值差异统计和检验, 连享会 No.1508.
- 连玉君, 2024, 多组成绩调整的简便方法:固定效应模型妙用, 连享会 No.1343.
- 陈佳慧, 2024, dgraph-组间均值差异t检验:列表及可视化, 连享会 No.1367.
- 陈治中, 2020, 品头论足-distcomp:组间分布差异检验, 连享会 No.488.
- 韩少真, 2020, Stata:多变量组间均值和中位数差异检验-ttable2-baselinetable, 连享会 No.245.