Frisch-Waugh定理与部分回归图:图示线性回归系数

2019-07-29  本文已影响0人  stata连享会

2020连享会 - 文本分析与爬虫 - 4天直播

主讲嘉宾:司继春 || 游万海

连享会-文本分析与爬虫专题-4天直播

直播课程:实证研究设计 (2.4小时)

image

作者:胡雨霄 (伦敦政治经济学院)

Stata 连享会: 知乎 | 简书 | 码云 | CSDN

Stata连享会 计量专题 || 公众号合集 || 推文集锦

点击查看完整推文列表

Gallup, J. L. (2019). Added-variable plots with confidence intervals. The Stata Journal, 19(3), 598–614. https://doi.org/10.1177/1536867X19874236,
[PDF]


实证研究之初,研究者通常希望可以直观得观察变量 yx 的关系,并以此做出最初关于二者相关关系的基本预判。一个常用的命令是 twoway scatter。该命令允许绘制 yx 的散点图,借此研究者可以对二者关系产生较为直观的认识。然而,这种方式只能非常 粗糙 地描述二者的关系。其原因在于并没有控制其他变量的影响。

计量经济学中,我们认为其粗糙的原因在于遗漏变量偏差 (omitted variable bias)。在尚未控制其他变量影响的情况下,研究者无法断言两个变量相关性的存在,也无法进行量化分析。

而本篇推文介绍的命令 avplot avciplotxtavplot 则基于部分回归 (partial regression) 的计量原理,在控制了其他变量影响的情况下,允许研究者绘制部分回归图,观测变量 yx 的关系。

1. 部分回归:Frisch-Waugh Theorem

部分回归的基本思想是,当引入控制变量后,若想探究解释变量 x1 与被解释变量 y 的相关系数,那么就先 剔除 (partial out) 控制变量对 y 的影响和 剔除 控制变量对 x1 的影响,之后再让剩余部分的 y 对剩余部分的 x1 做回归。

1.1 计量原理

具体而言,假设线性回归方程为

\mathrm{y}=\mathrm{X} \beta+\varepsilon

\betaK \times 1 的系数向量,\epsilonn \times 1 的残差向量。

OLS 估计量 b 满足下式

X'Xb = X'y

X 可以被分割为 X = [x_1, X2],其中 X_2 = [x_2, ..., x_k]。将 X 分割后,X'X 可以进一步表示为

\left[ \begin{matrix} x_1'x_1 & x_1'X_2 \\ X_2'x_1 & X_2'X_2 \end{matrix} \tag{1} \right]

X' y 则可进一步表示为

\left[ \begin{matrix} X_1'y \\ X_2'y \end{matrix} \tag{2} \right]

将 (1)式和(2)式代入X'Xb = X'y 可以得到

\left[\begin{array}{cc}{\mathbf{x}_{1}^{\prime} \mathbf{x}_{1}} & {\mathbf{x}_{1}^{\prime} \mathbf{X}_{2}} \\ {\mathbf{X}_{2}^{\prime} \mathbf{x}_{1}} & {\mathbf{X}_{2}^{\prime} \mathbf{X}_{2}}\end{array}\right]\left[\begin{array}{l}{b_{1}} \\ {\mathbf{b}_{2}}\end{array}\right]=\left[\begin{array}{c}{\mathbf{x}_{1}^{\prime} \mathbf{y}} \\ {\mathbf{X}_{2}^{\prime} \mathbf{y}}\end{array}\right]

由此可以得到两个式子

x_1'x_1b_1+x_1'X_2b_2 = x_1'y

X_2'x_1b_1+X_2'X_2b_2=X_2'y

进一步推得

X_2'X_2b_2 = X_2'y - X_2'x_1b_1= X_2'(y-x_1b_1)

也就是说,

b_2 = (X_2'X_2)^{-1}X_2'(y-x_1b_1)

联想 OLS 估计量表达式 b= (X'X^{-1})X'y,其实 b_2 可以理解为 y-x_1b_1X_2 做回归 X_2 的系数。

经过数学推导后,可以得到

b_1 = (X_1'M_2X_1)^{-1}X_1'M_2y

其中, M_2 = (I-X_2(X_2'X_2)^{-1}X_2')

因为 M_2 是对称 (symmetric) 且幂等 (idempotent) 的,因此 b_1 可以重新写作

b_1 = (x_1'M_2'M_2x_1)^{-1}x_1'M_2'M_2y=(e_{x1}'e_{x1})^{-1}e_{x1}'e_y

其中,e_{x1}=M_2x_1e_y=M_2y。事实上,e_y=M_2yyX_2 做回归后的残差的向量,而 e_{x1}x_1X_2 做回归后的残差的向量。

e_ye_{x1} 也可以被理解为是剔除了 X_2 影响之后的 yx_1。因此,e_ye_{x_1} 的散点图即可反映当控制了 X_2 之后, x_1y 的关系。

1.2 Stata 实现

接下来,我们用 Stata 进一步解释上述原理。

首先,引入数据,并进行基本回归。

sysuse "auto.dta", clear //导入数据
rename (price length weight) (Y X1 X2)
reg Y X1 X2

其基本结果如下。

      Source |       SS           df       MS      Number of obs   =        74
-------------+----------------------------------   F(2, 71)        =     18.91
       Model |   220725280         2   110362640   Prob > F        =    0.0000
    Residual |   414340116        71  5835776.28   R-squared       =    0.3476
-------------+----------------------------------   Adj R-squared   =    0.3292
       Total |   635065396        73  8699525.97   Root MSE        =    2415.7

------------------------------------------------------------------------------
           Y |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
          X1 |  -97.96031    39.1746    -2.50   0.015    -176.0722   -19.84838
          X2 |   4.699065   1.122339     4.19   0.000     2.461184    6.936946
       _cons |   10386.54   4308.159     2.41   0.019     1796.316    18976.76
------------------------------------------------------------------------------

我们可以看到,X1 的系数为 -97.96031,标准误为 39.175。

接下来,我们利用 Frisch-Waugh Theorem 部分回归的原理展示 X1 系数是如何得到的。

第一步,剔除控制变量 X2y 的影响,并保存剩余部分的 y

reg Y X2
predict ey2, res 

第二步,剔除控制变量 X2X1 的影响,并保存剩余部分的 X1

reg X1 X2
predict e12, res

第三步,将剩余部分的 y 对剩余部分的 X1 做回归。

reg ey2 e12 

结果如下。我们可以看到 e12 的系数为 -97.96031,与执行 reg Y X1 X2X1 的系数一致。

. reg ey2 e12 

      Source |       SS           df       MS      Number of obs   =        74
-------------+----------------------------------   F(1, 72)        =      6.34
       Model |  36491343.3         1  36491343.3   Prob > F        =    0.0140
    Residual |   414340116        72  5754723.83   R-squared       =    0.0809
-------------+----------------------------------   Adj R-squared   =    0.0682
       Total |   450831459        73  6175773.41   Root MSE        =    2398.9

------------------------------------------------------------------------------
         ey2 |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         e12 |  -97.96031    38.9016    -2.52   0.014    -175.5092   -20.41139
       _cons |   1.88e-12   278.8665     0.00   1.000    -555.9103    555.9103
------------------------------------------------------------------------------

连享会计量方法专题……

2. 图示部分回归图: avplot 与 avplots 命令

avplot 可以实现在控制 X_2 后,观测 yX_1 的关系。该命令的语句十分简洁:

 avplot indepvar [, avplot_options]

其中,

indepvar 是部分回归的解释变量

2.1 avplot 与 twoway scatter 异同分析

我们在第一部分介绍并用 Stata 展示了部分回归的基本原理。如果想利用 twoway scatter 命令绘制散点图展示 reg Y X1 X2 的结果,那么可以采用命令

twoway (scatter ey2 e12)(lfit ey2 e12)

结果如下

1.png

但是,运用 twoway scatter 直观展示回归结果并非效率之举,因为之前要先做回归,并保存结果。avplot 命令则可以一次实现上述操作。命令如下

reg Y X1 X2
avplot X1
2.png

我们会发现两幅图别无二致,但 avplot 命令生成的散点图包含了更多与回归结果有关的信息,例如系数、标准误以及 t-统计量。

2.2 一个更为具体的例子

下面,以一个例子来解释在实证中如何运用 avplot 命令。

use https://stats.idre.ucla.edu/stat/stata/webbooks/reg/crime

各变量的具体含义如下:

. d

variable name   type    format     label      variable label
------------------------------------------------------------------------------------------------------------
sid             float   %9.0g                 
state           str3    %9s                   
crime           int     %8.0g                 violent crime rate
murder          float   %9.0g                 murder rate
pctmetro        float   %9.0g                 pct metropolitan
pctwhite        float   %9.0g                 pct white
pcths           float   %9.0g                 pct hs graduates
poverty         float   %9.0g                 pct poverty
single          float   %9.0g                 pct single parent
------------------------------------------------------------------------------------------------------------

我们可以看到,这个数据主要记录了不同州的犯罪率的相关资料。

数据结构如下

. list in 1/10

     +-------------------------------------------------------------------------------+
     | sid   state   crime   murder   pctmetro   pctwhite   pcths   poverty   single |
     |-------------------------------------------------------------------------------|
  1. |   1      ak     761        9       41.8       75.2    86.6       9.1     14.3 |
  2. |   2      al     780     11.6       67.4       73.5    66.9      17.4     11.5 |
  3. |   3      ar  r593     10.2       44.7       82.9    66.3        20     10.7 |
  4. |   4      az     715      8.6       84.7       88.6    78.7      15.4     12.1 |
  5. |   5      ca    1078     13.1       96.7       79.3    76.2      18.2     12.5 |
     |-------------------------------------------------------------------------------|
  6. |   6      co     567      5.8       81.8       92.5    84.4       9.9     12.1 |
  7. |   7      ct     456      6.3       95.7         89    79.2       8.5     10.1 |
  8. |   8      de     686        5       82.7       79.4    77.5      10.2     11.4 |
  9. |   9      fl    1206      8.9         93       83.5    74.4      17.8     10.6 |
 10. |  10      ga     723     11.4       67.7       70.8    70.9      13.5       13 |
     +-------------------------------------------------------------------------------+

利用这个数据,我们希望探究州犯罪率 (crime) 的影响因素。crime 是 100,000 人中罪犯的个数。直觉来看,我们认为大都市比例 (pctmetro),贫穷(poverty),以及单亲父母比例(single)都会影响所在州的犯罪率(crime)。

然后,我们绘制散点图直观观测解释变量与被解释变量的关系。

scatter crime pctmetro, mlabel(state)
scatter crime pctwhite, mlabel(state)
scatter crime single, mlabel(state)
crime & pctmetropolitan

从这张图我们可以直观看出,一个州的大都市比例越高,那么犯罪率就越高。由此,我们预估,若将犯罪率 crime 对大都市比例 pctmetro 做回归,那么 pctmetro 的系数应该为正。

3.png

从这张图我们可以直观看出,一个州的贫穷人口比例越高,那么犯罪率就越高。由此,我们预估,若将犯罪率 crime 对贫穷人口比例 poverty 做回归,那么 poverty 的系数应该为正。

4.png

从这张图我们可以直观看出,一个州的单身父母比例越高,那么犯罪率就越高。由此,我们预估,若将犯罪率 crime 对单身父母比例 single 做回归,那么 single 的系数应该为正。

上述图表的绘制并未控制其他变量的影响,因此我们所得出的预估也只是粗糙的。比如,单身父母的产生可能源于较低的收入水平或者和生活地区条件有关。因此,如果控制了 poverty 以及 pctmetro 之后,crimesingle 的关系可能会发生变化。一个合理的猜想是,可能控制其他变量后,二者在图表中的相关性不会如此明显。

接下来,我们利用 reg 进行基本的回归分析。

. regress crime pctmetro poverty single

      Source |       SS           df       MS      Number of obs   =        51
-------------+----------------------------------   F(3, 47)        =     82.16
       Model |  8170480.21         3   2723493.4   Prob > F        =    0.0000
    Residual |  1557994.53        47  33148.8199   R-squared       =    0.8399
-------------+----------------------------------   Adj R-squared   =    0.8296
       Total |  9728474.75        50  194569.495   Root MSE        =    182.07

------------------------------------------------------------------------------
       crime |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
    pctmetro |   7.828935   1.254699     6.24   0.000     5.304806    10.35306
     poverty |   17.68024    6.94093     2.55   0.014     3.716893     31.6436
      single |   132.4081   15.50322     8.54   0.000     101.2196    163.5965
       _cons |  -1666.436    147.852   -11.27   0.000    -1963.876   -1368.996
------------------------------------------------------------------------------

上图所展示的回归结果基本符合我们通过观察散点图所做出的预判。pctmetro 的系数为 7.829,并且在 1% 的显著性水平上显著。其经济学含义为,当大都市比例增加 1% 时,犯罪率会增加 0.00783%。poverty 的系数为 17.680,并且在 5% 的显著性水平上显著。

其经济学含义为,当贫穷人口所占比例增加 1% 时,犯罪率会增加 0.0177%。single 的系数为 132.408,并且在 1% 的显著性水平上显著。其经济学含义为,当单身父母的比例增加 1% 时,犯罪率会增加 0.132%。

得到回归结果之后,我们绘制部分回归图,以期观测在控制其他变量后,犯罪率 crime 与各解释变量之间的关系。

avplot single, mlabel(state)
5.png

crimesingle 的部分回归图为例。我们可以看到,纵坐标为 crime 在控制其他变量 (povertypctmetro)之后的条件均值,而横坐标为控制其他变量(povertypctmetro)之后 single 的条件均值。

此外,我们可以发现,该表完美得展现了 crimesingle 部分回归的结果,不论是系数,标准误,或者 t-统计量,都与回归的结果完全一致。

我们再与散点图进行比较,可以发现,虽然基本趋势仍保持不变,但是散点图明显更为陡峭。这也说明之前的猜测是合理的。当控制其他变量后,直观来看,crimesingle 的相关性就不是那么明显了。

此处,介绍另一个好用的命令 avplots。该命令可以将不同的部分回归图合并为一张图表输出。如下,直接键入

avplots

我们可以得到下图。

6.png

这一张图输出了三张部分回归图。与 crimesingle 的部分回归图相同,crimepctmetro, poverty 的部分回归图分别完美展现了 crimepctmetro 以及 poverty 部分回归的结果。

3. 带置信区间的部分回归图 avciplotavciplots

若希望绘制带置信区间的部分回归图,那么可以利用 avciplotavciplots 命令。该命令的基本语法与 avplot 以及 avciplots 基本一致,只是允许绘制置信区间。

ssc install avciplot

运行如下命令,我们即可得到一张包含三个部分回归图的汇总图表。而每个部分回归图还绘制了置信区间。

avplots
7.png

如上图所示,红色虚线之间的部分则为置信区间。

4. 面板数据的部分回归图 xtavplot

处理面板数据时,我们需要考虑固定效应。因此,用 Stata 绘制面板数据的部分回归图时,我们选用的命令不同于上,而使用针对面板数据的命令,xtavplot。但其基本语句与 avplot 十分类似。

 xtavplot indepvar [, options]

其中,

indepvar 是部分回归的解释变量

generate (exvar eyvar) 允许对残差变量,也就是剔除控制变量影响后的变量,进行保存

ciunder 允许加入置信区间

ciplot() 允许特别设定置信区间的绘制方法

webuse nlswork

各变量的具体含义如下

. d
variable name   type    format     label      variable label
------------------------------------------------------------------------------------------------------------
idcode          int     %8.0g                 NLS ID
year            byte    %8.0g                 interview year
birth_yr        byte    %8.0g                 birth year
age             byte    %8.0g                 age in current year
race            byte    %8.0g      racelbl    race
msp             byte    %8.0g                 1 if married, spouse present
nev_mar         byte    %8.0g                 1 if never married
grade           byte    %8.0g                 current grade completed
collgrad        byte    %8.0g                 1 if college graduate
not_smsa        byte    %8.0g                 1 if not SMSA
c_city          byte    %8.0g                 1 if central city
south           byte    %8.0g                 1 if south
ind_code        byte    %8.0g                 industry of employment
occ_code        byte    %8.0g                 occupation
union           byte    %8.0g                 1 if union
wks_ue          byte    %8.0g                 weeks unemployed last year
ttl_exp         float   %9.0g                 total work experience
tenure          float   %9.0g                 job tenure, in years
hours           int     %8.0g                 usual hours worked
wks_work        int     %8.0g                 weeks worked last year
ln_wage         float   %9.0g                 ln(wage/GNP deflator)
------------------------------------------------------------------------------------------------------------
Sorted by: idcode  year
     Note: Dataset has changed since last saved.

我们可以看到该数据包含了受访者的基本个人信息,教育信息以及工作信息。数据结构如下。

我们希望探究工资与工作年限的关系,并利用固定效应模型进行回归分析。

. xtreg ln_w ttl_exp age c.age#c.age not_smsa south, fe

Fixed-effects (within) regression               Number of obs     =      1,000
Group variable: idcode                          Number of groups  =        163

R-sq:                                           Obs per group:
     within  = 0.1679                                         min =          1
     between = 0.2150                                         avg =        6.1
     overall = 0.1843                                         max =         15

                                                F(5,832)          =      33.57
corr(u_i, Xb)  = 0.1188                         Prob > F          =     0.0000

------------------------------------------------------------------------------
     ln_wage |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     ttl_exp |    .042675   .0055722     7.66   0.000     .0317377    .0536124
         age |   .0126192   .0131824     0.96   0.339    -.0132556    .0384939
             |
 c.age#c.age |  -.0003629   .0002166    -1.68   0.094    -.0007881    .0000623
             |
    not_smsa |  -.0487662   .0714594    -0.68   0.495    -.1890281    .0914957
       south |  -.0905245   .0997515    -0.91   0.364    -.2863187    .1052696
       _cons |   1.535607   .1934652     7.94   0.000      1.15587    1.915345
-------------+----------------------------------------------------------------
     sigma_u |  .34777879
     sigma_e |  .27590435
         rho |  .61373148   (fraction of variance due to u_i)
------------------------------------------------------------------------------
F test that all u_i=0: F(162, 832) = 7.55                    Prob > F = 0.0000

在这个固定效应回归中,我们控制了年龄 (age),年龄的交互(c.age#c.age),非来自大都市的虚拟变量(not_smsa)以及来自南方的虚拟变量(south)。

回归结果如上所示。我们可以看到,工作年限(ttl_exp)的系数为 0.043,且在 1% 的显著性水平上显著。其经济学含义为,当工作年限增加 1 年时,工资增加 4.27%。这说明,工作年限与工资水平显著正向相关。

下面,我们用 xtavplot 命令来绘制该面板数据的部分回归图。因为我们最关心的解释变量就工作年限(ttl_exp),因此绘制一张部分回归图即可。

xtavplot ttl_exp, ciunder
8.png

如上图所示。其纵轴为控制了其他控制变量后,ln(wage/GNP deflator) 的条件均值。其横轴为控制了其他控制变量后,total work experience 的条件均值。

红色实线为拟合的部分回归线。我们可以看到,其系数、标准误以及 t-统计量都与部分回归中 ttl_exp 的一致。

通过设置 ciunder,部分回归图可以加入置信区间,即为图中的红色虚线部分。

5. 总结

这篇推文介绍了如何在 Stata 中绘制部分回归图。具体而言,我们介绍了三个命令:avplotavciplot,以及 xtavplot

连享会计量方法专题……

参考文献

关于我们

联系我们

往期精彩推文

Stata连享会   计量专题 || 精品课程 || 简书推文 || 公众号合集

点击查看完整推文列表

image
.md)
上一篇下一篇

猜你喜欢

热点阅读