Stata:如何理解回归中的控制

发布时间:2022-11-20 阅读 3609

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:张铭鑫 (复旦大学)
邮箱746548383@qq.com

编者按:以下作者的智慧就像盛开的花朵,而我只是一只沾染了花粉的小小蜜蜂。

  • What does 'Controlling for' mean in regression?
  • J.M.伍德里奇. 计量经济学导论:现代观点[M]. 中国人民大学出版社, 2003.
  • Judd C M, McClelland G H, Ryan C S. Data analysis: A model comparison approach to regression, ANOVA, and beyond[M]. Routledge, 2017.


目录


1. 问题简介

在经历数据收集、清洗、回归分析之后,我们终于拿到了朝思暮想的回归结果,但是马上会遇到一个新的问题:如何解读回归结果中的系数?

如果足够幸运 (当然通常都没有这么幸运),我们能够用一个简单回归模型分析感兴趣的问题。例如,在模型 (1) 的回归结果中,回归系数估计值 β1^ 的含义是相当明显的:x1 变化一个单位对 y 造成的影响。

但是在更普遍的情形下,单变量回归模型的解释力往往是不足的,因此我们需要在回归模型中加入一系列控制变量。为了保持讨论的简洁性,我们主要考虑模型两个解释变量的情况。在回归模型 (2) 中,β1^ 的含义就更加复杂:在控制 x2 不变的条件下,x1 变化一个单位对 y 造成的影响。

上述两个模型中 β1^ 系数含义的主要区别是:模型 (2) 强调对回归方程中另一个解释变量 x2 的控制,但是模型 (1) 没有控制其他因素。在文章中写下“在控制了其他因素之后,本文发现……”是没有什么难度的,真正的问题是:当我们宣称自己控制了其他因素的时候,我们在表达什么?

2. 理解控制

2.1 控制的含义

控制意味着约束由所有解释变量共享的对被解释变量的解释力。为了参悟这一句禅语,不妨考虑如下例子:我们想要探究一个小学生的身高 (height) 和年龄 (age) 对体重 (weight) 的影响,根据生活常识我们可以很容易做出两个假设:

  • 身高更高的小学生体重更大;
  • 年龄更大的小学生体重更大。

为了验证上述两个假设,我们可能会自然地期望通过回归方程 (3) 与 (4) 对我们已经收集到的数据进行回归分析,并根据回归系数的符号和显著性得出结论。

但是这种做法并不能保证我们得到的结论是正确的,相反,在绝大多数情况下这样得到的结论都是错误的:只有当我们相信一个小学生的年龄和他的身高无关时 (这显然无稽之谈),我们才能通过上述两个模型得到正确的结论。显然,当小学生的年龄和身高相关时,模型 (3) 与模型 (4) 都存在严重的内生性问题,因此回归系数 α^1 与 γ^1 一定是有偏的。

如果年龄与身高之间并非完全线性相关,那么虽然我们能够猜到年龄更大的学生可能身高更高,但是这两者之间不存在完全的线形关系,即知道一个学生的年龄我们就能准确地知道他的身高 (或者相反),那么一个更合理的模型应当如模型 (5) 所示。

在确定年龄 (age) 与身高 (height) 相关的条件下,我们可以画出如下图所示的三变量因果图。年龄 (age) 与身高 (height) 之间的关系由 Effect 3 与 Effect 4 所描述。

在该图中,我们真正感兴趣的 Effect 1 (β1) 与 Effect 2 (β2) 的大小,但是由于 Effect 3 和 Effect 4 的存在,我们难以直接获得对 Effect 1 和 Effect 2 的度量:当身高 (height) 变动一单位时,体重 (weight) 的变动由两部分组成,一部分为来自于 Effect 1,另一部分则来自于由于身高变动所导致的年龄 (age) 变动最终带来的体重的变动,即 Effect 3 * Effect 2。

至此我们能够清晰地发现:由于年龄与身高之间共享一部分用以解释体重的信息 (该信息由 Effect 3 和 Effect 4 传递),我们难以在不对两个变量中的某一方 (例如身高) 进行约束的条件下得到另一方的直接影响 (例如年龄)。因此,为了得到直接效应,我们必须约束年龄与身高之间所共享的对体重的解释力。

在方程 (5) 的回归结果中:β1^ 代表着在控制年龄和常数项的条件下,身高增加一单位对体重造成的影响;β2^ 代表着在控制身高和常数项的条件下年龄增加一单位对体重造成的影响。

2.2 控制的实现

2.2.1 实验室条件下的实现

在实验室条件下,如果我们感兴趣的是身高对体重的直接影响,就能够在保持控制年龄不变的条件下,通过改变一单位身高的值来直接观测所对应的体重变化,从而直接获得 Effect 1 的大小。注意此时由于年龄是一个固定的值,因此 Effect 2、Effect 3 与 Effect 4 三条机制均被截断,所以此时体重的所有变化都归为身高的效应 Effect 1。

2.2.2 非实验室条件下的实现

对于经济学家而言,情况往往比实验室条件下更复杂:我们既不能随意控制学生的身高,也不能控制学生的年龄,我们拥有的只是一个观察样本数据库。因此上一小节中那种趋于理想条件下的控制方法也就失去了用场。

不过经济学有经济学的办法。既然我们的目的是要约束解释变量之间所共享的,对被解释变量的解释力所造成的影响,那么一个更“计量经济学”的办法是:从我们感兴趣的被解释变量和解释变量中,直接剔除我们希望加以控制的变量所包含的信息,由此得到不能由控制变量所解释的解释变量不能由控制变量所解释的被解释变量之间的关系。

假设感兴趣的是学生身高对体重的影响,那么根据我们对于“控制”的理解,我们需要分别从学生的身高和体重中剔除由学生的年龄所决定的部分从而达到约束效果。具体步骤如下:

首先,我们对方程 (4) 进行回归,从而得到回归系数 γ1^ 与 γ2^,在此基础上我们就能得到体重的拟合值:

不难看出,weight^ 代表着由常数项和年龄完全决定的那部分体重,那么要从真实的体重 (weight) 中剔除年龄的影响只需要将两项相减,即:

weight~ 就是不能由解释变量 age 以及常数项解释的那一部分体重。

其次,我们对方程 (6) 进行回归,从而得到回归系数 θ^0 与 θ^1,进而通过相同的思路得到身高的拟合值:

进一步,从真实的身高中剔除由年龄决定的那一部分,即:

height~ 就是不能由解释变量 age 以及常数项解释的那一部分身高。

最后,我们只需要估计方程 (7),就能得到回归系数 η1^,即在控制年龄变量和常数项的条件下,身高的一单位变化对体重造成的影响。对比模型 (5) 的回归系数 β1^ 解读,我们能够发现他们的定义是完全相同的。因此,如果对于控制的理解是正确的,那么在相同的数据集中,我们一定能够预期 β1^=η1^

3. Stata 实例

我们所使用的数据来自 McClelland 等 (2008),该数据集包含 19 名中学生的身高 (height)、年龄 (age)、性别 (sex) 和体重 (weight) 信息。

3.1 多变量直接回归

首先,我们使用模型 (5) 直接进行回归,并观察回归系数。在回归结果中,我们得到了系数 β1^=3.151 以及 β2^=2.746。在控制常数项以及年龄的条件下,身高每增加一单位将会使得体重增加 3.151 个单位;在控制常数项以及身高的条件下,年龄每增加一单位将会使得体重增加 2.746 个单位。

. cnssc install lxhuse, replace // 安装命令
. lxhuse student_weight_height_age.dta, clear

. * 多变量直接回归
. reg weight height age, cformat(%9.3f)

      Source |       SS           df       MS      Number of obs   =        19
-------------+----------------------------------   F(2, 16)        =     19.33
       Model |  6602.91288         2  3301.45644   Prob > F        =    0.0001
    Residual |  2732.82396        16  170.801497   R-squared       =    0.7073
-------------+----------------------------------   Adj R-squared   =    0.6707
       Total |  9335.73684        18  518.652047   Root MSE        =    13.069
------------------------------------------------------------------------------
      weight | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
      height |      3.151      1.071     2.94   0.010        0.880       5.421
         age |      2.746      3.567     0.77   0.453       -4.815      10.307
       _cons |   -134.430     39.725    -3.38   0.004     -218.643     -50.216
------------------------------------------------------------------------------

3.2 逐步回归

为了检验我们对于控制的理解是否正确,我们进行逐步回归。在最终的回归结果中,回归系数为 η1^=3.151。通过比较直接从多元回归中得到的系数 β1^ 与从分步回归中得到的系数 η1^,我们能够发现 β1^=η1^。这说明我们对控制的理解是正确的*。

. * 首先从体重剔除年龄的影响
. reg weight age, cformat(%9.3f)

      Source |       SS           df       MS      Number of obs   =        19
-------------+----------------------------------   F(1, 17)        =     20.69
       Model |  5124.49111         1  5124.49111   Prob > F        =    0.0003
    Residual |  4211.24573        17  247.720337   R-squared       =    0.5489
-------------+----------------------------------   Adj R-squared   =    0.5224
       Total |  9335.73684        18  518.652047   Root MSE        =    15.739
------------------------------------------------------------------------------
      weight | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
         age |     11.304      2.485     4.55   0.000        6.060      16.547
       _cons |    -50.493     33.290    -1.52   0.148     -120.729      19.743
------------------------------------------------------------------------------

. predict weight_hat
. gen weight_tilde = weight - weight_hat
 
. * 其次从身高中剔出年龄的影响
. reg height age, cformat(%9.3f)

      Source |       SS           df       MS      Number of obs   =        19
-------------+----------------------------------   F(1, 17)        =     33.78
       Model |  295.902207         1  295.902207   Prob > F        =    0.0000
    Residual |  148.935765        17  8.76092736   R-squared       =    0.6652
-------------+----------------------------------   Adj R-squared   =    0.6455
       Total |  444.837972        18  24.7132206   Root MSE        =    2.9599
------------------------------------------------------------------------------
      height | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
         age |      2.716      0.467     5.81   0.000        1.730       3.702
       _cons |     26.641      6.261     4.26   0.001       13.433      39.850
------------------------------------------------------------------------------

. predict height_hat
. gen height_tilde = height - height_hat
  
. * 最后执行简单回归
. reg weight_tilde height_tilde, nocon cformat(%9.3f)

      Source |       SS           df       MS      Number of obs   =        19
-------------+----------------------------------   F(1, 18)        =      9.74
       Model |  1478.42127         1  1478.42127   Prob > F        =    0.0059
    Residual |  2732.82509        18  151.823616   R-squared       =    0.3511
-------------+----------------------------------   Adj R-squared   =    0.3150
       Total |  4211.24636        19  221.644545   Root MSE        =    12.322
------------------------------------------------------------------------------
weight_tilde | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
height_tilde |      3.151      1.010     3.12   0.006        1.029       5.272
------------------------------------------------------------------------------

4. 总结

控制意味着约束由所有解释变量所共享的对被解释变量的解释力。在实验室条件下,我们能够通过固定控制变量的值来实现控制;在非实验室条件下,我们能够通过分别从被解释变量与解释变量中剔除由控制变量决定的信息来实现控制。在经济学的语境下,直接使用多元回归模型得到的系数与通过分步回归放的得到的回归系数是相同的。

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 控制变量, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh