连玉君 (中山大学岭南学院金融系)
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 在两组之间的系数是否存在显著差异为例。引入一个虚拟变量

,若某个妇女是黑人,则
,否则
。在如下命令中,black 变量即为这里的
。模型设定为:

这是最基本的包含虚拟变量,以及虚拟变量与一个连续变量交乘项的情形。

显然,对于白人组而言,

,则 (1) 式可以写为:

对于黑人组, (1) 式可以写为:

由此可见,在 (1) 式中,参数

分别反映了黑人组相对于白人组的截距和斜率差异。我们关注的是参数
,它反映了 ttl_exp 这个变量在两个样本组中的系数差异。因此,检验 ttl_exp 在两组之间的系数是否存在显著差异就转变为
。相应的估计命令如下:
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] 的系数为

,相应的 p-value=0.787,依然不显著。

当然,我们也可以采用更为灵活的方式:允许所有的变量在两组之间都存在系数差异(注意:所有离散变量前都要加 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)其实就是表面上看起来没有关系,但实质上有关系的两个模型。这听起来有点匪夷所思。这种“实质上”的关系其实是假设白人组和黑人组的干扰项彼此相关。为了表述方便,将白人和黑人组的模型简写如下:

白人组
黑人组

若假设

,则我们可以分别对白人组和黑人组进行 OLS 估计。

然而,虽然白人和黑人种族不同,但所处的社会和法律环境,面临的劳动法规都有诸多相似之处,使得二者的干扰项可能相关,即

。此时,对两个样本组执行联合估计(GLS)会更有效率(详见 Greene (2012, Econometric analysis, 7th ed, 292–304))。

执行完 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 (

) 和 0.269 (
),因此,实际观察到的系数差异为

这里,

是一个统计量,若能知道其分布特征,便可通过分析
的分布中的相对位置来判断我们实际观察到
的概率。若概率很小,则表明
是小概率事件,此时拒绝原假设,反之则无法拒绝原假设。

例如,若假设

服从标准正态分布,即
,则基于实际观察到的
,我们很容易得出结论:无法拒绝原假设,即两组之间的 ttl_exp 的系数不存在显著差异。p-value 很容易计算 (当然,也可以查表得到):
. 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 个随机数中,有多个是大于

(我们实际观察到的数值),命令为 count if d<-0.018。一共有 4963 个观察值大于
,由此可得,经验 p 值 = 4963/10000 = 0.4963。这与采用 normal() 函数得到的结果 (0.4928) 非常接近。
 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、费舍尔组合检验的步骤

是正确的,则对于任何一个妇女而言(不论她是白人还是黑人),其 x 对 y 的边际影响都是相同的。因此,我们可以将白人组和黑人组的观察值混合起来,从中随机抽取 n1 个观察值,并将其视为"白人组",剩下的 n2 个观察值可以视为“黑人组”。
  • 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比较标出差异_[连玉君专栏]如何检验分组回归后的组间系数差异?相关推荐

  1. 两组回归系数差异检验_【stata系列】——组间系数差异检验

    01  组间系数差异检验是什么? 组间系数差异检验可以用于横截面中产权性质分析.高低分组分析等,在DID模型里也可用于检验post=0(或post=1)时组间系数差异,需要说明的是,DID模型里如果只 ...

  2. Stata:自己动手做组间系数差异检验-bootstrap-bdiff

    全文阅读:Stata:自己动手做组间系数差异检验-bootstrap-bdiff| 连享会主页 目录 1. 引言 2. bootstrap 命令 3. 第一种思路 3.1 导入数据和变量设定 3.2 ...

  3. 两个PDF比较标出差异_如何把两个pdf合成一个?在线就能免费合并!

    如何把两个pdf合成一个?经常会上网查找一些参考资料,以便辅助自己学习,网上下载的资料大多数是PDF格式.如果一个个打开查阅比较麻烦,为了方便阅读,我们会将多个PDF合并成一个.下面小编就教你怎么把两 ...

  4. 两个PDF比较标出差异_泰比 OCR 和 PDF 编辑工具 ABBYY FineReader Enterprise 中文版

    摘要: ABBYY FineReader 14 中文企业版是处理纸质文档和各类型 PDF 的一站式解决方案,集合了强大的光学字符识别(OCR)以及 PDF 查看和编辑功能.ABBYY FineRead ...

  5. 两个PDF比较标出差异_如何快速比较两个PPT文档的差异,早学早知道!

    我们经常会遇到这样的问题:花费几天功夫做好的上百页PPT,发给领导审阅,领导感觉有些地方不满意,在原基础上修改了一些内容. 可是,当PPT传回自己手上后,打开文档才发现领导并没有留下修订标记,不知道对 ...

  6. 两个PDF比较标出差异_苹果设备上对于网页存储为 PDF 的一些探索

    不同的苹果设备对于PDF的支持略有差异,在此只做一些对比. 从网页上收集整理一些资料,如果兼顾打印或手写标注就可以优先考虑 PDF 格式,但是如何存储PDF却是一个问题. iOS 设备从网页创建 PD ...

  7. 两个PDF比较标出差异_轻松搞定PDF格式转换

    PDF是我们最常用的文件类型,它是由Adobe公司发明的文件格式,是 Portable Document Format的缩写,意为"便携文档格式".由于PDF的格式稳定,无论是在安 ...

  8. 两个PDF比较标出差异_5款“业界良心”级的PDF处理工具,哪些真“免费”,哪款最好用?...

    @珞珈 常与文档打交道的朋友们,应该对PDF格式的文件不会太陌生. 作为一种相对稳定的文档格式,PDF会忠实地再现原稿的每一个字符.颜色以及图象,无论在哪种打印机上都可保证精确的颜色和准确的打印效果, ...

  9. 两个PDF比较标出差异_PDF最全接触

    本文修改自全面接触PDF:最好用的PDF软件汇总 善用佳软 介绍PDF阅读.编辑及相关在线网站:以免费正版软件为主.注意,大量文字来袭! [0.0] 什么是PDFPDF是由Adobe公司发明的文件格式 ...

最新文章

  1. 云计算读书笔记(二)
  2. SpringCloud断路器hystrix
  3. ASP.NET Web开发技术的深入总结
  4. java和python哪个好就业2020-Python和JAVA的就业前景哪个好点?
  5. linux系统性能优化及瓶颈分析
  6. windows XP cmd命令集
  7. 如何进行现场演示(二)
  8. 虚拟主机选择php版本,虚拟主机的php用什么版本好
  9. 跳转的两种方式(转发与重定向)
  10. Debian/Ubuntu - 解决Root用户不能远程连接服务器的问题
  11. linux搭建LAMP架构服务
  12. MathType7新版本数学公式编辑器上线功能特性
  13. MT【293】拐点处切线
  14. excel求方差和标准差的函数_Excel公式和函数 方差和标准差
  15. python做一个大鱼吃小鱼_Python精灵模块制作的大鱼吃小鱼游戏
  16. 校园小说男主是计算机系,十大完本校园小说排行榜 经典好看的青春校园小说...
  17. 三点法求三维坐标精度误差评估实验
  18. 前端学习01 HTML入门
  19. 【微信小程序】shiro安全登录界面实现
  20. Android 系统背光设置

热门文章

  1. 【软件下载】Excel下载 word下载 官方 官网下载 原始镜像 开发工具 开发软件下载
  2. pb开发的程序win10 报 sql server request resulted in a bad return code or status 的解决办法
  3. Android 使用第三方SDK 一般流程
  4. “驱动人生”升级通道传木马,技术分析报告来了
  5. 为了陪妹子打王者,没有天赋的我写了一个AI机器人替我操作
  6. 第三方登陆-------android整理知识
  7. 百度图片搜索搜出大量色情图片,原因不明
  8. DirectShow Filter的开发实践
  9. 可扩展标记语言XML(淅淅沥沥的小雨)
  10. 2021 ICPC Gran Premio de Mexico 1ra Fecha