Stata:高度共线性情况下的IV估计-pariv

发布时间:2022-12-08 阅读 721

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下载 - 推文合集

作者:康瑜欣 (贵州财经大学)
邮箱kang_haisenky@163.com

编者按:本文主要摘译自下文,特此致谢!
Source:Young, A., 2022, Nearly collinear robust procedures for 2sls estimation, working paper. -PDF-


目录


1. 引言

在 Stata 的应用过程中,研究者常常依赖程序对变量间的共线性进行筛选与剔除。但 Stata 程序在进行共线性识别时存在所谓“识别范围”,即有可能存在一些程序看来“不足为虑”的共线性问题,但却足以影响到参数估计的精确性。

当变量间存在高度共线性时,参数估计程序中矩阵运算的浮点数进位差会被放大,造成参数估计结果对一些与实际经济无关的因素敏感 (比如变量顺序或数据顺序)。这一情况在两阶段最小二乘法 (2SLS) 的估计中更为明显,因为 Stata 相关程序进行运算时,并没有严格地假设矩阵逆运算之后与原矩阵的内积为精确的单位阵。

据此,本推文介绍了 Young (2022) 所提出的,适用于高度共线性下的稳健 2SLS 估计方法,以及其在 Stata 内的实现代码与过程。

2. 2SLS 估计方法

2.1 经典的 2SLS 估计方法

工具变量估计方法通常规范地通过两阶段最小二乘法进行表示:

其中 y 是被解释变量,Y 是模型中的内生变量,X1 与 X2 均为外生变量,并且 X2 是工具变量,u 和 V 分别为两个阶段中的扰动项。在满足变量间无共线性假设的情况下,β 的估计值可由下式得出:

当矩阵 Z 中的变量存在高度共线性时,由程序计算的 (ZZ)1 就不再接近 ZZ 真实的逆矩阵,会导致最终得到的 β^ 出现偏误。

2.2 高度共线性下稳健的 2SLS 估计方法

对于经典 2SLS 估计方法中出现的误差,Young (2022) 通过下面的思路提出了分组运行 2SLS 的改进方式。

实际上,在经典 2SLS 估计方法中,很多矩阵计算操作都可以转化为求解 Ax=b,其中 x 与 b 为向量,A 为对称矩阵。相对于求矩阵的逆,求解线性方程组 Ax=b 能在较少步骤中完成,因此也就避免了在多次重复的求逆与其他矩阵运算中累计浮点数进位差。而且,在矩阵 A 为对称正定矩阵时,通过 Cholesky 分解可以得到 CC=A,能够进一步地降低求解方程组的运算步骤。

另一种改进计算进度的思路则是通过改进矩阵的“条件数”。在矩阵代数中,矩阵 A 的条件数 (condition number) 被定义为矩阵 A 最大特征值与最小特征值之比,能够测度线性方程组解 x=A1b 对 b 计算误差的敏感程度。

如果将工具变量矩阵 Z 划分为 Z1 与 Z2 (注:这一划分并不要求和工具变量构成中的 "included instruments"、"exclude instrument" 划分相同),容易得证,矩阵 ZZ 的条件数一定大于矩阵 Z1(IZ2(Z2Z2)1Z2)Z1 的条件数。因此,如果 (Z2Z2)1 能够精确计算,则可以通过这一“分组回归”的方法提升估计精度。

3. Stata 实操

基于上述改进思路,Young (2022) 编写的 pariv 命令可以运行分组的 2SLS 估计,并且可以报告参数估计值对数据与变量顺序的敏感程度。具体的命令细节如下:

命令安装:

ssc install pariv, replace

命令语法:

pariv depvar (endovars = excludedlist) [includedinst] ///
      [if] [in] [weight] [,options]

其中,

  • depvar:被解释变量
  • endovars:内生变量
  • excludedinst:工具变量
  • includedinst:外生控制变量

pariv 可以分组地拟合被解释变量对内生变量的 2SLS,并且使用 excludedinst 作为 endovars 的工具变量。在参数估计之后,pariv 将会报告目标参数和标准差在各种分组、变量顺序、数据顺序等条件下的最大、最小值。下面的代码实例将会展示常用的 2SLS 估计方法 ivregress 得到的估计值对变量输入顺序的敏感性,以及 pariv 命令下得到的估计值在高度共线性下的稳健性。

接下来,使用模拟方法生成数据,可以看到被解释变量 y 的生成过程涉及解释变量 t,两者关系的估计参数应为 1,且 yt 同时与变量 u 相关,如果在后续的模型拟合中,变量 u 不出现在方程中,则存在内生性问题。

. drop _all
. set seed 836
. quietly set obs 16
. gen double age = _n + 19
. gen double age2 = age^2
. gen double age3 = age^3
. gen double age4 = age^4
. gen double u = invnormal(uniform())
. gen double e = invnormal(uniform())
. gen double z = invnormal(uniform())
. gen double t = 10*z + u
. gen double y = t + u + e

变量 ageage2age3age4 则是与 y 生成过程无关的外生控制变量,并且之间存在高度的共线性,有可能对参数的估计精度造成影响。

. ivregress 2sls y (t = z) age age2 age3 age4, robust

Instrumental variables 2SLS regression            Number of obs   =         16
                                                  Wald chi2(5)    =    2790.55
                                                  Prob > chi2     =     0.0000
                                                  R-squared       =     0.9893
                                                  Root MSE        =     1.0438
------------------------------------------------------------------------------
             |               Robust
           y | Coefficient  std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
           t |      0.926      0.055    16.72   0.000        0.817       1.034
         age |   -264.610    142.618    -1.86   0.064     -544.136      14.916
        age2 |     14.514      7.842     1.85   0.064       -0.856      29.883
        age3 |     -0.350      0.189    -1.85   0.064       -0.721       0.021
        age4 |      0.003      0.002     1.85   0.064       -0.000       0.006
       _cons |   1788.965    960.297     1.86   0.062      -93.182    3671.112
------------------------------------------------------------------------------
Instrumented: t
 Instruments: age age2 age3 age4 z

. ivregress 2sls y (t = z) age4 age age2 age3, robust

Instrumental variables 2SLS regression            Number of obs   =         16
                                                  Wald chi2(5)    =    1111.02
                                                  Prob > chi2     =     0.0000
                                                  R-squared       =     0.9747
                                                  Root MSE        =      1.609
------------------------------------------------------------------------------
             |               Robust
           y | Coefficient  std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
           t |      0.744      0.298     2.49   0.013        0.159       1.328
        age4 |      0.010      0.010     0.93   0.355       -0.011       0.030
         age |   -795.169    850.303    -0.94   0.350    -2461.732     871.393
        age2 |     43.945     47.182     0.93   0.352      -48.531     136.421
        age3 |     -1.067      1.150    -0.93   0.353       -3.320       1.186
       _cons |   5332.821   5677.235     0.94   0.348    -5794.355   16459.998
------------------------------------------------------------------------------
Instrumented: t
 Instruments: age4 age age2 age3 z

以上结果是使用 Stata 中 ivregress 命令进行 2SLS 估计得到的。两次拟合中交换了控制变量组 (ageage2age3age4) 的顺序。不难看出,两次拟合结果中,变量 t 前的参数估计值变动较大 (0.926-0.744),偏离了真实的参数值 1,说明 ivregress 在变量间存在高度共线性的情况下容易产生估计误差。然后,再使用 pariv 命令进行 2SLS 估计。

. pariv y (t = z) age4 age age2 age3, robust reps(100)
 
Partitioned (collinear robust) 2SLS                 Number of obs  =         16
                      Estimates                Statistical Significance 
               coefficient  std. err.      |z|   P>|z|     [95% conf. interval]
-------------+-----------------------------------------------------------------
           t |   .9395758  .04805926      19.55   0.000      .8453814    1.03377
        age4 |  .00263474  .00141279      1.86   0.062    -.00013428  .00540376
         age |  -223.5808   119.8144      1.87   0.062     -458.4128   11.25114
        age2 |   12.23788   6.572025      1.86   0.063     -.6430484   25.11881
        age3 |  -.2946544   .1582678      1.86   0.063     -.6048536  .01554485
       _cons |   1514.899   808.6364      1.87   0.061     -69.99973   3099.797
-------------------------------------------------------------------------------
     Range in 100 Permutations of Data and Variable Order
                     coefficients          standard errors
                    min        max          min        max
-------------+----------------------------------------------
           t |   .9395758   .9395758    .04805926  .04805926
        age4 |  .00263474  .00263474    .00141279  .00141279
         age |  -223.5808  -223.5808     119.8144   119.8144
        age2 |   12.23788   12.23788     6.572025   6.572025
        age3 |  -.2946544  -.2946544     .1582678   .1582678
       _cons |   1514.899   1514.899     808.6364   808.6364
-----------------------------------------------------------
Instrumented: t 
Excluded instruments: z 
Included instruments: age4 age age2 age3 _cons
Heteroskedasticity robust standard errors 
Maximum R2 found in the regression of any one instrument on the others:  .99999998

可以看出,变量 t 的系数估计值为 0.939,接近真实估计值 1。更为重要的是,在 100 次随机选择变量顺序与数据顺序的估计结果中,各参数估计值的最大最小值在小数点后七位均保持相同。这一结果表明,pariv 命令保证了参数估计值在高度共线性下 2SLS 估计的参数是稳健的。

4. 相关推文

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