两个PDF比较标出差异_[连玉君专栏]如何检验分组回归后的组间系数差异?
连玉君 (中山大学岭南学院金融系)
Stata连享会 主页 || 视频 || 推文
连享会-知乎推文列表
Note: 助教招聘信息请进入「课程主页」查看。
因果推断-内生性 专题 ⌚ 2020.11.12-15 主讲:王存同 (中央财经大学);司继春(上海对外经贸大学) 课程主页:https://gitee.com/arlionn/YG | 微信版
http://qr32.cn/BlTL43 (二维码自动识别)
空间计量 专题 ⌚ 2020.12.10-13 主讲:杨海生 (中山大学);范巧 (兰州大学) 课程主页:https://gitee.com/arlionn/SP | 微信版
https://gitee.com/arlionn/DSGE (二维码自动识别)
2018.4.11更新:该文已发表
连玉君, 廖俊平, 2017, 如何检验分组回归后的组间系数差异?, 郑州航空工业管理学院学报 35, 97-109. [PDF 原文下载] [PDF-万方]
2020.4.19 更新:[本文最新版]
问题:实证分析中,经常需要对比分析两个子样本组的系数是否存在差异。
例如,在公司金融领域,研究薪酬激励是否有助于提升业绩时,模型设定为:关注的重点是系数
。我们经常把样本组分成“国有企业(SOE)”和“民营企业(PRI)”两个样本组,继而比较
和是否存在差异。通常认为,民营企业的薪酬激励更有效果,即。
如果两个样本组中的模型设定是相同的,则两组之间的系数大小是可以比较的,而且这种比较在多数实证分析中都是非常必要的。
举几个例子,让诸位对这类问题有点感觉:
Cleary, S., 1999, The relationship between firm investment and financial status, Journal of Finance, 54 (2): 673-692. Tabel IV
连玉君, 彭方平, 苏治, 2010, 融资约束与流动性管理行为, 金融研究, (10): 158-171. 表2.
问题背景:
下面使用我在stata初级班讲座(http://www.peixun.net/view/307_detail.html;连玉君课程_视频在线学习 - 讲师介绍 - Peixun.net - Peixun.net)中的例子,列举几种方法。
调入 stata 自带的数据集 nlsw88.dta。
这份数据包含了1988年采集的 2246 个妇女的资料,包括:小时工资 wage,每周工作时数 hours, 种族 race 等变量。
我们想研究的是妇女的工资决定因素。
最为关注的是白人和黑人(相当于把原始数据分成了两个样本组:白人组和黑人组)的工资决定因素是否存在差异。
分析的重点集中于工龄(ttl_exp)和婚姻状况(married) 这两个变量的系数在两组之间是否存在显著差异。
下面是分组执行 OLS 回归的命令和结果:
sysuse "nlsw88.dta", cleargen agesq = age*age
*-分组虚拟变量drop if race==3gen black = 2.racetab black
*-删除缺漏值 global xx "ttl_exp married south hours tenure age* i.industry"reg wage $xx i.racekeep if e(sample)
*-分组回归global xx "ttl_exp married south hours tenure age* i.industry"reg wage $xx if black==0 est store Whitereg wage $xx if black==1 est store Black*-结果对比local m "White Black"esttab `m', mtitle(`m') b(%6.3f) nogap drop(*.industry) ///s(N r2_a) star(* 0.1 ** 0.05 *** 0.01)
结果:
------------------Table 1-------------------(1) (2) White Black
--------------------------------------------
ttl_exp 0.251*** 0.269***(6.47) (4.77)
married -0.737** 0.091 (-2.31) (0.23)
south -0.813*** -2.041***(-2.71) (-4.92)
hours 0.051*** 0.037 (3.81) (1.39)
tenure 0.025 -0.004 (0.77) (-0.09)
age 0.042 0.995 (0.03) (0.54)
agesq -0.001 -0.015 (-0.09) (-0.66)
_cons 3.333 -14.098 (0.14) (-0.39)
--------------------------------------------
N 1615.000 572.000
r2_a 0.112 0.165
--------------------------------------------
t statistics in parentheses
* p<0.1, ** p<0.05, *** p<0.01
可以看到,ttl_exp 变量在 [white 组] 和 [black 组] 的系数分别为 0.251 和 0.269, 二者都在 1% 水平上显著异于零。
问题在于:我们能说 0.269 比 0.251 大吗?
从统计意义上来看,答案显然没有那么明确(小学五年级的小朋友会觉得这根本不是个问题!)。
相对而言,若把注意力放在 married 这个变量上,或许更容易判断二者的差异是否显著。因为,_b[married]_white (白人组的 married 估计系数) 为 -0.737**,而 _b[married]_black 为 0.091 —— 前者在 5% 水平上显著为负,而后者不显著。
即便如此,我们仍然无法直接作出结论:_b[married]_white < _b[married]_black,因为二者的置信区间尚有重叠:
*----------------------------------------* White Black *----------------------------------------* ttl_exp *---------* beta 0.251*** 0.269*** * 95% CI [0.17, 0.33] [0.16, 0.38] *----------------------------------------* married *---------* beta -0.737** 0.091 * 95% CI [-1.36, -0.11] [-0.69, 0.87] *----------------------------------------
下面我们介绍三种检验组间系数差异的方法:
- 方法1:引入交叉项(Chow 检验)
- 方法2:基于似无相关模型的检验方法 (suest)
- 方法3:费舍尔组合检验(Permutation test)
连享会 最新专题 直播
方法 1: 引入交叉项
这是文献中最常用的方法,执行起来也最简单。以检验 ttl_exp 在两组之间的系数是否存在显著差异为例。引入一个虚拟变量
这是最基本的包含虚拟变量,以及虚拟变量与一个连续变量交乘项的情形。
显然,对于白人组而言,
对于黑人组, (1) 式可以写为:
由此可见,在 (1) 式中,参数
dropvars ttl_x_black marr_x_black
global xx "ttl_exp married south hours tenure age* i.industry" //Controls
gen ttl_x_black = ttl_exp*black //交乘项
reg wage black ttl_x_black $xx //全样本回归+交乘
为节省篇幅,仅列出最关键的结果如下:
reg wage black ttl_x_black $xx //全样本回归+交乘Source | SS df MS Number of obs = 2187
------------+------------------------------ F( 20, 2166) = 17.32Model | 10074.761 20 503.738052 Prob > F = 0.0000Residual | 63000.2591 2166 29.0859922 R-squared = 0.1379
------------+------------------------------ Adj R-squared = 0.1299Total | 73075.0201 2186 33.428646 Root MSE = 5.3931
-----------------------------------------------------------------------------wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]
------------+----------------------------------------------------------------black | -.818647 .8015272 -1.02 0.307 -2.39049 .7531957
ttl_x_black | -.0181844 .0585517 -0.31 0.756 -.1330077 .0966389ttl_exp | .2537358 .0351178 7.23 0.000 .1848676 .322604married | -.4646649 .2530829 -1.84 0.066 -.9609756 .0316458south | -1.127138 .2453123 -4.59 0.000 -1.60821 -.6460662hours | .0516672 .0116886 4.42 0.000 .0287451 .0745894tenure | .0198005 .0260971 0.76 0.448 -.0313775 .0709786age | .1685498 1.035721 0.16 0.871 -1.862562 2.199661agesq | -.0034668 .0131097 -0.26 0.791 -.0291756 .022242....._cons | .8448605 20.39973 0.04 0.967 -39.16022 40.84994
-----------------------------------------------------------------------------
交乘项 [ttl_x_black] 的系数为 -.01818, 对应的 p-value 为 0.756,表明 [ttl_exp] 的系数在两组之间并不存在显著差异。
我们也可以不事先生成交乘项,而直接采用 stata 的因子变量表达式,得到完全相同的结果:
reg wage i.black ttl_exp i.black#c.ttl_exp $xx
或如下更为简洁的方式 (详情参见 help fvvarlist):
reg wage i.black##c.ttl_exp $xx
然而,需要特别强调的是,在上述检验过程中,我们无意识中施加了一个非常严格的假设条件:只允许变量 [ttl_exp] 的系数在两组之间存在差异,而其他控制变量(如 married, south, hours 等) 的系数则不随组别发生变化。
这显然是一个非常严格的假设。因为,从 -Table 1- 的结果来看, married, south, hours 等变量在两组之间的差异都比较明显。
为此,我们放松上述假设,允许 married, south, hours 等变量在两组之间的系数存在差异:
reg wage i.black i.black#(c.ttl_exp i.married i.south c.hours) $xx //Model 2
在这种相对灵活的设定下,[ttl_exp] 的系数为
当然,我们也可以采用更为灵活的方式:允许所有的变量在两组之间都存在系数差异(注意:所有离散变量前都要加 i. 前缀,否则将被视为连续变量进行处理(对于取值为0/1的虚拟变量,可以省略前缀 i.);连续变量则需加 c. 前缀):
global xx "c.ttl_exp married south c.hours c.tenure c.(age*) i.industry"
reg wage i.black##($xx) //Model 3
这其实就是大名鼎鼎的 Chow test (邹检验),可以用 chowtest 命令快捷地完成。
小结:
- 引入交乘项来检验某个或某几个变量的系数是否存在组间差异,只需在普通线性回归中加入交乘项即可,但需要注意这一方法背后隐含的假设条件(为了便于说明,重新将 (1) 式列出):
- A1: 所有控制变量的系数在两组之间无差异,即
;
- A2: 两组的干扰项具有相同的分布(因为估计时是将两组样本混合在一起进行估计的),即
, 且,换言之,。
- 因此,当其它变量的系数在两组之间也存在明显差异(A1不满足),或存在异方差(A2不满足)时,上述检验方法得到的结果都存在问题。
解决办法:
- 对于 A1,实际操作过程中,可以通过引入更多的交乘项来放松 A1,如上文提到的 Model 2 或 Model 3。
- 对于 A2, 则可以在上述回归分析过程中加入 vce(robust) 选项,以便允许干扰项存在异方差;或加入 vce(cluster varname) 以便得到聚类调整后的稳健型标准误。
- 上述范例中,是以基于截面数据的 OLS 回归为例的,但这一方法也适用于其他命令,如针对面板数据的 xtreg, 针对离散数据的 logit, probit 等。
方法 2: SUEST (基于似无相关模型SUR的检验)
基本思想
顾名思义,所谓的似无相关模型(seemingly unrelated regression)其实就是表面上看起来没有关系,但实质上有关系的两个模型。这听起来有点匪夷所思。这种“实质上”的关系其实是假设白人组和黑人组的干扰项彼此相关。为了表述方便,将白人和黑人组的模型简写如下:
若假设
然而,虽然白人和黑人种族不同,但所处的社会和法律环境,面临的劳动法规都有诸多相似之处,使得二者的干扰项可能相关,即
执行完 SUR 估计后,我们就可以对两组之间的系数差异进行检验了。
从上面的原理介绍,可以看出,基于 SUR 估计进行组间系数差异检验时,假设条件比第一种方法要宽松一些:
- 其一,在估计过程中,并未预先限定白人组和黑人组各个变量的系数一定要相同,因此在 (2) 式中,我们分别用
和表示白人组和黑人组各个变量的系数向量;
- 其二,两个组的干扰项可以有不同的分布,即 可以不同,即
,,且允许二者的干扰项相关,。
Stata 实现方法
在 stata 中执行上述检验的步骤为:
- Step 1: 分别针对白人组和黑人组进行估计(不限于OLS估计,可以执行 Logit, Tobit 等估计),存储估计结果;
- Step 2:使用 suest 命令执行 SUR 估计;
- Step 3: 使用 test 命令检验组间系数差异。
范例如下:
*-Step1: 分别针对两个样本组执行估计reg wage $xx if black==0 est store w //whitereg wage $xx if black==1 est store b //black
*-Step 2: SURsuest w b
*-Step 3: 检验系数差异test [w_mean]ttl_exp = [b_mean]ttl_exp test [w_mean]married = [b_mean]married test [w_mean]south = [b_mean]south
Step 2 的结果如下(为便于阅读,部分变量的系数未呈现):
. suest w bSimultaneous results for w, bNumber of obs = 2187
-------------------------------------------------------------------------------| Robust| Coef. Std. Err. z P>|z| [95% Conf. Interval]
--------------+----------------------------------------------------------------
w_mean |ttl_exp | .2505707 .0362302 6.92 0.000 .1795609 .3215805married | -.7367238 .3486479 -2.11 0.035 -1.420061 -.0533865south | -.8125914 .2892359 -2.81 0.005 -1.379483 -.2456994hours | .0507118 .0126268 4.02 0.000 .0259637 .0754599tenure | .0246063 .0289939 0.85 0.396 -.0322207 .0814333age | .0415616 1.107902 0.04 0.970 -2.129887 2.213011agesq | -.0014454 .0138965 -0.10 0.917 -.028682 .0257911... ..._cons | 3.333308 22.03159 0.15 0.880 -39.84781 46.51442
--------------+----------------------------------------------------------------
w_lnvar |_cons | 3.4561 .0971137 35.59 0.000 3.265761 3.64644
--------------+----------------------------------------------------------------
b_mean |ttl_exp | .2686185 .0511831 5.25 0.000 .1683015 .3689355married | .0913607 .4050685 0.23 0.822 -.7025589 .8852804south | -2.040701 .4252889 -4.80 0.000 -2.874252 -1.20715hours | .0367536 .0229076 1.60 0.109 -.0081444 .0816516tenure | -.003914 .0450917 -0.09 0.931 -.0922921 .0844641age | .9952064 1.814351 0.55 0.583 -2.560856 4.551269agesq | -.0153824 .0229045 -0.67 0.502 -.0602744 .0295096_cons | -14.09831 35.40206 -0.40 0.690 -83.48508 55.28846... ...
--------------+----------------------------------------------------------------
b_lnvar |_cons | 3.077588 .2090237 14.72 0.000 2.667909 3.487267
-------------------------------------------------------------------------------
对上述命令和结果的简要解释如下:
- 白人组和黑人组的估计结果分别存储于 w 和 b 两个临时性文件中;
- 执行 - suest w b - 命令时,白人组和黑人组的被视为两个方程,即文的 (2a) 和 (2b) 式。Stata 会自动将两个方程对应的样本联合起来,采用 GLS 执行似无相关估计(SUR);
- 由于 SUR 属于多方程模型,因此需要指定每个方程的名称,在下面呈现的回归结果中,[w_mean] 和 [b_mean] 分别是白人组和黑人组各自对应的方程名称。因此,[w_mean]ttl_exp 表示白人组方程中 ttl_exp 变量的系数,而 [b_mean]ttl_exp 则表示黑人组中 ttl_exp 变量的系数。
执行组间系数差异检验的结果如下(Step 3):
. *-Step 3: 检验系数差异. test [w_mean]ttl_exp = [b_mean]ttl_exp (1) [w_mean]ttl_exp - [b_mean]ttl_exp = 0chi2( 1) = 0.08Prob > chi2 = 0.7735. test [w_mean]married = [b_mean]married (2) [w_mean]married - [b_mean]married = 0chi2( 1) = 2.40Prob > chi2 = 0.1213. test [w_mean]south = [b_mean]south (3) [w_mean]south - [b_mean]south = 0chi2( 1) = 5.70Prob > chi2 = 0.0169
此时,ttl_exp 在两组之间的系数差异仍然不显著,这与采用第一种方法得到的结论是一致的。在我们测试的三个变量中,只有 south 的系数在两组之间存在显著差异,对应的 p-value 为 0.0169。
使用 -bdiff- 命令
上述过程可以使用我编写的 - bdiff - 命令非常快捷的加以实现,结果的输出方式也更为清晰(在 stata 命令窗口中输入 - ssc install bdiff, replace- 可以下载最新版命令包,进而输入 - help bdiff - 查看帮助文件):
preservedrop if industry==2 // 白人组中没有处于 Mining (industry=2) 的观察值tab industry, gen(d) //手动生成行业虚拟变量local dumind "d2 d3 d4 d5 d6 d7 d8 d9 d10 d11" //行业虚拟变量global xx "c.ttl_exp married south c.hours c.tenure c.age c.agesq `dumind'" bdiff, group(black) model(reg wage $xx) surtest
restore
结果如下:
-SUR- Test of Group (black 0 v.s 1) coeficients differenceVariables | b0-b1 Chi2 p-value
-------------+-------------------------------ttl_exp | -0.017 0.07 0.788married | -0.814 2.32 0.128south | 1.238 5.80 0.016hours | 0.014 0.28 0.597tenure | 0.030 0.32 0.571age | -1.027 0.23 0.629agesq | 0.015 0.31 0.578d2 | -2.732 1.63 0.202d3 | -1.355 1.45 0.228d4 | -2.708 2.23 0.135d5 | -1.227 1.00 0.317d6 | 0.087 0.00 0.950d7 | -0.534 0.07 0.785d8 | -1.316 1.26 0.261d9 | 0.346 0.06 0.807d10 | -1.105 0.94 0.333d11 | -1.689 1.81 0.179_cons | 18.770 0.20 0.652
---------------------------------------------
几点说明:
- 使用 -suest- 时,允许两个样本组的解释变量个数不同。但由于一些技术上的问题尚未解决(很快可以解决掉),-bdiff- 命令要求两个样本组中的解释变量个数相同。在上例中,白人组在 Mining 行业的观察值个数为零(输入 -tab industry black- 可以查看),导致我们加入行业虚拟变量时,白人组只有 10 个行业虚拟变量,而黑人组则有 11 个行业虚拟变量。为此,在上述命令中,我使用 - drop if industry==2 - 命令删除了 Mining 行业的观察值。
- 目前,-bdiff- 还不能很好地支持因子变量的写法 (help fvvarlist),因此上例中的行业虚拟变量不能通配符方式写成 d*,而必须写成原始模样: d2 d3 d4 d5 d6 d7 d8 d9 d10 d11。
面板数据的处理方法
- suest - 不支持 -xtreg- 命令,因此无法直接将该方法直接应用于面板数据模型,如 FE 或 RE。此时,可以预先手动去除个体效应,继而对变换后的数据执行 OLS 估计,步骤如下:
- step 1: 对于固定效应模型而言,可以使用 - center - 或 - xtdata - 命令去除个体效应;对于随机效应模型而言,可以使用 - xtdata - 命令去除个体效应。
- step 2:按照截面数据的方法对处理后的数据进行分组估计,并执行 suest 估计和组间系数检验。
举个例子:
*-SUEST test for panel data*-数据概况webuse "nlswork", clearxtset idcode yearxtdes*-对核心变量执行组内去心:去除个体效应help center //外部命令, 下载命令为 ssc install center, replacelocal y "ln_wage"local x "hours tenure ttl_exp south"bysort id: center `y', prefix(cy_) //组内去心bysort id: center `x', prefix(cx_) *-分组回归分析 reg cy_* cx_* i.year if collgrad==0 // 非大学组est store Yesreg cy_* cx_* i.year if collgrad==1 // 大学组est store No*-列示分组估计结果 esttab Yes No, nogap mtitle(Yes_Coll No_Coll) ///star(* 0.1 ** 0.05 *** 0.01) s(r2 N) *-似无相关估计 suest Yes No*-组间差异检验 test [Yes_mean]cx_ttl_exp = [No_mean]cx_ttl_exp test [Yes_mean]cx_hours = [No_mean]cx_hours
小结
- 相对于方法1(引入交乘项),基于 SUR 的方法更为灵活一些。在上例中,白人组和黑人组的被解释变量相同 (均为 wage),此时方法 1 和方法 2 都能用。有些情况下,两个组中的被解释变量不同,此时方法 1 不再适用,而方法 2 则可以。
- 对于面板数据而言,可以预先使用 - center - 或 - xtdata - 命令去除个体效应,变换后的数据可以视为截面数据,使用 - regress - 命令进行估计即可。
- 为了便于呈现结果,可以使用 - estadd - 命令将上述检验结果(chi2 值或 p值) 加入内存,进而使用 -esttab- 命令列示出来。可以参考 - help bdiff - 中的类似范例。
连享会 - 文本分析与爬虫 - 专题视频
主讲嘉宾:司继春 || 游万海
方法 3:费舍尔组合检验 (Fisher's Permutation test)
A、基本思想
将二者的系数差异定义为
我们仍然关注 ttl_exp 变量在两组之间的系数差异。以 -Table 1- 中的结果为例,可以看到,ttl_exp 变量在 [white 组] 和 [black 组] 的系数估计值分别为 0.251 (
这里,
例如,若假设
. dis normal(-0.018) //单尾检验
.49281943
然而,我们并不知道 d 的分布特征。此时,可以对现有样本进行重新抽样,以得到经验样本 (empirical sample),进而利用经验样本构造出组间系数差异统计量 d 的经验分布 (empirical distribution),从而最终得到经验 p 值 (empirical p-value)。
下面先通过一个小例子说明 “经验 p 值” 和 “经验分布” 的概念,进而介绍使用组合检验获得 “经验 p 值” 的流程。
B、经验 p 值 (empirical p-value)
在这个小例子中,我们先随机生成一个服从标准正态分布的随机数 d,共有 10000 个观察值。这些观察值是通过模拟产生的。如果这些观察值构成的样本是通过从原始样本(原始样本是从母体中一次随机抽样,称为 “抽样样本,sample”)中二次抽样得到的,则称为 “经验样本 (empirical sample)”。
然后,我们数一下在这 10000 个随机数中,有多个是大于
preserveclearset obs 10000set seed 1357gen d = rnormal() // d~N(0,1) 服从标准正态分布的随机数sum d, detailcount if d<-0.018dis "Empirical p-value = " 4963/10000restore
C、经验样本 (empirical sample)
上例中,我们假设 d 服从标准正态分布,从而可以通过 monte carlo 模拟的方式产生 10000 个观察值,这事实上是构造了一个经验样本。但多数情况下,我们并不知道 d 的分布特征,此时无法使用 monte carlo 模拟。然而,若假设抽样样本 (sample) 是从母体 (population) 中随机抽取的,则可以通过抽样样本中二次抽样得到经验样本 (empirical sample),这些经验样本也可以视为对母体的随机抽样。
若抽样过程中为无放回抽样 (sampling with no replacement),则相应的检验方法称为 “组合检验(permutation test)”;若抽样过程中为有放回抽样 (也称为可重复抽样,sampling with replacement),则对应的检验方法称为 “基于 Bootstrap 的检验”。
D、费舍尔组合检验的步骤
若
- Step 0: 分别针对白人组和黑人组估计模型 (3a) 和 (3b),得到系数估计值
和,以及二者的系数差异;
- Step 1: 将白人组和黑人组的样本混合起来,得到 n1+n2 个观察值构成的样本 S;
- Step 2: 获得经验样本 —— 从 S 中随机抽取 (无放回) n1 个观察值,将其视为“白人组”(记为 Sw),剩下的 n2 个观察值可以视为“黑人组” (记为 Sb);
- Step 3: 分别针对经验样本 Sw 和 Sb,估计模型 (3a) 和 (3b),得到
和(上标表示利用第一笔经验样本得到的估计值),以及二者的差异;
- Step 4: 获得统计量
的经验分布 —— 将 Step 2 和 Step 3 重复执行次 (如),则可以得到,亦可简记为;
- Step 5: 计算 经验 p 值,
,其中表示 Step 4 中得到的个中大于我们实际观测到的的个数。若,则可以在5%水平上拒绝原假设,表明两组的系数差异是显著的。
- 需要说明的是,由于
的分布未必是对称的,因此,与都可以视为在 5% 水平上拒绝原假设的证据。因为,前者意味着在 1000 个中属于非常大的数值,而后者意味着它是非常小的数值。无论如何,在原假设下观察到都是小概率事件,也就意味着原假设是不合理的。
- 此外,该方法的并不局限于普通的线性回归模型(-regress-命令),可以应用于各种模型的估计命令,如 -xtreg-, -xtabond-, -logit-, -ivregress- 等。
E、Stata 实现
上述过程可以使用连玉君编写的 -bdiff- 命令来实现。在命令窗口中输入 -ssc install bdiff, replace- 可以自动安装该命令。帮助文件中提供了多个范例。
先使用一个简单的例子,不考虑行业虚拟变量:
*-数据处理sysuse "nlsw88.dta", cleargen agesq = age*agedrop if race==3gen black = 2.race global xx "ttl_exp married south hours tenure age agesq"*-检验bdiff, group(black) model(reg wage $xx) reps(1000) detail
- 选项 group() 中填写用于区分组别的类别变量(若有多个组,可以预先删除不参与比较的组,类似于上面的 drop if race==3 命令);
- 选项 model() 用于设定回归模型,即上面提到的模型 (3a) 或 (3b);
- 选项 reps(#) 用于设定抽样次数,即上文提到的
,通常设定 1000-5000 次即可;
- 附加 detail 选项,可以进一步列表呈现两组的实际估计系数
和;
上述过程大约用时 13 秒,结果如下:
-Permutaion (1000 times)- Test of Group (black 0 v.s 1) coeficients differenceVariables | b0-b1 Freq p-value
-------------+-------------------------------ttl_exp | 0.007 490 0.490married | -0.824 920 0.080south | 1.411 5 0.005hours | 0.010 344 0.344tenure | -0.006 512 0.488age | -1.579 751 0.249agesq | 0.022 218 0.218_cons | 28.051 267 0.267
---------------------------------------------
可以看到,ttl_exp 的经验 p 值为 0.49,表明白人和黑人组的 ttl_exp 系数不存在显著差异;married 变量的 p 值为 0.08,我们可以在 10% 水平上拒绝原假设。细心的读者会发现,该变量对应的 Freq = 920,为什么?(答案在上面 Step 5 处)。
行业虚拟变量
若需在模型中加入虚拟变量,处理过程会稍微复杂一些。需要手动生成行业虚拟变量,并保证两个样本组中参与回归的行业虚拟变量个数相同。此外,书写命令时,不能使用通配符。(后续版本的 bdiff 命令会使用 fvunab 命令解决这些 bugs)。
*-数据预处理(可以忽略)sysuse "nlsw88.dta", cleargen agesq = age*age
*-分组虚拟变量drop if race==3gen black = 2.race
*-删除缺漏值 global xx "ttl_exp married south hours tenure age* i.industry"qui reg wage $xx i.racekeep if e(sample)
*-生成行业虚拟变量drop if industry==2 // 白人组中没有处于 Mining (industry=2) 的观察值tab industry, gen(d) //手动生成行业虚拟变量local dumind "d2 d3 d4 d5 d6 d7 d8 d9 d10 d11" //行业虚拟变量global xx "c.ttl_exp married south c.hours c.tenure c.age c.agesq `dumind'"
*-permutation testbdiff, group(black) model(reg wage $xx) reps(1000) detail
面板数据
若原始数据为面板数据,通常会采用 -xtreg-, -xtabond- 等考虑个体效应的方法进行估计。抽样过程必须考虑面板数据的特征。在执行 -bdiff- 命令之前,只需设定 -xtset id year-,声明数据为面板数据格式,则抽样时便会以 id (公司或省份代码) 为单位,以保持 id 内部的时序特征。
*-Panel Data (sample by cluster(id))*-数据预处理webuse "nlswork.dta", clearxtset id year //声明为面板数据,否则视为截面数据gen agesq = age*agedrop if race==3gen black = 2.race*-检验global x "ttl_exp hours tenure south age agesq"local m "xtreg ln_wage $x, fe" //模型设定bdiff, group(black) model(`m') reps(1000) bs first detail
耗时 608 秒才完成,结果如下:
-Bootstrap (1000 times)- Test of Group (black 0 v.s 1) coeficients differenceVariables | b0-b1 Freq p-value
-------------+-------------------------------ttl_exp | 0.011 47 0.047hours | 0.003 58 0.058tenure | 0.004 116 0.116south | 0.093 14 0.014age | -0.022 984 0.016agesq | 0.000 45 0.045_cons | 0.302 22 0.022
---------------------------------------------
Ho: b0(ttl_exp) = b1(ttl_exp)Observed difference = 0.011Empirical p-value = 0.047
解释和说明:
- -bdiff- 命令中设定 -bs- 选项,则随机抽样为可重复抽样 (bootstrap);
- -first- 选项便于将组间系数差异检验结果保存在内存中,方便后续使用 esttab 合并到回归结果表格中。具体使用方法参见 -help bdiff-。
- 由于抽样过程具有随机性,因此每次检验的结果都有微小差异。在投稿之前,可以附加 -seed()- 选项,以保证检验结果的可复制性。
- 其他选项和使用方法参阅 -help bdiff- 的帮助文件。
F、延伸阅读
关于这一方法的更为一般化的介绍参见 Efron, B., R. Tibshirani. An introduction to the bootstrap[M]. New York: Chapmann & Hall, 1993 (Section 15.2, pp.202).
如下论文使用了这一方法检验了 “投资-现金流敏感性” 分析中的组间系数差异:
Cleary, S., 1999, The relationship between firm investment and financial status, Journal of Finance, 54 (2): 673-692. (pp.684-685)
连玉君, 彭方平, 苏治, 2010, 融资约束与流动性管理行为, 金融研究, (10): 158-171. (pp.164)
其它基于 Permutation test 的检验
- -mtest- 命令基于组合检验的思想来检验两个样本组是否具有相同的分布 (Stata Journal, 11-2, http://www.stata-journal.com/sjpdf.html?articlenum=st0228);
- -tsrtest-, -mwtest- 命令用于检验两个样本组的均值,中位数,方差等多个维度的差异(Stata Journal, 9-1, http://www.stata-journal.com/sjpdf.html?articlenum=st0158)
- 上述命令都可以使用 - findit - 搜索到,或直接用 - ssc install 命令名称 - 下载安装。
小结
- 方法1(加入交乘项)在多数模型中都可以使用,但要注意其背后的假设条件是比较严格的。若在混合回归中,只引入你关心的那个变量(ttl_exp)与分组变量 (black) 的交乘项(ttl_exp*black),则相当于假设其他控制变量在两组之间的不存在系数差异。相对保守的处理方法是:在混合估计时,引入所有变量与分组变量的交乘项,同时附加 vce(robust) 选项,以克服异方差的影响。
- 方法2(基于 SUR 模型的检验)执行起来也比较方便,假设条件也比较宽松:允许两组中所有变量的系数都存在差异,也允许两组的干扰项具有不同的分布,且彼此相关。局限在于,有些命令无法使用 -suest- 执行联合估计,如几乎所有针对面板数据的命令都不支持(-xtreg-, -xtabond- 等)。
- 方法3(组合检验)是三种方法中假设条件最为宽松的,只要求原始样本是从母体中随机抽取的(看似简单,但很难检验,只能靠嘴说了),而对于两个样本组中干扰项的分布,以及衡量组间系数差异的统计量
的分布也未做任何限制。事实上,在获取经验 p 值的过程中,我们采用的是“就地取材”、“管中窥豹”的思路,并未假设的分布函数;另一个好处在于可以适用于各种命令,如 regress,xtreg,logit, ivregress 等,而 -suest- 则只能应用于部分命令。
- 方法无优劣。无论选择哪种方法,都要预先审视一下是否符合这些检验方法的假设条件。
2018.4.11更新:该文已发表
连玉君, 廖俊平, 2017, 如何检验分组回归后的组间系数差异?, 郑州航空工业管理学院学报 35, 97-109. [PDF 原文下载]
相关课程
连享会-直播课 上线了! http://lianxh.duanshu.com 免费公开课:
- 直击面板数据模型 - 连玉君,时长:1 小时 40 分钟
- Stata 33 讲 - 连玉君, 每讲 15 分钟.
- 部分直播课 课程资料下载 (PPT,dofiles 等)
课程一览
支持回看,所有课程可以随时购买观看。 连享会 - 文本分析与爬虫 - 专题视频 主讲嘉宾:司继春 || 游万海
连享会 - 效率分析专题 已上线:可随时购买学习+全套课件,课程主页 已经放置板书和 FAQs 主讲嘉宾:连玉君 | 鲁晓东 | 张宁 课程主页,微信版 https://gitee.com/arlionn/TE
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
- Stata 连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
- 连享会-主页 和 知乎专栏,300+ 推文,实证分析不再抓狂。
- 公众号推文分类:计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
http://qr32.cn/BRPFg5 (二维码自动识别)
两个PDF比较标出差异_[连玉君专栏]如何检验分组回归后的组间系数差异?相关推荐
- 两组回归系数差异检验_【stata系列】——组间系数差异检验
01 组间系数差异检验是什么? 组间系数差异检验可以用于横截面中产权性质分析.高低分组分析等,在DID模型里也可用于检验post=0(或post=1)时组间系数差异,需要说明的是,DID模型里如果只 ...
- Stata:自己动手做组间系数差异检验-bootstrap-bdiff
全文阅读:Stata:自己动手做组间系数差异检验-bootstrap-bdiff| 连享会主页 目录 1. 引言 2. bootstrap 命令 3. 第一种思路 3.1 导入数据和变量设定 3.2 ...
- 两个PDF比较标出差异_如何把两个pdf合成一个?在线就能免费合并!
如何把两个pdf合成一个?经常会上网查找一些参考资料,以便辅助自己学习,网上下载的资料大多数是PDF格式.如果一个个打开查阅比较麻烦,为了方便阅读,我们会将多个PDF合并成一个.下面小编就教你怎么把两 ...
- 两个PDF比较标出差异_泰比 OCR 和 PDF 编辑工具 ABBYY FineReader Enterprise 中文版
摘要: ABBYY FineReader 14 中文企业版是处理纸质文档和各类型 PDF 的一站式解决方案,集合了强大的光学字符识别(OCR)以及 PDF 查看和编辑功能.ABBYY FineRead ...
- 两个PDF比较标出差异_如何快速比较两个PPT文档的差异,早学早知道!
我们经常会遇到这样的问题:花费几天功夫做好的上百页PPT,发给领导审阅,领导感觉有些地方不满意,在原基础上修改了一些内容. 可是,当PPT传回自己手上后,打开文档才发现领导并没有留下修订标记,不知道对 ...
- 两个PDF比较标出差异_苹果设备上对于网页存储为 PDF 的一些探索
不同的苹果设备对于PDF的支持略有差异,在此只做一些对比. 从网页上收集整理一些资料,如果兼顾打印或手写标注就可以优先考虑 PDF 格式,但是如何存储PDF却是一个问题. iOS 设备从网页创建 PD ...
- 两个PDF比较标出差异_轻松搞定PDF格式转换
PDF是我们最常用的文件类型,它是由Adobe公司发明的文件格式,是 Portable Document Format的缩写,意为"便携文档格式".由于PDF的格式稳定,无论是在安 ...
- 两个PDF比较标出差异_5款“业界良心”级的PDF处理工具,哪些真“免费”,哪款最好用?...
@珞珈 常与文档打交道的朋友们,应该对PDF格式的文件不会太陌生. 作为一种相对稳定的文档格式,PDF会忠实地再现原稿的每一个字符.颜色以及图象,无论在哪种打印机上都可保证精确的颜色和准确的打印效果, ...
- 两个PDF比较标出差异_PDF最全接触
本文修改自全面接触PDF:最好用的PDF软件汇总 善用佳软 介绍PDF阅读.编辑及相关在线网站:以免费正版软件为主.注意,大量文字来袭! [0.0] 什么是PDFPDF是由Adobe公司发明的文件格式 ...
最新文章
- 云计算读书笔记(二)
- SpringCloud断路器hystrix
- ASP.NET Web开发技术的深入总结
- java和python哪个好就业2020-Python和JAVA的就业前景哪个好点?
- linux系统性能优化及瓶颈分析
- windows XP cmd命令集
- 如何进行现场演示(二)
- 虚拟主机选择php版本,虚拟主机的php用什么版本好
- 跳转的两种方式(转发与重定向)
- Debian/Ubuntu - 解决Root用户不能远程连接服务器的问题
- linux搭建LAMP架构服务
- MathType7新版本数学公式编辑器上线功能特性
- MT【293】拐点处切线
- excel求方差和标准差的函数_Excel公式和函数 方差和标准差
- python做一个大鱼吃小鱼_Python精灵模块制作的大鱼吃小鱼游戏
- 校园小说男主是计算机系,十大完本校园小说排行榜 经典好看的青春校园小说...
- 三点法求三维坐标精度误差评估实验
- 前端学习01 HTML入门
- 【微信小程序】shiro安全登录界面实现
- Android 系统背光设置
热门文章
- 【软件下载】Excel下载 word下载 官方 官网下载 原始镜像 开发工具 开发软件下载
- pb开发的程序win10 报 sql server request resulted in a bad return code or status 的解决办法
- Android 使用第三方SDK 一般流程
- “驱动人生”升级通道传木马,技术分析报告来了
- 为了陪妹子打王者,没有天赋的我写了一个AI机器人替我操作
- 第三方登陆-------android整理知识
- 百度图片搜索搜出大量色情图片,原因不明
- DirectShow Filter的开发实践
- 可扩展标记语言XML(淅淅沥沥的小雨)
- 2021 ICPC Gran Premio de Mexico 1ra Fecha