Stata:工具变量的秩检验-bootrantest

发布时间:2022-02-28 阅读 1888

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

作者:卫明昊 (中山大学)
邮箱weimh7@mail2.sysu.edu.cn

编者按:本文主要摘译自下文,特此致谢!
Source:Chen Q, Fang Z, Huang X. Implementing an Improved Test of Matrix Rank in Stata[J]. arXiv preprint arXiv:2108.00511, 2021. -PDF-


目录


1. 简介

1.1 工具变量

OLS 能成立的最重要条件是解释变量与扰动项不相关,否则 OLS 估计量将是不一致的,即无论样本容量多大,OLS 估计量都不会收敛至真实的总体参数。在实证研究中我们往往通过引入工具变量来解决这一问题。

对于一个内生变量,我们可以找一个变量 z,只要能满足以下两个条件,就能将其当做 x 的一个工具变量:

  • 相关性:z 与 x 相关,即 Cov(z,x)0
  • 外生性:z 与 u 不相关,即 Cov(z,u)=0

接下来,我们推导使用工具变量法时回归模型中各参数的估计值。假设回归模型为:

其中 xk 是内生变量,因此 OLS 估计量是不一致的。假设 w 是 xk 的有效工具变量,同时由于其他解释变量 x1,x2,...,xk1 是外生的,故可以把自己作为自身的工具变量。

记解释向量 xixi=(xi1,xi2,...,xik)T,则原模型为 yi=xiTxiTββ+ui。记工具向量 zizi=(zi1,zi2,...,zk1,wi)T。由于工具变量与扰动项不相关,即 Cov(zizi,ui)=EziziuiEziziEui=0,又有 Eui=0,则 Eziziui=0,这被称为 “总体矩条件” 或 “正交条件”。由此可得:

以样本矩代替总体矩,即可得到工具变量估计量:

1.2 秩条件与阶条件

细心的读者可以发现,在上一部分推导中,我们没有特别说明矩阵 EzixiTzixiT 是否可逆。事实上如果这个矩阵不可逆,则无法得到工具变量的估计量 ββIV^

矩阵 EzixiTzixiT 可逆等价于该矩阵满秩,即 rank(EzixiTzixiT)=k,称此条件为秩条件。在满足秩条件的情况下,可以推导出在一定的正则条件下,ββIV^ 是 ββ 的一致估计量,且 ββIV^ 服从渐近正态分布。

从直观上理解,秩条件 rank(EzixiTzixiT)=k 成立意味着,工具变量 w 与内生变量 xk 相关。以一元回归为例,此时,k=2xixi=(1,xi2)Tzizi=(1,wi)T,则:

因此,

即 w 与 xk 相关。

显然,满足秩条件的必要条件是在 zizi 中至少包含 k 个变量,即不在方程中出现的工具变量个数不能少于方程中内生解释变量的个数,称此条件为阶条件。根据是否满足阶条件可分为三种情况:

  • 不可识别:工具变量个数小于内生变量个数;
  • 恰好识别:工具变量个数等于内生变量个数;
  • 过度识别:工具变量个数大于内生变量个数。

1.3 工具变量的秩检验

使用工具变量法的前提之一是秩条件成立,即 rank(EzixiTzixiT)=k (满列秩)。其中 zizi=(zi1,zi2,...,,zl)T (l 个工具变量),xixi=(xi1,xi2,...,xik)T (k个解释变量),zizi 与 xixi 可有重叠元素,且 lk (满足阶条件)。

对于秩条件是否成立,可进行 “不可识别检验”。其原假设及备择假设为:

在同方差假设下,可以使用 Anderson LM 统计量 (Anderson,1951),其渐进分布为 χ2(LK+1)。如果允许存在异方差,则应使用 Kleibergen-Paap rk LM 统计量 (Kleibergen-Paap,2006),其渐进分布同样为 χ2(LK+1)。在 Stata 中使用 ranktest 命令即可执行工具变量秩检验。

1.4 传统秩检验方法的缺陷

可以看出,上文提及的秩检验方法忽略了 $rank(E\pmb{z_ix_i^T})

2. 改良秩检验方法

考虑到现有秩检验方法的缺陷,Chen 和 Fang (2019) 提出了一种改良秩检验方法。由于这部分涉及较多数学推导,读者可能感觉晦涩难懂。因此,我们将先用较为通俗的语言简单介绍这一方法。具体如下:

  • 首先,对于一个未知矩阵 Π0MMm×k (mkMMm×k 代表所有 m×k 矩阵的集合),通过修改检验的原假设,将 $rank(\Pi_0)
  • 然后,对 Π0 进行奇异值分解。由于 Π0 有 rank(Π0) 个非零奇异值,这一步将秩检验简化为检验矩阵的非零奇异值个数 (同理,也可以检验等于零的奇异值个数);
  • 接下来,对于 Π0 的估计量 Π^n,可以构造一个统计量 nϕ(Π^n)。这个统计量的直观意义是 Π^n 最小的 t 个 (t 的取值依赖于原假设) 奇异值是否足够接近零。如果 nϕ(Π^n) 很小,就不能拒绝原假设;
  • 最后,通过 bootstrap 方法得到统计量的分布,并根据给定的置信水平确定临界值。这样才能判断 nϕ(Π^n) 是 “大” 还是 “小”。

下面是具体的数学推导。

2.1 修改原假设

Chen 和 Fang 将原假设和备择假设修改为:

其中,Π0MMm×k (mk) 是一个未知矩阵,在秩检验中,它代表 2SLS 方法一阶段回归中内生变量对外生变量回归的系数矩阵。r 一般取 k1

2.2 奇异值分解

对 Π0 进行奇异值分解 (SVD),得到:

其中 P0MMm×m 和 Q0MMk×k 都是对称矩阵,Σ0MMm×k 是一个对角矩阵,对角线上从大到小排列着 Π0 的奇异值,也就是 Π0TΠ0 的特征值的平方根。

由于 P0 和 Q0 都是可逆矩阵,Π0 的秩就等于 Σ0 的秩,因此只需基于 Σ0 进行秩检验。最后,记 r0=rank(Π0),也就是说 r0 是 Π0 真实的秩。对 (1) 式等号右边三个矩阵展开得到:

其中 σ0,j=σj(Π0) 代表 Π0 第 j 大的奇异值,P0,1 包括 P0 的前 r0 列向量,分别对应着 Π0 的非零奇异值,P0,2 则是 P0 的后 kr0 列向量。同理,Q0,1 和 Q0,2 代表着对应的向量。

此时,原假设成立,当且仅当最小的 kr 个 Π0 的奇异值为 0。也就是说,原假设和备择假设等价于:

其中,ϕ(Π0)=j=r+1kσj2(Π0),表示最小的 kr 个 Π0 的奇异值平方之和。

2.3 构造统计量

对于 Π0 的估计量 Π^n,可以构造一个统计量 nϕ(Π^n)。如果该统计量大于临界值,就可以拒绝原假设。在一阶段回归中,Π^n 就是 OLS 估计量。为了得到临界值,Chen 和 Fang 证明了:

其中 L 表示依分布收敛,MMm×k 是 Π^n 的渐进分布,即  n(Π^nΠ0)L M。因此,就像我们用标准正态分布的分位数作为 t 检验的临界值,可以把 (3) 式中分布的分位数当做 nϕ(Π^n) 的临界值。问题是 M,P0,2,Q0,2 和 r0 都是未知的。但 (3) 式同时说明可以用它们的估计量代替这些未知量。

2.4 得到统计量的分布并确定临界值

M 的分布的估计可以通过 bootstrap 来完成。我们直接用 M^n=n(Π^nΠ0) 的分布来代替即可。其中,Π^n 是基于 bootstrap 样本的一阶段回归的 OLS 估计量。

Chen 和 Fang 提出了两种方法来得到 r0 的估计量。其中一种方法是统计 Π^n 中 “不等于” 零的奇异值个数。为此,我们要设置一个参数 κn=n1/2 (或者 n1/4),则 r0 的估计量为:

在得到 r0 的估计量 r^n 后,对 Π^n 进行奇异值分解就能得到 P0,2 和 Q0,2 的估计量 P^n,2 和 Q^n,2

最后,对于给定的显著性水平 α(0,1),我们将下面这个分布的 1α 分位数作为临界值,记为 c^n,1α

如果统计量 nϕ(Π^n)>c^n,1α,则拒绝原假设。我们把这种方法称为分析法 (analytic approach) 。

另一种得到 r^n 的方法是基于 Kleibergen-Paap rk LM 统计量指定一个置信水平 β(0,α)。此时的估计值有 1β 的概率与 Π0 真实的秩 r0 一致。

如果 r^n>r,就拒绝原假设,否则就将 c^n,1α+β 作为临界值。如果 nϕ(Π^n)>c^n,1α+β,则拒绝原假设。我们把这种方法称为两步法 (two-step approach)。

3. 命令介绍

基于上部分介绍的改良秩检验方法,Chen 等 (2021) 开发了 bootranktest 命令,下面对这一命令进行介绍。

bootranktest 命令可以直接通过 ssc insatll bootranktest, replace 进行安装。(注:由于该论文目前还在 The Stata Journal 的 RR 中,命令暂时还不能通过 SSC 进行安装,请读者耐心等待。)

bootranktest 命令语法如下:

bootranktest (varlist1) (varlist2) [weight] [if exp] [in range]
             [, rank(#) allrank numboot(#) beta(#) kappan(#)
             blocksize(#) partial(varlist3) cluster(varname) noconstant cfa]
  • varlist1:工具变量;
  • varlist2:内生变量;
  • varlist3:回归方程中的其他外生变量;
  • rank:假设矩阵的秩为 r,默认 r=k1,注意 r 必须小于 k
  • allrank:对于 r=0,,k1,执行命令并报告结果;
  • numboot:bootstrap 次数,默认为 1000;
  • beta:设置两步法参数 β,默认 β=0.05/10
  • kappan:设置分析法参数 κn,默认 κn=n1/4
  • blocksize:对时间序列数据进行 bootstrap 时,每次抽样数据时间段长度;
  • partial(varlist3):指定回归方程中其他非常数项外生变量;
  • cluster:指定聚类依据的变量;
  • nonconstant:一阶段回归方程中没有常数项;
  • cfa:报告分析法和两步法的具体结果。

4. 案例演示

下面使用 Stata 自带的 klein 数据集对 bootranktest 命令进行演示。klein 数据集包含 22 个时间序列观测值 (1920-1941 年)。主要变量为:

消费 consumption,私人收益 profits,美国工资总额 wagetot,政府支出 govt,间接巴士税加净出口 taxnetx,年份减去 1931 year,政府工资总额 wagegovt,股本的滞后项 capital1 和总需求 totinc

计量模型为:

我们假设 profits 的滞后项为外生变量,profitswagetot 为内生变量。工具变量是 govttaxnetxyearwagegovtcapital1totinc 的滞后项。一阶段回归方程为:

我们的目标是检验工具变量的秩条件是否成立,即 Π0 的秩是否为 2 (满列秩)。原假设为:

接下来使用 bootranktest 命令进行秩检验,得到如下结果:

在 5% 置信水平下,使用两步法得到的 p 值为 0.03,拒绝原假设;使用分析法得到的