分享

Stata自救行动: 高维固定效应HDFE, 弱工具变量稳健性估计, 工具变量SVAR

 计量经济圈 2024-05-02 发布于浙江
所有计量经济圈方法论丛的code文件, 微观数据库和各种软件都放在社群里.欢迎到计量经济圈社群交流访问.

上一日,我们看到了“突发: Stata最为激烈的自救行动! 在大语言模型GPT等攻势下不得不为之!”,今天,就具体看看Stata到底是如何就救自己的,以及开的药方是否真的给力?

1.高维固定效应HDFE

在你的线性和固定效应线性模型中,使用 Stata 的 aregxtreg 命令的 absorb() 选项,不仅可以处理一个高维分类变量,还可以同时处理多个。与传统方法相比,这种方法在计算效率上带来了显著的提升,因为它避免了在模型中包含这些变量的所有类别指标。此外,还可以在多种估计方法中做出选择。

功能演示

线性模型中的高维分类变量
在模型中引入分类变量作为控制项是常见的做法,这些控制项对于模型的设计至关重要,尽管它们并非我们分析的核心。例如,如果我们想要研究进口关税(imports)对年度贸易量的影响,可能会将年份国家行业作为控制变量。
传统上,我们可能会通过为这些控制变量的每个类别指定指示变量来进行线性回归分析:
regress trade imports i.year i.country i.industry
假设有40年的数据、160个国家和4位数的行业代码,这意味着我们需要估计大约1,200个参数,这是一个非常耗时的过程。然而,在 StataNow 中,通过以下命令,可以在极短的时间内完成相同模型的拟合:
areg trade imports, absorb(year country industry)
在这个命令中,年份国家行业这三个变量被吸收处理,而不再需要为它们的每个类别都指定一个指示变量。虽然 areg 之前已经具备了吸收单个变量的能力,但现在我们可以自由地添加任意数量的分类变量。
如果希望建立一个包含行业固定效应的模型,可以按照以下步骤操作:
xtset industry year
xtreg trade imports, fe absorb(year country)
节省了多少时间?
为了更直观地展示效率的提升,通过一个包含一百万个观测值的示例来进行说明。在这个示例中,有一个感兴趣的变量(x),两个分类变量(a1a2),每个都包含一千个类别,以及一个包含十万个类别的 id 变量。
在旧版 Stata 中,只能吸收一个变量,并且需要这样编写命令:
webuse hdfe
quietly areg y x i.a1 i.a2, absorb(id)
这里,指定了类别数最多的 id 变量在 absorb() 选项中。在 Stata/MP 中,这大约需要五分钟,在 Stata/SE 中需要六分钟。
现在,通过吸收所有三个分类变量,可以简化命令为:
quietly areg y x, absorb(id a1 a2)
这个过程在 Stata/MP 中大约只需要1秒,在 Stata/SE 中需要1.3秒。
固定效应线性模型的更快速度
尽管 areg 是处理高维分类变量模型最快的命令,但如果需要拟合固定效应模型,xtreg, fe 可能更加合适。
以前,在 xtreg, fe 中控制分类变量时,必须在模型中将它们指定为指示变量。现在,可以像在 areg 中一样,在新的 absorb() 选项中指定它们,这将显著加快 xtreg, fe 的运行速度。
继续以上例,假设要拟合一个带有 id 固定效应的线性模型,可以这样操作:
xtset id
xtreg y x, fe absorb(a1 a2) vce(cluster id)
这将输出包括稳健标准误在内的结果:
xtreg, feareg 慢,因为它做了更多的工作,特别是计算用于计算固定效应间变异(sigma_u)的面板级统计量。如果对 sigma_u 不感兴趣,可以通过指定 nosigmau 选项来节省执行时间。

xtreg y x, fe absorb(a1 a2) vce(cluster id) nosigmau

如果不使用 vce(cluster id) 选项,xtreg, fe 会报告一个检验,即所有面板效应(ui)是否为零。在这种情况下,指定 nouitest 选项将抑制该检验并避免估计 sigma_u,从而进一步节省执行时间。

2.工具变量SVAR

通过 Stata 的新命令 ivsvar,可以使用工具变量来估计动态因果效应,替代了传统的短期约束方法。这一功能是 StataNow™ 的一部分。
向量自回归(VAR)模型阐释了一组时间序列变量之间的相互作用机制。在 VAR 模型框架下,所有变量均为内生变量。为了估计动态因果效应,可以在 VAR 模型的基础上引入理论约束,从而得到结构向量自回归(SVAR)模型。本讨论专注于短期 SVAR 模型。在传统 SVAR 模型中,约束了冲击对内生变量的影响。而当我们拥有工具变量时,可以对这些工具变量与冲击之间的关系施加约束,从而构建工具变量(IV)SVAR 模型。在 IVSVAR 模型中,通过工具变量化的冲击(即目标冲击)对内生变量的影响可以被自由估计。
ivsvar 命令通过工具变量来估计 SVAR 模型的参数。这些参数的估计结果可以用于分析动态因果效应,即结构脉冲响应函数(IRFs)。IRFs 描述了对 SVAR 模型的冲击如何在不同时间点影响模型中的变量。

看它如何运作

单个工具变量

现有数据涉及工业生产增长(ip_growth)、通货膨胀和利率(fedfunds)的结果变量。
webuse usmacro3
describe
这三个变量构成的VAR模型涵盖了对工业生产增长、通货膨胀和利率的冲击。特别地,关注点在于通货膨胀冲击的影响。使用石油价格测量值(oil_inst)作为通货膨胀冲击的代理变量。将通货膨胀冲击视为目标冲击,并进行效应估计,而非工具化冲击的效应。由于只有一个目标冲击,无需施加任何限制。
ivsvar gmm ip_growth fedfunds (inflation = oil_inst)

有三个系数,分别对应通货膨胀冲击对工业生产增长、利率和通货膨胀本身的影响。通货膨胀反应标准化为1,其他两个反应表示相对于通货膨胀上升一个单位的冲击的相对反应。在冲击下,通货膨胀冲击降低了工业生产增长,并轻微提升了利率。然而,没有足够证据表明通货膨胀冲击的任何效应与零有显著差异。
动态效应追踪随时间的冲击效应。为计算动态效应,计算并绘制IRFs。
irf set ivsvar.irf

irf create model1

irf graph sirf, impulse(inflation)
ivsvar.svg

IRF图展示了每个变量对通货膨胀冲击的反应。展示了8个时期的反应;由于数据是月度数据,八个时期代表八个月。

多个工具变量

ivsvar mdist允许多个工具变量代表多个目标冲击。存在多个目标冲击时,需要提供一些限制。通过提供一个矩阵,描述工具变量与目标冲击的关系。假设有两个工具:石油价格和货币政策工具,认为这些工具与通货膨胀冲击和利率冲击相关。理论假设为:

在Stata中,可以这样设置关系:
matrix P = (., 0 \ 0, .)
其中第一个点(.)代表参数p1,第二个点代表参数p2。通过指定点,指示ivsvar估计相应的参数。假设两个交叉效应,即利率冲击对石油价格的影响和通货膨胀冲击对货币政策工具的影响,都为零。
估计冲击效应的方法:
ivsvar mdist ip_growth (inflation fedfunds = oil_inst money_inst), peq(P)

输出表按每个冲击的效应组织。第一个输出块显示了通货膨胀冲击对模型中变量的效应:通货膨胀冲击如何影响工业生产增长、通货膨胀和利率。这里的效应可以解释为1个标准差的冲击。通货膨胀冲击轻微降低了工业生产,并增加了通货膨胀。与前面的例子不同,利率在冲击时轻微下降,而不是上升。然而,没有足够证据表明通货膨胀冲击对ip_growth和fedfunds的效应与零有显著差异。
第二个块显示了利率冲击对结果变量的影响。所有三个变量似乎在冲击时上升。
请注意,没有对冲击对内生变量的效应施加任何限制。前两个块中的六个效应都是自由估计的(无任何约束)。
最后两个块显示了每个冲击如何影响两个工具变量。将所有交叉效应限制为0,因此每个工具变量只受一个冲击的影响。
如果使用标准短期SVAR模型进行拟合,会直接对冲击效应施加限制,如上述输出中的前两个块所示。使用ivsvar,可以对冲击如何影响工具变量施加限制,而对冲击效应则不需要任何限制。

3.在工具变量回归中对弱工具变量具有稳健性的推断

在进行工具变量(IV)回归分析时,一个关键的考量是所使用的工具变量是否足够强。StataNow™ 新增的 estat weakrobust 命令提供了一种方法,用以对内生回归变量进行稳健的推断,即使在工具变量较弱的情况下也能保证推断的可靠性。

工具变量方法使得研究者能够在部分解释变量存在内生性问题时,估计出因果关系。该方法通过利用与内生变量相关,但又不受内生性问题影响的其他变量——即工具变量——来实现。
然而,在实际操作中,如果工具变量与内生回归变量之间的相关性不强,IV方法的推断结果可能会受到影响,这种影响在大样本中尤为明显。
新引入的 estat weakrobust 命令在执行 ivregress 后使用,可以进行 Anderson–Rubin 或条件似然比(CLR)测试,这些测试专门针对内生回归变量。特别地,当模型中只有一个内生回归变量时,estat weakrobust 还能够构建相关的置信区间,这些测试和置信区间对弱工具变量具有完全的鲁棒性。
下面是一个应用示例,展示 estat weakrobust 命令是如何工作的:
假设想要建立一个模型,用以分析美国各州平均租金率(rent)与平均住房价值(hsngval)和居住在城市地区的人口比例(pcturban)之间的关系。考虑到平均住房价值可能存在内生性,选择使用各州所在地区的指示变量(i.region)作为工具变量。
通过上述步骤,即使在工具变量不是特别强的情况下,也能够对内生变量进行稳健的统计推断。
然而,对于平均住房价值(hsngval)的工具变量可能存在强度不足的疑虑。为此,可以运用 estat weakrobust 命令来执行对 hsngval 系数的稳健性检验,该检验适用于工具变量较弱的情形。

estat weakrobust 命令提供了条件似然比(CLR)测试的报告,这在模型被过度识别时(即工具变量的数量超过内生回归变量的数量)是默认的操作方式。该命令已经考虑到了模型使用了异方差稳健的方差-协方差估计(VCE),并据此报告了 CLR 检验的异方差稳健版本。
ivregress 命令的结果(P>|z| = 0.003)相比,使用 estat weakrobust 得到的对 hsngval 系数非零的置信度较低(Prob > CLR = 0.0253)。
此外,还可以请求一个对弱工具稳健的置信区间。
得到的 CLR 置信区间 [.0002, .0028] 比 ivregress 输出的传统置信区间 [.0005, .0025] 要宽,更有可能包含零值。实际上,如果通过设置选项 level(99) 将置信水平调整为 99%,那么零将会被包含在内。鉴于可能存在的弱工具变量问题,可以得出结论,无法排除 hsngval 系数为零的可能性。


下面这些短链接文章属于合集,可以收藏起来阅读,不然以后都找不到了。

7年,计量经济圈近2000篇不重类计量文章,

可直接在公众号菜单栏搜索任何计量相关问题,

Econometrics Circle




数据系列空间矩阵 | 工企数据 | PM2.5 | 市场化指数 | CO2数据 |  夜间灯光 官员方言  | 微观数据 | 内部数据

计量系列匹配方法 | 内生性 | 工具变量 | DID | 面板数据 | 常用TOOL | 中介调节 | 时间序列 | RDD断点 | 合成控制 | 200篇合辑 | 因果识别 | 社会网络 | 空间DID

数据处理Stata | R | Python | 缺失值 | CHIP/ CHNS/CHARLS/CFPS/CGSS等 |

干货系列能源环境 | 效率研究 | 空间计量 | 国际经贸 | 计量软件 | 商科研究 | 机器学习 | SSCI | CSSCI | SSCI查询 | 名家经验

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多