Lasso一下:再多的控制变量和工具变量我也不怕-T217

发布时间:2021-05-20 阅读 1218

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

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

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

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

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

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者: 徐云娇 (厦门大学)
邮箱: jilyo@stu.xmu.edu.cn

编者按:本文主要摘译自下文,特此致谢!
Source: The Stata Lasso Page -Link-


目录


1. 背景介绍

在样本量有限的情况下,如果模型中有很多个控制变量,或有很多个工具变量,或者二者兼而有之,我们该如何处理?

本文介绍的 pdslasso 以及 ivlasso 命令适用于包含高维控制变量和工具变量的线性模型。它可以帮助我们选择合适的控制变量 (pdslasso) 或工具变量 (ivlasso),避免遗漏变量偏误与模型过拟合问题,从而得到研究者真正感兴趣的因果效应。

1.1 众多工具变量

考虑以下模型:

其中,yi 是因变量,di 是内生解释变量,zi 是 pz 维度的工具变量。并且,pz 可能非常大,甚至超过样本个数,因此 zi 也被称为高维向量。对于上式,我们要估计内生变量 di 对结果变量 yi 的因果效应。

工具变量的选择对于系数 α 的估计至关重要,但由于事前并不知道如何选择合理的工具变量,当可选择的工具变量过多时,我们往往会显得无所适从。

Belloni 等 (2012) 提出可以用 Lasso 方法为 di=ziδ+ui 设置惩罚项,进而选择合适的工具变量来预测 di。此外,对于最佳估计式 di^=ziδ^,参数 δ^ 可以是用 Lasso、平方根 Lasso、或 Post-Lasso 估计量。

1.2 众多控制变量

接下去,我们考虑假如 di 是外生变量,但模型中存在众多控制变量的情况:

在上式中,xi 是 px 维度的高维向量。同样地,我们不知道哪些是 “正确的” 控制变量。这又会带来以下两个问题:

  • 选择了过少的控制变量,导致遗漏变量偏差;
  • 选择了过多的控制变量,导致了模型过拟合。

Belloni 等 (2014) 提出可以通过运用两次 Lasso,即 PDS (post-double-selection) 方法来选择控制变量。具体来看:

  • Step1:以 yi 作为因变量,xi 作为回归项进行 Lasso 回归;
  • Step2:以 di 作为因变量,xi 作为回归项进行 Lasso 回归。Lasso 估计量会得到一个稀疏解 (sparse solution),即很多回归项的系数都为 0。在此基础上,OLS 回归中选择的控制变量包括 Step1 和 Step2 中被选中的变量。

1.3 众多工具变量与控制变量

最后,考虑以下模型:

其中,pxN 和 pzN,即工具变量与控制变量个数都十分众多。在这种情况下,Chernozhukov 等 (2015) 也介绍了对应的方法,有兴趣的读者可以自行阅读,本文不作过多介绍。

接下来,本文将介绍由 Ahrens 等 (2018) 编写的命令 pdslassoivlasso,它们可以帮助我们在 Stata 中快速实现上述过程。

2. 命令介绍

2.1 pdslasso 命令

*命令安装
ssc install pdslasso, replace //同时安装 pdslasso 和 ivlasso
*命令语法
pdslasso depvar regressors (hd_controls) [weight] [if exp] [in range] 
         [ , partial(varlist) pnotpen(varlist) aset(varlist) post(method) 
         robust cluster(var) fe noftools rlasso[(name)] sqrt noisily 
         loptions(options) olsoptions(options) noconstant ]

Note: pdslasso requires rlasso and ivreg2 to be installed.
  • depvar:模型的被解释变量;
  • regressors:模型的解释变量;
  • hd_controls:控制变量;
  • partial:lasso 估计中被排除的变量;
  • pnotpen:lasso 估计中不被惩罚的变量;
  • aset:post-lasso 估计中始终被保留的变量;
  • post:可选 pds,lasso 或 plasso;
  • robust:异方差稳健标准误;
  • cluster:聚类标准误;
  • bw:HAC/AC 标准误;
  • kernel:用于确定 HAC/AC 惩罚项载荷;
  • fe:固定效应模型 (需要事先设定 xtset);
  • noftools:很少使用;
  • rlasso:存储和列示中间估计结果;
  • sqrt:平方根 lasso;
  • noisily:列示每一步中间估计结果;
  • loptions(options)rlasso 估计的可选项;
  • olsoptions(options):OLS 估计的可选项;
  • noconstant:不要常数项。

2.2 ivlasso 命令

ivlasso depvar regressors [(hd_controls)] (endog=instruments) 
        [if exp] [in range] [ , partial(varlist) pnotpen(varlist) 
        aset(varlist) post(method) robust cluster(var) fe noftools 
        rlasso[(name)] sqrt noisily loptions(options) ivoptions(options) 
        first idstats sscset ssgamma(real) ssgridmin(real) ssgridmax(real) 
        ssgridpoints(integer 100) ssgridmat(name) noconstant]

Note: ivlasso also requires ranktest.
  • ivoptions(options):IV 回归的选项;
  • first:存储和列示 2SLS 的第一阶段估计结果;
  • idstats:进行 2SLS 的弱工具变量检验;
  • sscset:计算弱工具变量稳健置信集;
  • ssgamma:弱工具变量稳健检验的显著性与置信区间;
  • ssgridmin:网格搜索的最小值;
  • ssgridmax:网格搜索的最大值;
  • ssgridpoints:网格搜索的点数;
  • ssgridmat:网格搜索矩阵的设置。

3. Stata 实例

在这一节中,我们利用 Acemoglu 等 (2001) 关于「殖民起源」的论文数据进行演示。其中,我们感兴趣的是制度 (avexpr) 对收入 (logpgp95) 的影响。

首先,忽略内生性问题进行最简单的 OLS 回归。

. use "https://statalasso.github.io/dta/AJR.dta", clear
. reg logpgp95 avexpr

   Source |      SS           df       MS      Number of obs   =        64
----------+---------------------------------   F(1, 62)        =     72.82
    Model | 37.0420118         1  37.0420118   Prob > F        =    0.0000
 Residual | 31.5397067        62  .508704946   R-squared       =    0.5401
----------+---------------------------------   Adj R-squared   =    0.5327
    Total | 68.5817185        63  1.08859871   Root MSE        =    .71324
--------------------------------------------------------------------------
 logpgp95 |     Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
----------+---------------------------------------------------------------
   avexpr |     0.522      0.061     8.53   0.000        0.400       0.644
    _cons |     4.660      0.409    11.41   0.000        3.844       5.477
--------------------------------------------------------------------------

然后,加入更多的控制变量去缓解遗漏变量的问题。具体地,这里一共使用了 24 个控制变量。虽然听上去并没有很多,但由于观测值只有 64 个,所以我们还是需要对控制变量进行合理地选取。利用 pdslasso 命令进行回归:

. pdslasso logpgp95 avexpr (lat_abst edes1975 avelf temp* humid* steplow-oilres)

Estimation results:
Specification:
Regularization method:         lasso
Penalty loadings:              homoskedastic
Number of observations:        64
Exogenous (1):                 avexpr
High-dim controls (24):        lat_abst edes1975 avelf temp1 temp2 
                               temp3 temp4 temp5 humid1 humid2 humid3
                               humid4 steplow deslow stepmid desmid 
                               drystep drywint landlock  goldm iron 
                               silv zinc oilres
Selected controls (3):         edes1975 avelf zinc
Unpenalized controls (1):      _cons

Structural equation:
OLS using CHS lasso-orthogonalized vars
-----------------------------------------------------------------
 logpgp95 |  Coef.  Std. Err.    z    P>|z|  [95% Conf. Interval]
----------+------------------------------------------------------
   avexpr |  0.419     0.054   7.81   0.000     0.314       0.524
-----------------------------------------------------------------

OLS using CHS post-lasso-orthogonalized vars
-----------------------------------------------------------------
 logpgp95 |  Coef.  Std. Err.    z    P>|z|  [95% Conf. Interval]
----------+------------------------------------------------------
   avexpr |  0.391     0.057   6.81   0.000     0.279       0.504
-----------------------------------------------------------------

OLS with PDS-selected variables and full regressor set
------------------------------------------------------------------
 logpgp95 |  Coef.  Std. Err.     z    P>|z|  [95% Conf. Interval]
----------+-------------------------------------------------------
   avexpr |  0.391     0.056    6.97   0.000     0.281       0.501
 edes1975 |  0.009     0.003    2.87   0.004     0.003       0.015
    avelf | -0.997     0.247   -4.03   0.000    -1.482      -0.513
     zinc | -0.008     0.028   -0.28   0.778    -0.063       0.047
    _cons |  5.764     0.377   15.27   0.000     5.025       6.504
------------------------------------------------------------------
Standard errors and test statistics valid for the following variables only:
    avexpr
------------------------------------------------------------------

这里总共列示了三个不同的估计结果,它们分别是由三个不同的估计方法得到的。

考虑到制度 (avexpr) 存在的内生性问题,Acemoglu 等 (2001) 将欧洲早期殖民者在各殖民地的死亡率 (logem4) 作为制度的工具变量。因此,我们将工具变量和所有控制变量纳入模型回归:

. pdslasso logpgp95 lat_abst edes1975 avelf temp* humid* ///
>          steplow-oilres (avexpr=logem4)

Estimation results:
Specification:
Regularization method:           lasso
Penalty loadings:                homoskedastic
Number of observations:          64
Exogenous (24):                  lat_abst edes1975 avelf temp1 temp2 
                                 temp3 temp4 temp5 humid1 humid2 humid3 
                                 humid4 steplow deslow stepmid desmid 
                                 drystep drywint landlock goldm iron 
                                 silv zinc oilres
Endogenous (1):                  avexpr
Unpenalized controls (1):        _cons
High-dim instruments (1):        logem4
Selected instruments (1):        logem4

Structural equation:
IV using CHS lasso-orthogonalized vars
------------------------------------------------------------------
 logpgp95 |   Coef.  Std. Err.    z    P>|z|  [95% Conf. Interval]
----------+-------------------------------------------------------
   avexpr |   1.174     0.317   3.71   0.000     0.554       1.795
 lat_abst |  -3.522     2.234  -1.58   0.115    -7.901       0.856
 edes1975 |  -0.004     0.009  -0.44   0.658    -0.021       0.013
    avelf |  -2.058     0.625  -3.29   0.001    -3.284      -0.832
    temp1 |  -0.053     0.205  -0.26   0.797    -0.454       0.349
    temp2 |  -0.072     0.066  -1.10   0.271    -0.201       0.056
    temp3 |   0.079     0.085   0.93   0.355    -0.088       0.245
    temp4 |   0.039     0.090   0.43   0.666    -0.137       0.214
    temp5 |   0.004     0.046   0.09   0.931    -0.087       0.095
   humid1 |  -0.025     0.030  -0.84   0.399    -0.083       0.033
   humid2 |   0.046     0.042   1.09   0.275    -0.036       0.128
   humid3 |   0.032     0.028   1.14   0.255    -0.023       0.086
   humid4 |  -0.029     0.033  -0.87   0.383    -0.094       0.036
  steplow |  -0.267     0.314  -0.85   0.395    -0.883       0.349
   deslow |   0.636     0.442   1.44   0.150    -0.230       1.502
  stepmid |   0.259     0.859   0.30   0.764    -1.426       1.943
   desmid |   1.912     1.211   1.58   0.114    -0.461       4.285
  drystep |   0.729     0.566   1.29   0.198    -0.380       1.838
  drywint |   6.507     8.563   0.76   0.447   -10.277      23.290
 landlock |   1.168     0.688   1.70   0.089    -0.180       2.516
    goldm |  -0.083     0.179  -0.46   0.643    -0.434       0.268
     iron |  -0.258     0.148  -1.74   0.082    -0.549       0.032
     silv |  -0.048     0.101  -0.48   0.633    -0.247       0.150
     zinc |   0.173     0.182   0.95   0.341    -0.183       0.529
   oilres |  -0.000     0.000  -0.47   0.636    -0.000       0.000
------------------------------------------------------------------

IV using CHS post-lasso-orthogonalized vars
------------------------------------------------------------------
 logpgp95 |   Coef.  Std. Err.    z    P>|z|  [95% Conf. Interval]
----------+-------------------------------------------------------
   avexpr |   1.066     0.249   4.28   0.000     0.577       1.554
 lat_abst |  -3.199     1.962  -1.63   0.103    -7.045       0.647
 edes1975 |  -0.002     0.007  -0.31   0.759    -0.017       0.012
    avelf |  -1.955     0.546  -3.58   0.000    -3.024      -0.885
    temp1 |  -0.022     0.180  -0.12   0.903    -0.374       0.330
    temp2 |  -0.069     0.059  -1.17   0.243    -0.184       0.047
    temp3 |   0.066     0.075   0.89   0.374    -0.080       0.213
    temp4 |   0.023     0.078   0.30   0.765    -0.130       0.176
    temp5 |   0.002     0.042   0.05   0.962    -0.079       0.083
   humid1 |  -0.023     0.026  -0.89   0.375    -0.075       0.028
   humid2 |   0.048     0.037   1.27   0.204    -0.026       0.121
   humid3 |   0.032     0.025   1.26   0.206    -0.017       0.081
   humid4 |  -0.027     0.030  -0.92   0.358    -0.086       0.031
  steplow |  -0.280     0.281  -1.00   0.319    -0.832       0.271
   deslow |   0.624     0.396   1.58   0.115    -0.152       1.400
  stepmid |   0.264     0.771   0.34   0.732    -1.247       1.774
   desmid |   1.714     1.057   1.62   0.105    -0.358       3.787
  drystep |   0.615     0.487   1.26   0.207    -0.339       1.570
  drywint |   5.099     7.474   0.68   0.495    -9.551      19.748
 landlock |   1.016     0.586   1.73   0.083    -0.134       2.165
    goldm |  -0.056     0.157  -0.36   0.722    -0.364       0.252
     iron |  -0.232     0.129  -1.80   0.072    -0.485       0.021
     silv |  -0.041     0.090  -0.46   0.648    -0.218       0.136
     zinc |   0.149     0.160   0.93   0.352    -0.165       0.464
   oilres |  -0.000     0.000  -0.38   0.701    -0.000       0.000
------------------------------------------------------------------

IV with PDS-selected variables and full regressor set
------------------------------------------------------------------
 logpgp95 |   Coef.  Std. Err.    z    P>|z|  [95% Conf. Interval]
----------+-------------------------------------------------------
   avexpr |   0.713     0.165   4.32   0.000     0.389       1.036
 lat_abst |  -2.520     1.259  -2.00   0.045    -4.987      -0.053
 edes1975 |   0.003     0.005   0.54   0.587    -0.007       0.012
    avelf |  -1.606     0.356  -4.51   0.000    -2.304      -0.908
    temp1 |   0.103     0.119   0.87   0.387    -0.130       0.336
    temp2 |  -0.069     0.038  -1.82   0.069    -0.144       0.005
    temp3 |  -0.006     0.052  -0.11   0.915    -0.108       0.097
    temp4 |  -0.031     0.051  -0.61   0.540    -0.132       0.069
    temp5 |  -0.007     0.027  -0.25   0.804    -0.060       0.046
   humid1 |  -0.008     0.018  -0.47   0.637    -0.043       0.027
   humid2 |   0.020     0.027   0.75   0.454    -0.033       0.073
   humid3 |   0.022     0.017   1.31   0.190    -0.011       0.055
   humid4 |  -0.020     0.019  -1.05   0.292    -0.058       0.018
  steplow |  -0.301     0.182  -1.65   0.099    -0.658       0.056
   deslow |   0.497     0.260   1.91   0.056    -0.013       1.007
  stepmid |   0.254     0.500   0.51   0.611    -0.725       1.233
   desmid |   1.358     0.675   2.01   0.044     0.035       2.681
  drystep |   0.325     0.311   1.05   0.296    -0.285       0.936
  drywint |   2.879     4.767   0.60   0.546    -6.465      12.223
 landlock |   0.734     0.369   1.99   0.047     0.011       1.457
    goldm |  -0.013     0.100  -0.13   0.899    -0.209       0.184
     iron |  -0.147     0.084  -1.76   0.079    -0.312       0.017
     silv |  -0.032     0.058  -0.55   0.581    -0.147       0.082
     zinc |   0.103     0.103   1.00   0.319    -0.099       0.305
   oilres |   0.000     0.000   0.03   0.976    -0.000       0.000
    _cons |   3.686     1.482   2.49   0.013     0.782       6.590
------------------------------------------------------------------
Standard errors and test statistics valid for the following variables only:
    avexpr lat_abst edes1975 avelf temp1 temp2 temp3 temp4 temp5 humid1 humid2
    humid3 humid4 steplow deslow stepmid desmid drystep
    drywint landlock goldm iron silv zinc oilres
------------------------------------------------------------------

纳入全部的控制变量显然过多了,所以我们利用 ivlasso 命令来选取部分的控制变量进行估计:

. ivlasso logpgp95      ///
   (lat_abst edes1975 avelf temp* humid* steplow-oilres) ///
   (avexpr=logem4)

Estimation results:
Specification:
Regularization method:         lasso
Penalty loadings:              homoskedastic
Number of observations:        64
Endogenous (1):                avexpr
High-dim controls (24):        lat_abst edes1975 avelf temp1 temp2 
                               temp3 temp4 temp5 humid1 humid2 humid3 
                               humid4 steplow deslow stepmid desmid 
                               drystep drywint landlock goldm iron 
                               silv zinc oilres
Selected controls, PDS (3):    edes1975 avelf zinc
Selected controls, CHS-L (7):  edes1975 avelf temp2 humid2 drystep iron zinc
Selected controls, CHS-PL (7): edes1975 avelf temp2 humid2 drystep iron zinc
Unpenalized controls (1):      _cons
High-dim instruments (1):      logem4
Selected instruments (1):      logem4

Structural equation:
IV using CHS lasso-orthogonalized vars
-----------------------------------------------------------------
 logpgp95 |  Coef.  Std. Err.    z    P>|z|  [95% Conf. Interval]
----------+------------------------------------------------------
   avexpr |  0.779     0.159   4.90   0.000     0.467       1.090
-----------------------------------------------------------------

IV using CHS post-lasso-orthogonalized vars
-----------------------------------------------------------------
 logpgp95 |  Coef.  Std. Err.    z    P>|z|  [95% Conf. Interval]
----------+------------------------------------------------------
   avexpr |  1.063     0.351   3.03   0.002     0.375       1.750
-----------------------------------------------------------------

IV with PDS-selected variables and full regressor set
------------------------------------------------------------------
 logpgp95 |  Coef.  Std. Err.     z    P>|z|  [95% Conf. Interval]
----------+-------------------------------------------------------
   avexpr |  0.841     0.249    3.38   0.001     0.354       1.329
 edes1975 |  0.002     0.006    0.34   0.733    -0.009       0.013
    avelf | -0.878     0.356   -2.47   0.014    -1.575      -0.181
     zinc | -0.074     0.053   -1.40   0.160    -0.177       0.029
    _cons |  2.976     1.555    1.91   0.056    -0.072       6.024
------------------------------------------------------------------
Standard errors and test statistics valid for the following variables only:
    avexpr
------------------------------------------------------------------

4. 结语

本文介绍的 pdslasso 以及 ivlasso 命令适用于包含高维控制变量和工具变量的线性模型。它可以帮助我们选择合适的控制变量 (pdslasso) 或工具变量 (ivlasso),避免遗漏变量偏误与模型过拟合问题,从而得到研究者真正感兴趣的因果效应。

5. 参考资料

  • Acemoglu D, Johnson S, Robinson J A, et al. 2001. The Colonial Origins of Comparative Development: An Empirical Investigation. The American Economic Review 91(5):1369-1401. -PDF-
  • Ahrens, A., Hansen, C.B., Schaffer, M.E. 2018. pdslasso and ivlasso: Programs for post-selection and post-regularization OLS or IV estimation and inference. -Link-
  • Belloni, A., Chen, D., Chernozhukov, V. and Hansen, C. 2012. Sparse models and methods for optimal instruments with an application to eminent domain. Econometrica 80(6):2369-2429. -PDF-
  • Belloni, A., Chernozhukov, V. and Hansen, C. 2014. Inference on treatment effects after selection among high-dimensional controls. Review of Economic Studies 81:608-650. -PDF-
  • Chernozhukov, V. Hansen, C., and Spindler, M. 2015. Post-selection and post-regularization inference in linear models with many controls and instruments. American Economic Review: Papers & Proceedings 105(5):486-490. -PDF-

6. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh lianxh lasso 高维 筛选, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

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

课程主页

课程主页

关于我们

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

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

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

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

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