25-因果推断中的线性回归

作者

Simonzhou

发布于

2025年7月29日

修改于

2025年8月1日

import stata_setup
stata_setup.config('C:/Program Files/Stata18', 'mp', splash=False)

1 线性回归

这里将使用一个案例演示 regress 和 teffects ra 的用法。

案例数据来自 “中国家庭追踪数据”(China Family Panel Studies, CFPS)2010年的数据,该数据集由中国社会科学院和北京大学共同开发,旨在收集中国家庭的社会、经济和人口信息。

数据总共包括 4137 名年龄在25-55 岁之间的成年人,集体如下:

%%stata
use "../../Data/causal-inference/cfps2010.dta", clear
* 查看数据随机十个数据
list in 1/10

. use "../../Data/causal-inference/cfps2010.dta", clear

. * 查看数据随机十个数据
. list in 1/10

     +------------------------------------------------------------------------+
  1. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110003101 | 北京市 |     男 |  39 | 1521 |  59319 | 11.51293 |      否 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     农村户口      |          否      |       是      |       缺失      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
  2. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110005102 | 北京市 |     男 |  48 | 2304 | 110592 | 9.392662 |      否 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     城镇户口      |          否      |       是      |         否      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
  3. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110006101 | 北京市 |     男 |  50 | 2500 | 125000 | 10.30895 |      否 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     农村户口      |          否      |       是      |       缺失      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
  4. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110009102 | 北京市 |     男 |  53 | 2809 | 148877 | 9.392662 |      否 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     城镇户口      |          否      |       是      |         否      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
  5. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110009105 | 北京市 |     男 |  26 |  676 |  17576 | 8.699514 |      是 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     城镇户口      |          是      |       是      |         是      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
  6. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110015104 | 北京市 |     男 |  45 | 2025 |  91125 | 10.12663 |      否 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     城镇户口      |          否      |       是      |       缺失      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
  7. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110020103 | 北京市 |     男 |  42 | 1764 |  74088 | 9.680344 |      否 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     城镇户口      |          否      |       是      |         否      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
  8. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110020104 | 北京市 |     男 |  36 | 1296 |  46656 | 10.30895 |      否 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     城镇户口      |          否      |       是      |         否      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
  9. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110020105 | 北京市 |     女 |  40 | 1600 |  64000 | 9.546813 |      是 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     城镇户口      |          否      |       是      |         是      |
     +------------------------------------------------------------------------+

     +------------------------------------------------------------------------+
 10. |       pid | provcd | gender | age | age2 |   age3 |    lninc | college |
     | 110020106 | 北京市 |     女 |  34 | 1156 |  39304 | 8.006368 |      否 |
     |------------------------------------------------------------------------|
     |        hukou      |     sibling      |     race      |      fmedu      |
     |     城镇户口      |          否      |       是      |       缺失      |
     +------------------------------------------------------------------------+

. 

1.1 简要的查看一下数据

%%stata
describe

Contains data from ../../Data/causal-inference/cfps2010.dta
 Observations:         4,137                  
    Variables:            12                  5 Aug 2022 19:25
-------------------------------------------------------------------------------
Variable      Storage   Display    Value
    name         type    format    label      Variable label
-------------------------------------------------------------------------------
pid             double  %12.0g     pid        个人id
provcd          double  %24.0g     provcd     省国标码
gender          double  %12.0g     gender     性别
age             float   %9.0g                 年龄
age2            float   %9.0g                 年龄平方
age3            float   %9.0g                 年龄三次方
lninc           float   %9.0g                 收入对数
college         double  %9.0g      yesorno    是否上大学
hukou           double  %12.0g     hukou      3岁时户口性质
sibling         float   %9.0g      yesorno    是否独生子女
race            double  %9.0g      yesorno    是否汉族
fmedu           float   %9.0g      fmedu      父母是否上过高中
-------------------------------------------------------------------------------
Sorted by: 

分析变量为收入对数 lninc,核心自变量为是否上大学 college,该变量取值为 1 表示研究对象读过大学,取值为 0 表示没有读过大学。

基于上述两个变量,可以进行一元线性回归,具体如下:

%%stata
regress lninc college

      Source |       SS           df       MS      Number of obs   =     4,137
-------------+----------------------------------   F(1, 4135)      =    508.22
       Model |  671.883317         1  671.883317   Prob > F        =    0.0000
    Residual |  5466.56371     4,135  1.32202266   R-squared       =    0.1095
-------------+----------------------------------   Adj R-squared   =    0.1092
       Total |  6138.44703     4,136  1.48415063   Root MSE        =    1.1498

------------------------------------------------------------------------------
       lninc | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |    .823612   .0365338    22.54   0.000     .7519861     .895238
       _cons |   9.353189   .0230235   406.25   0.000     9.308051    9.398327
------------------------------------------------------------------------------

从分析结果可以看出,在不控制任何变量的情况下,college 的回归系数为 0.824 ,其标准误为 0.037。

用回归系数除以标准误即可得到 t 统计量的值,为 22.54,它的 P 值在小数点后三位都是 0,说明 college 对 lninc 的影响是非常显著的。

除此之外,Stata 还报告了置信度为 95% 的置信区间为 [0.752, 0.896]。

需要注意的是,上述标准误以及统计检验结果都是基于独立同分布假定计算的,因此在实际应用中需要谨慎解读。

在显示条件下,该假定通常不能得到满足,因此,建议使用更加稳健的标准误和统计检验。

1.2 使用稳健标准误

使用怀特异方差稳健标准误来调整异方差的影响,使用方法在 regress 命令后使用选项 vce(robust)

%%stata
regress lninc college, vce(robust)

Linear regression                               Number of obs     =      4,137
                                                F(1, 4135)        =     582.05
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1095
                                                Root MSE          =     1.1498

------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |    .823612   .0341385    24.13   0.000     .7566823    .8905418
       _cons |   9.353189   .0256882   364.10   0.000     9.302826    9.403552
------------------------------------------------------------------------------

从结果中可以看到,使用稳健标准误后,college 的回归系数仍然为 0.824,但其标准误变为 0.034,相比之前略有下降,t 统计量变为 24.13,P 值在小数点后三位都是 0,说明 college 对 lninc 的影响仍然是非常显著的。

由于异方差条件下的标准误和统计检验结果更加可信,因此建议用户在使用 regress 命令时,使用选项 vce(robust)

1.3 多阶段整群抽样

用户还可以使用选项 vce(cluster clustvar) 进一步放松误差项之间相互独立的假定。

CFPS 采用的是以地理区域为抽样单位的多阶段整群抽样,这样会导致同一个抽样单位中的样本存在自相关。

为了降低自相关的影响,以调查样本所在省(provcd)为聚类变量,使用选项 vce(cluster provcd),计算聚类稳健标准误,命令和结果如下:

%%stata
regress lninc college, vce(cluster provcd)

Linear regression                               Number of obs     =      4,137
                                                F(1, 24)          =     271.17
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1095
                                                Root MSE          =     1.1498

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |    .823612   .0500155    16.47   0.000     .7203851     .926839
       _cons |   9.353189   .1084703    86.23   0.000     9.129317    9.577061
------------------------------------------------------------------------------

在使用 vce(cluster provcd) 后,college 的回归系数仍然为 0.824,但其标准误变为 0.050,相比之前略有上升,t 统计量变为 16.47,P 值在小数点后三位都是 0,说明 college 对 lninc 的影响仍然是非常显著的。

在这个聚类稳健标准误的结果中,统计检验结果没有受到影响,相比之前,使用聚类稳健标准误的结果最为稳健,因此,后续都将使用此类标准误的分析结果。

上述分析都只包含 college 这一个自变量,在这种情况下,进行因果推断必须满足严格的可忽略性假定。即要求大学学历在研究对象中随机分配,这个假定显然与中国的实际情况相差很远,因此,上述分析结果仅能代表上大学的人和不上大学的人在收入对数上的平均差异,不能解释为大学对收入的因果影响。

1.4 控制变量

为了使回归分析结果具有因果解释的效应,需要在模型中纳入控制变量,以尽可能地满足条件独立假定。

这里我们认为,就这个研究问题来说,研究对象出生时的户口性质(hukou)是一个非常重要的混杂变量。

一方面,由于教育资源分布的城乡不均,城市人比农村人拥有更多考上大学的机会;另一方面,因为劳动力市场上的城乡分割,城市人也比农村人拥有更好的收入前景。

综合这两个方面,有必要在模型分析时控制 hukou 变量。

%%stata
regress lninc college hukou, vce(cluster provcd)

Linear regression                               Number of obs     =      4,137
                                                F(2, 24)          =     219.69
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1169
                                                Root MSE          =     1.1451

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |    .798281   .0451727    17.67   0.000     .7050491     .891513
       hukou |   .2155333   .0611855     3.52   0.002     .0892526    .3418141
       _cons |    9.27541   .0993474    93.36   0.000     9.070367    9.480453
------------------------------------------------------------------------------

从上述多元线性回归分析结果可以发现,在控制了 hukou 变量后,college 的回归系数有所下降,变为 0.798,说明之前使用的一元线性回归确实高估了上大学对收入的影响。

1.5 偏回归系数

在控制 hukou 后,college 的回归系数将变为一个偏回归系数,它可以通过两步线性回归得到。

具体来说,第一步回归分析以 college 为因变量,hukou 为自变量,这一步回归分析的目的是获取 college 的残差。

%%stata
reg college hukou, vce(cluster provcd)

Linear regression                               Number of obs     =      4,137
                                                F(1, 24)          =      27.84
                                                Prob > F          =     0.0000
                                                R-squared         =     0.0137
                                                Root MSE          =     .48606

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
     college | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
       hukou |    .116539   .0220861     5.28   0.000     .0709555    .1621224
       _cons |   .3496532   .0161816    21.61   0.000     .3162561    .3830504
------------------------------------------------------------------------------

接着,使用 predict 命令并结合选项 residuals 获得回归的残差 \(e\)

%%stata
predict e, residuals

再使用 lninc 作为因变量,\(e\) 作为自变量进行第二步线性回归分析,这一步回归分析的结果就是 college 的偏回归系数。

%%stata
reg lninc e, vce(cluster provcd)

Linear regression                               Number of obs     =      4,137
                                                F(1, 24)          =     321.05
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1014
                                                Root MSE          =      1.155

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
           e |    .798281    .044552    17.92   0.000     .7063302    .8902318
       _cons |   9.680285   .1232655    78.53   0.000     9.425877    9.934692
------------------------------------------------------------------------------

从这一步回归的分析结果来看,e 的回归系数与之前控制 hukou 以后得到的 college 对 lninc 的回归系数完全相同。

由此可知,通过两步法可以再现多元线性回归张的统计过程。

不过,通过两步法得到的回归系数的标准误是错误的,因为第二步回归无法自动对完整模型中的参数数量进行校正,因此,这里建议用户直接使用多元线性回归进行统计控制。

这里,使用两步法只是为了帮助用户更好地理解多元线性回归的统计控制和偏回归系数的含义。

1.6 对遗漏变量偏差公式进行检验

在多元线性回归中,遗漏变量偏差公式是一个重要的概念,它可以帮助我们理解控制变量对回归系数的影响。

遗漏变量偏差公式(omitted variable bias formula)为:

\[\tau '-\tau = \beta_k \gamma_D\]

根据这个公式,纳入 hukou 变量之后,college 的回归系数的变化量应等于 college 对 hukou 的回归系数与 hukou 与 lninc 的回归系数的乘积。

为了对上述关系进行检验,我们首先将控制 hukou 和不控制 hukou 时 college 的回归系数相减,得到二者的差异:

%%stata
dis .823612-.798281
.025331

接下来,以 hukou 为因变量,college 为自变量拟合回归方程,这样就可以得到 college 对 hukou 的回归系数。

然后,将该系数与多元线性回归中 hukou 对 lninc 的回归系数相乘,得到一个值。

%%stata
reg hukou college, vce(cluster provcd)

Linear regression                               Number of obs     =      4,137
                                                F(1, 24)          =      33.17
                                                Prob > F          =     0.0000
                                                R-squared         =     0.0137
                                                Root MSE          =     .48812

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       hukou | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |   .1175271   .0204066     5.76   0.000     .0754099    .1596443
       _cons |   .3608661   .0559186     6.45   0.000     .2454558    .4762764
------------------------------------------------------------------------------
%%stata
dis .1175271*.2155333
.025331

这个乘积与 college 的系数变化完全相同,也是 0.025.

这充分说明,遗漏变量偏差计算公式在实践中是完全正确的。

1.7 纳入更多的控制变量

在上大学对收入的影响这个例子中,hukou 虽然是一个重要的混杂变量,但很可能不是唯一的混杂变量。因此,有必要在回归方程中纳入更多的控制变量。

在回归方程包含多个控制变量的情况下, 必须考虑模型的设定问题。

以同时包含 hukou 和 age 两个控制变量为例,如何设定这两个变量的函数形式才能进行最充分的统计控制?

针对这个问题,最简单的答案就是进行饱和回归,即针对 hukou 和 age 的每个取值和所有交互项均设置一个虚拟变量。具体如下:

%%stata
reg lninc college hukou##i.age, vce(cluster provcd)

Linear regression                               Number of obs     =      4,137
                                                F(23, 24)         =          .
                                                Prob > F          =          .
                                                R-squared         =     0.1501
                                                Root MSE          =     1.1316

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |   .7477749   .0544757    13.73   0.000     .6353425    .8602073
             |
       hukou |
   城镇户口  |  -.0787305   .1418798    -0.55   0.584    -.3715559    .2140949
             |
         age |
         26  |   .3980867   .1481415     2.69   0.013     .0923376    .7038358
         27  |   .2684265   .2134622     1.26   0.221    -.1721377    .7089908
         28  |   .4034527   .1960134     2.06   0.051    -.0010991    .8080045
         29  |   .3063752   .2061596     1.49   0.150    -.1191172    .7318677
         30  |    .808574    .138855     5.82   0.000     .5219914    1.095157
         31  |   .6390432   .1597057     4.00   0.001     .3094269    .9686596
         32  |   .3162257   .1835314     1.72   0.098    -.0625646    .6950159
         33  |   .5423168   .1908591     2.84   0.009      .148403    .9362305
         34  |   .4480384   .1642828     2.73   0.012     .1089753    .7871016
         35  |   .4871379   .1332159     3.66   0.001     .2121937     .762082
         36  |   .7649181   .1431828     5.34   0.000     .4694033    1.060433
         37  |   .5898895   .1644897     3.59   0.001     .2503994    .9293797
         38  |   .4446396   .1414918     3.14   0.004     .1526149    .7366642
         39  |   .3132889   .2152405     1.46   0.158    -.1309457    .7575234
         40  |   .6295174   .1203586     5.23   0.000     .3811094    .8779254
         41  |   .7413657   .1649781     4.49   0.000     .4008676    1.081864
         42  |   .6440224   .1854795     3.47   0.002     .2612115    1.026833
         43  |   .1100458    .261421     0.42   0.678    -.4295006    .6495921
         44  |   .3310236   .1953046     1.69   0.103    -.0720652    .7341124
         45  |   .2092177   .2516651     0.83   0.414    -.3101935    .7286288
         46  |   .5989884   .1833996     3.27   0.003     .2204702    .9775067
         47  |   .2833783   .1619895     1.75   0.093    -.0509517    .6177083
         48  |   .2354062   .1468512     1.60   0.122    -.0676798    .5384923
         49  |   .4378188    .164764     2.66   0.014     .0977627    .7778749
         50  |   .0167503   .1750601     0.10   0.925     -.344556    .3780566
         51  |  -.1610867   .1851799    -0.87   0.393    -.5432792    .2211059
         52  |  -.1302052    .286344    -0.45   0.653    -.7211901    .4607797
         53  |  -.0033811   .2062946    -0.02   0.987    -.4291521      .42239
         54  |   .2233507   .1566927     1.43   0.167    -.1000471    .5467486
         55  |    .216386   .2374876     0.91   0.371    -.2737643    .7065363
             |
   hukou#age |
城镇户口#26  |  -.0602352   .2412837    -0.25   0.805    -.5582202    .4377497
城镇户口#27  |   .4551441   .2638459     1.73   0.097    -.0894072    .9996953
城镇户口#28  |   .3544994   .2567836     1.38   0.180    -.1754758    .8844747
城镇户口#29  |   .3823274    .297972     1.28   0.212    -.2326564    .9973113
城镇户口#30  |  -.0193147   .2555672    -0.08   0.940    -.5467794      .50815
城镇户口#31  |  -.0932038   .2561528    -0.36   0.719    -.6218772    .4354696
城镇户口#32  |   .6327651   .2259055     2.80   0.010      .166519    1.099011
城镇户口#33  |   .1374474   .2483846     0.55   0.585    -.3751932     .650088
城镇户口#34  |   .4132721   .2550715     1.62   0.118    -.1131696    .9397139
城镇户口#35  |   .2141665   .1854107     1.16   0.259    -.1685025    .5968354
城镇户口#36  |   .0205633   .2148722     0.10   0.925    -.4229113    .4640378
城镇户口#37  |  -.0448259   .2031256    -0.22   0.827    -.4640566    .3744048
城镇户口#38  |   .3187681   .1745486     1.83   0.080    -.0414825    .6790186
城镇户口#39  |   .4006106    .234722     1.71   0.101    -.0838317    .8850529
城镇户口#40  |   .0135196   .2054592     0.07   0.948    -.4105273    .4375666
城镇户口#41  |  -.0207122   .2451003    -0.08   0.933    -.5265743    .4851499
城镇户口#42  |   .0024452   .2642466     0.01   0.993    -.5429331    .5478234
城镇户口#43  |   .8893687   .3581507     2.48   0.020     .1501819    1.628555
城镇户口#44  |   .3810794   .2435123     1.56   0.131    -.1215052     .883664
城镇户口#45  |   .5548028   .3701405     1.50   0.147    -.2091297    1.318735
城镇户口#46  |  -.0202823   .2068561    -0.10   0.923    -.4472122    .4066477
城镇户口#47  |   .1388032   .3315924     0.42   0.679    -.5455699    .8231762
城镇户口#48  |   .4089894   .2048096     2.00   0.057    -.0137169    .8316956
城镇户口#49  |   .3254708   .2237488     1.45   0.159    -.1363241    .7872657
城镇户口#50  |     .65057   .2474684     2.63   0.015     .1398203     1.16132
城镇户口#51  |   .7067489   .3553651     1.99   0.058    -.0266886    1.440186
城镇户口#52  |   .7470444   .3445403     2.17   0.040     .0359482    1.458141
城镇户口#53  |    .694888   .2878366     2.41   0.024     .1008224    1.288954
城镇户口#54  |   .4754364   .2742435     1.73   0.096    -.0905744    1.041447
城镇户口#55  |   .2745935   .3227371     0.85   0.403    -.3915031    .9406901
             |
       _cons |   8.937311   .1616701    55.28   0.000      8.60364    9.270982
------------------------------------------------------------------------------

这样做的好处是不存在模型设定的偏差。

但如上所示,饱和回归也会出现待估参数过多的问题。特别是其中包含像 age 这样连续取值的变量时,这个问题会变得更加严重。

为了避免参数过多给模型估计和解释造成的困难,一个可行的解决方案是对控制变量影响因变量的方式进行参数限定,如使用幂函数来近似 age 对 lninc 的影响,不过需要对这种近似的效果进行评估。

为此,用户需要先计算饱和回归的模型拟合指标,具体如下:

%%stata
estat ic

Akaike's information criterion and Bayesian information criterion

-----------------------------------------------------------------------------
       Model |          N   ll(null)  ll(model)      df        AIC        BIC
-------------+---------------------------------------------------------------
           . |      4,137  -6686.381  -6349.885      24   12747.77   12899.63
-----------------------------------------------------------------------------
Note: BIC uses N = number of observations. See [R] IC note.

接下来,使用年龄的一次项(age)、二次项(age3)和三次项(age3)替代虚拟变量,进行线性回归分析,同时计算这个模型的拟合指标:

%%stata
reg lninc college hukou##(c.age c.age2 c.age3), vce(cluster provcd)

Linear regression                               Number of obs     =      4,137
                                                F(8, 24)          =      88.50
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1331
                                                Root MSE          =     1.1354

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |   .7547539   .0501103    15.06   0.000     .6513314    .8581763
             |
       hukou |
   城镇户口  |  -.5628695   3.164092    -0.18   0.860    -7.093234    5.967495
         age |   .6604027   .2081753     3.17   0.004       .23075    1.090055
        age2 |  -.0152886    .005478    -2.79   0.010    -.0265947   -.0039824
        age3 |   .0001114   .0000469     2.38   0.026     .0000147    .0002082
             |
 hukou#c.age |
   城镇户口  |   .0697643   .2557794     0.27   0.787    -.4581385    .5976671
             |
hukou#c.age2 |
   城镇户口  |  -.0023666   .0067435    -0.35   0.729    -.0162844    .0115512
             |
hukou#c.age3 |
   城镇户口  |   .0000268   .0000577     0.46   0.646    -.0000923    .0001459
             |
       _cons |    .358661   2.584047     0.14   0.891    -4.974549    5.691871
------------------------------------------------------------------------------
%%stata
estat ic

Akaike's information criterion and Bayesian information criterion

-----------------------------------------------------------------------------
       Model |          N   ll(null)  ll(model)      df        AIC        BIC
-------------+---------------------------------------------------------------
           . |      4,137  -6686.381  -6390.917       9   12799.83   12856.78
-----------------------------------------------------------------------------
Note: BIC uses N = number of observations. See [R] IC note.

可以发现,这个模型和之前的饱和回归模型相比,参数数量大大减少,但模型的AIC和BIC却比饱和模型更低,因此,从模型拟合的角度来说,这个模型更加简约,所以可以用年龄的三次函数近似其对 lninc 的影响。

最后,进一步删除上述模型中 age、age2和age3 与 hukou 的交互项后再进行回归分析,同时计算模型拟合指标:

%%stata
reg lninc college hukou age age2 age3, vce(cluster provcd)

Linear regression                               Number of obs     =      4,137
                                                F(5, 24)          =     130.17
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1304
                                                Root MSE          =     1.1367

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |   .7483616   .0474037    15.79   0.000     .6505252    .8461981
       hukou |   .2233219   .0657661     3.40   0.002     .0875874    .3590565
         age |   .6884785    .143905     4.78   0.000     .3914732    .9854838
        age2 |  -.0162254   .0037903    -4.28   0.000    -.0240482   -.0084026
        age3 |    .000122   .0000326     3.74   0.001     .0000546    .0001893
       _cons |   .0389147   1.813509     0.02   0.983    -3.703984    3.781814
------------------------------------------------------------------------------
%%stata
estat ic

Akaike's information criterion and Bayesian information criterion

-----------------------------------------------------------------------------
       Model |          N   ll(null)  ll(model)      df        AIC        BIC
-------------+---------------------------------------------------------------
           . |      4,137  -6686.381  -6397.289       6   12806.58   12844.54
-----------------------------------------------------------------------------
Note: BIC uses N = number of observations. See [R] IC note.

可以发现,这个模型是三个模型中最简约的,同时其AIC和BIC也是三个模型中最小的。

这说明,只要在模型中纳入 hukou、age、age2 和 age3 这四个主效应项就可以很好近似 hukou 和 age 对 lninc 的影响。

而且,对比这个模型中 college 的回归系数与之前饱和回归中的系数,可以发现二者几乎不存在任何差异(若保留三位小数都是0.748),所以,从统计控制角度来说,这个更加简约的模型与之前的复杂模型几乎也是等价的。

1.8 纳入分类变量

接下来,我们又在模型中纳入了性别(gender)、民族(race)、是否独生子女(sibling)和父母是否读过高中(fmedu)这四个控制变量,他们都是分类变量,因此都以虚拟变量的形式纳入回归方程。具体如下:

%%stata
reg lninc college hukou age age2 age gender race sibling i.fmedu, vce(cluster provcd)
note: age omitted because of collinearity.

Linear regression                               Number of obs     =      4,137
                                                F(9, 24)          =     234.58
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1574
                                                Root MSE          =     1.1195

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |   .7445286   .0441545    16.86   0.000     .6533982     .835659
       hukou |   .2210093   .0577399     3.83   0.001     .1018401    .3401785
         age |   .1415978   .0245026     5.78   0.000      .091027    .1921686
        age2 |   -.001847    .000325    -5.68   0.000    -.0025177   -.0011763
         age |          0  (omitted)
      gender |   .3974689   .0411983     9.65   0.000     .3124397     .482498
        race |   .1726838   .1016948     1.70   0.102    -.0372039    .3825716
     sibling |   .1844962    .078748     2.34   0.028     .0219682    .3470241
             |
       fmedu |
         是  |   .0219876   .0362712     0.61   0.550    -.0528725    .0968478
       缺失  |   .0086198   .0391502     0.22   0.828    -.0721823    .0894219
             |
       _cons |   6.306768   .4785392    13.18   0.000     5.319111    7.294424
------------------------------------------------------------------------------

在控制上述变量后,college 的回归系数下降到了 0.742,那么我们现在是否已经得到上大学对收入的因果影响了呢?

这个问题的答案取决于上述模型是否满足条件独立假定。

就目前来说,研究者依然有比较充分的理由拒绝这个假定,因为上述模型并未控制能力,而在关于教育回报的研究中,能力是一个不可忽视的混杂变量。

不过,因为数据中没有研究对象在大学前的能力测量,这里分析只能到此为止。

考虑到我们进行上述分析的主要目标是向读者演示如何使用线性回归进行因果分析的一般过程,因此,到这一步已经足够了。

1.9 异质性对回归分析的影响

为了使问题得以简化,我们先考虑只有 hukou 这一个控制变量的情况。

我们可以分农村户口和城镇户口分别进行回归分析,具体如下:

%%stata
reg lninc college if hukou==0, vce(cluster provcd)

Linear regression                               Number of obs     =      2,451
                                                F(1, 24)          =     477.21
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1018
                                                Root MSE          =      1.238

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |    .873513   .0399865    21.85   0.000     .7909849    .9560412
       _cons |   9.249105   .1050262    88.06   0.000     9.032342    9.465869
------------------------------------------------------------------------------
%%stata
reg lninc college if hukou==1, vce(cluster provcd)

Linear regression                               Number of obs     =      1,686
                                                F(1, 24)          =      63.29
                                                Prob > F          =     0.0000
                                                R-squared         =     0.1097
                                                Root MSE          =     .99279

                                (Std. err. adjusted for 25 clusters in provcd)
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
     college |   .6983452   .0877811     7.96   0.000     .5171739    .8795166
       _cons |   9.537533   .1003993    95.00   0.000     9.330319    9.744747
------------------------------------------------------------------------------

分析结果显示,农村户口中 college 的回归系数为 0.874,大于城镇户口中 college 的回归系数 0.698,因此,college 对 lninc 的影响在城镇和农村确实存在异质性。

如果因果效应存在异质性,那么线性回归会基于公式

\[\tau'=\sum\frac{Var(D_i|X_i=x)p(X_i=x)}{\sum Var(D_i|X_i=x)p(X_i=x)}\tau'_x\]

对异质性的回归系数进行加权平均。

这个公式的含义是,线性回归会根据每个子群体的回归系数和该子群体的样本量对回归系数进行加权平均。

首先,我们描述一下样本中农村户口和城镇户口的百分比以及两个样本中 college 的分布:

%%stata
tab hukou

    3岁时户 |
     口性质 |      Freq.     Percent        Cum.
------------+-----------------------------------
   农村户口 |      2,451       59.25       59.25
   城镇户口 |      1,686       40.75      100.00
------------+-----------------------------------
      Total |      4,137      100.00
%%stata
tab college if hukou==0
tab college if hukou==1

. tab college if hukou==0

     是否上 |
       大学 |      Freq.     Percent        Cum.
------------+-----------------------------------
         否 |      1,594       65.03       65.03
         是 |        857       34.97      100.00
------------+-----------------------------------
      Total |      2,451      100.00

. tab college if hukou==1

     是否上 |
       大学 |      Freq.     Percent        Cum.
------------+-----------------------------------
         否 |        900       53.38       53.38
         是 |        786       46.62      100.00
------------+-----------------------------------
      Total |      1,686      100.00

. 

然后根据公式 \(Var(D_i|X_i=x)p(X_i=x)\) 计算农村户口和城镇户口的样本格子的权重。

对于农村户口样本,其权重为:

%%stata
dis 34.97*65.03*59.25
134740.37

对于城镇户口样本,其权重为:

%%stata
dis 53.38*46.62*40.75
101409.46

最后,根据公式

\[\tau'-\tau=\beta_k \gamma_D\]

计算加权后的回归系数,具体命令和结果如下:

%%stata
dis 134740.37/(134740.37+101409.46)
dis 101409.46/(134740.37+101409.46)
dis 134740.37/(134740.37+101409.46)*.873513 + .6983452*101409.46/(134740.37+101409.46)

. dis 134740.37/(134740.37+101409.46)
.57057153

. dis 101409.46/(134740.37+101409.46)
.42942847

. dis 134740.37/(134740.37+101409.46)*.873513 + .6983452*101409.46/(134740.37+1
> 01409.46)
.79829096

. 

可以发现,加权平均后的结果为 0.798,而之前在仅纳入 college 和 hukou 的回归分析中得到的 college 的回归系数也是 0.798。

因此,通过上述分析,我们验证了异质性因果效应情况下的回归系数分解公式。

1.10 计算回归调整估计量

接下来,将演示如何使用 teffects ra 命令计算回归调整估计量。

使用 teffects ra 命令计算 ATE(总体的平均干预效应) 的命令和结果如下:

%%stata
teffects ra (lninc hukou age age2 age3 gender race sibling i.fmedu) (college),vce(robust)

Iteration 0:  EE criterion =  2.620e-24  
Iteration 1:  EE criterion =  9.251e-30  

Treatment-effects estimation                    Number of obs     =      4,137
Estimator      : regression adjustment
Outcome model  : linear
Treatment model: none
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
ATE          |
     college |
 (是 vs 否)  |   .7887353   .0373127    21.14   0.000     .7156038    .8618667
-------------+----------------------------------------------------------------
POmean       |
     college |
         否  |   9.413724   .0271812   346.33   0.000      9.36045    9.466998
------------------------------------------------------------------------------

分析结果显示,在控制 hukou、age、age2、age3、gender、race、sibling 和 fmedu 这些变量后,college 对 lninc 的平均处理效应(ATE)为 0.798,标准误为 0.037,P 值在小数点后三位都是 0。

如果要得到 ATT(干预组的平均干预效应),可以使用选项 atet,具体命令和结果如下:

%%stata
teffects ra (lninc hukou age age2 age3 gender race sibling i.fmedu) (college),vce(robust) atet

Iteration 0:  EE criterion =  2.620e-24  
Iteration 1:  EE criterion =  7.826e-30  

Treatment-effects estimation                    Number of obs     =      4,137
Estimator      : regression adjustment
Outcome model  : linear
Treatment model: none
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
ATET         |
     college |
 (是 vs 否)  |   .6711883   .0416622    16.11   0.000      .589532    .7528446
-------------+----------------------------------------------------------------
POmean       |
     college |
         否  |   9.505613   .0359548   264.38   0.000     9.435143    9.576083
------------------------------------------------------------------------------

分析结果显示,ATT 为 0.671,小于 ATE 的 0.798,这说明在控制了其他变量后,college 对收入的影响在干预组中更小。

如果要得到 ATU(对照组的平均处理效应),需要做一些小调整。

具体来说,我们需要使用选项 control()tlevel() 将干预组和控制组的位置进行交换,即将 college=0 的组作为干预组,college=1 的组作为控制组,这样就可以通过选项 atet 得到 ATU 的估计,相关命令和结果如下:

%%stata
teffects ra (lninc hukou age age2 age3 gender race sibling i.fmedu) (college),vce(robust) control(1) tlevel(0) atet

Iteration 0:  EE criterion =  2.620e-24  
Iteration 1:  EE criterion =  1.079e-29  

Treatment-effects estimation                    Number of obs     =      4,137
Estimator      : regression adjustment
Outcome model  : linear
Treatment model: none
------------------------------------------------------------------------------
             |               Robust
       lninc | Coefficient  std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
ATET         |
     college |
 (否 vs 是)  |   -.866173   .0405392   -21.37   0.000    -.9456283   -.7867176
-------------+----------------------------------------------------------------
POmean       |
     college |
         是  |   10.21936   .0317611   321.76   0.000     10.15711    10.28161
------------------------------------------------------------------------------

分析结果显示,在将干预组和控制组对调位置之后,ATT 为 -0.866,这实际上表明,上大学对 college=0 的那一组人的平均影响为 0.866,即 ATU=0.866。

最后,为了帮助用户更好地理解回归调整估计量,我们将借助 regress 这个命令手动演示其计算过程。

1.11 手动演示计算回归调整估计量

第一步,我们针对 college=0 的样本拟合回归方程,并使用这个方程预测 college=1 的样本在不上大学情况下的反事实结果,具体如下:

%%stata
reg lninc hukou age age2 age3 gender race sibling i.fmedu if college==0
predict y0hat if college==1

. reg lninc hukou age age2 age3 gender race sibling i.fmedu if college==0

      Source |       SS           df       MS      Number of obs   =     2,494
-------------+----------------------------------   F(9, 2484)      =     21.72
       Model |  299.291704         9  33.2546338   Prob > F        =    0.0000
    Residual |  3803.21617     2,484  1.53108541   R-squared       =    0.0730
-------------+----------------------------------   Adj R-squared   =    0.0696
       Total |  4102.50787     2,493  1.64561086   Root MSE        =    1.2374

------------------------------------------------------------------------------
       lninc | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
       hukou |   .3400725   .0536769     6.34   0.000     .2348163    .4453286
         age |   .5876334   .2255975     2.60   0.009     .1452547    1.030012
        age2 |  -.0140172   .0056768    -2.47   0.014    -.0251491   -.0028854
        age3 |    .000105   .0000465     2.26   0.024     .0000138    .0001963
      gender |   .5032089   .0511487     9.84   0.000     .4029104    .6035073
        race |   .1929442   .1168315     1.65   0.099    -.0361529    .4220413
     sibling |   .2414546   .0893476     2.70   0.007     .0662513     .416658
             |
       fmedu |
         是  |   .0178976   .0790321     0.23   0.821     -.137078    .1728732
       缺失  |   .0028774   .0613876     0.05   0.963    -.1174987    .1232535
             |
       _cons |   1.072145   2.916684     0.37   0.713    -4.647238    6.791527
------------------------------------------------------------------------------

. predict y0hat if college==1
(option xb assumed; fitted values)
(2,494 missing values generated)

. 

第二步,我们再针对 college=1 的样本拟合同样的回归方程,并使用该方程预测 college=0 的样本在上大学情况下的反事实结果,具体如下:

%%stata
reg lninc hukou age age2 age3 gender race sibling i.fmedu if college==1
predict y1hat if college==0

. reg lninc hukou age age2 age3 gender race sibling i.fmedu if college==1

      Source |       SS           df       MS      Number of obs   =     1,643
-------------+----------------------------------   F(9, 1633)      =     12.17
       Model |  85.7486412         9   9.5276268   Prob > F        =    0.0000
    Residual |  1278.30719     1,633  .782796812   R-squared       =    0.0629
-------------+----------------------------------   Adj R-squared   =    0.0577
       Total |  1364.05584     1,642   .83072828   Root MSE        =    .88476

------------------------------------------------------------------------------
       lninc | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
       hukou |   .0484465   .0485173     1.00   0.318    -.0467162    .1436091
         age |   .6205456   .1870398     3.32   0.001     .2536824    .9874087
        age2 |  -.0143115   .0049184    -2.91   0.004    -.0239586   -.0046644
        age3 |   .0001088    .000042     2.59   0.010     .0000264    .0001912
      gender |   .2153348    .044547     4.83   0.000     .1279596      .30271
        race |   .1548971   .0931465     1.66   0.097    -.0278021    .3375962
     sibling |   .2273577   .0611421     3.72   0.000     .1074325     .347283
             |
       fmedu |
         是  |    .091336   .0511668     1.79   0.074    -.0090234    .1916954
       缺失  |   .0564651   .0651018     0.87   0.386    -.0712268     .184157
             |
       _cons |    1.06923   2.310655     0.46   0.644    -3.462931     5.60139
------------------------------------------------------------------------------

. predict y1hat if college==0
(option xb assumed; fitted values)
(1,643 missing values generated)

. 

第三步,计算潜在结果 y1 和 y0。

  • 对于 college=0 的样本,其lninc 的观测值即 y0,而 y1 可用预测值 y1hat 估计;
  • 对于 college=1 的样本,其lninc 的观测值即 y1,而 y1 可用预测值 y0hat 估计。

具体如下:

%%stata
gen y0=lninc if college==0
replace y0=y0hat if college==1
gen y1=lninc if college==1
replace y1=y1hat if college==0

. gen y0=lninc if college==0
(1,643 missing values generated)

. replace y0=y0hat if college==1
(1,643 real changes made)

. gen y1=lninc if college==1
(2,494 missing values generated)

. replace y1=y1hat if college==0
(2,494 real changes made)

. 

第四步,计算个体层面的干预效应 effect,然后对不同样本求平均,即可得到 ATE、ATT和ATU的估计值。具体如下:

%%stata
gen effect=y1-y0
tab college,sum(effect)

. gen effect=y1-y0

. tab college,sum(effect)

     是否上 |          Summary of effect
       大学 |        Mean   Std. dev.       Freq.
------------+------------------------------------
         否 |   .86617296   1.2711443       2,494
         是 |    .6711883   .92538643       1,643
------------+------------------------------------
      Total |   .78873525   1.1502225       4,137

. 

分析结果显示,ATE为0.789,ATT为0.671,ATU为0.866,这三个结果均与使用 teffect ra 命令计算得到的结果完全一致。