一、为什么我们需要长期约束?
做宏观分析的人,最头疼的一个问题就是:某个冲击来了,它到底是暂时的,还是永久的?
我刚开始做时间序列分析那会儿,就踩过这个坑。有一次分析油价冲击对GDP的影响,跑完VAR模型,结果发现脉冲响应图显示冲击效果持续了20年都不衰减。我当时还挺高兴,觉得发现了大秘密。后来被导师一句话点醒:「你想想看,油价涨了10%,20年后GDP还回不去?这不合理。」
嗯,问题出在哪?出在我没有对冲击施加长期约束。
Blanchard-Quah分解(简称BQ分解),就是专门解决这个问题的。它的核心思想很简单:有些冲击,长期来看必须归零;有些冲击,可以永久改变变量。你必须在模型里把这个「长期约束」写死,否则结果就是扯淡。
核心要点:BQ分解的本质,是在结构VAR模型中施加一个长期限制——某些冲击对变量的长期累积效应为零。这个约束来自经济理论,不是数据告诉你的。
二、BQ分解的经典逻辑
2.1 从简化式到结构式
咱们先捋一下逻辑链条。你手头有一个简化式VAR:
Y_t = A_1 Y_{t-1} + A_2 Y_{t-2} + ... + A_p Y_{t-p} + e_t
这里的e_t是简化式残差,它们之间是相关的。你没法直接解释e_t的经济含义——它可能是需求冲击和供给冲击混在一起的结果。
你想要的是结构式冲击,比如ε_t = (ε_t^供给, ε_t^需求)。它们之间不相关,而且有明确的经济解释。
连接两者的桥梁是:
e_t = B ε_t
B是一个矩阵,它告诉我们简化式残差是怎么由结构式冲击组合而成的。问题来了:B怎么求?
你想想看,简化式VAR给了你e_t的方差-协方差矩阵Σ。但Σ是对称的,有n(n+1)/2个独立元素。而B有n²个元素。方程个数少于未知数——这就是识别问题。
BQ的贡献在于:用长期约束来补足缺失的方程。
2.2 长期约束的数学表达
咱们把VAR写成移动平均形式(VMA):
Y_t = μ + C(L) e_t
其中C(L)是滞后算子多项式。那么结构式冲击的长期响应就是:
Y_t = μ + C(L) B ε_t
长期乘数矩阵是C(1)B。BQ分解的核心约束是:C(1)B 是下三角矩阵。
什么意思?以两变量系统为例(比如GDP和失业率):
- 第一个冲击(比如供给冲击)可以永久影响GDP和失业率
- 第二个冲击(比如需求冲击)只能永久影响失业率,对GDP的长期影响为零
这个约束来自经济理论:长期来看,总需求冲击不能改变实际产出。这是新古典宏观经济学的基本信条。
我的经验:在实际操作中,这个约束的排序很重要。我曾经把变量顺序搞反了,结果需求冲击对产出的长期影响不为零——这明显违背了理论。记住:受长期约束的变量要放在后面。
三、BQ分解的实操步骤
光讲理论太虚,咱们来点实在的。我习惯用R或Python做BQ分解,这里给个伪代码流程:
# 步骤1:估计简化式VAR
var_model = VAR(data, lag_order=p)
e_t = var_model.resid # 获取残差
# 步骤2:计算长期乘数矩阵C(1)
# C(1) = (I - A_1 - A_2 - ... - A_p)^{-1}
C_1 = inv(I - sum(A_i))
# 步骤3:对C(1)进行Cholesky分解
# 注意:这里要对C(1) * Σ * C(1)' 做Cholesky
Omega = C_1 @ Sigma @ C_1.T
P = cholesky(Omega) # 下三角矩阵
# 步骤4:恢复结构式冲击
B = inv(C_1) @ P
epsilon_t = inv(B) @ e_t
嗯,这里要注意一个细节:Cholesky分解的顺序决定了冲击的解释。如果你把变量1放在前面,变量2放在后面,那么变量2的冲击对变量1的长期影响被强制为零。
避坑指南:我曾经在项目里用季度数据做BQ分解,结果发现脉冲响应在20期后还不收敛。后来检查发现,我用的滞后阶数太少(只用了2阶),导致长期乘数估计不准。建议用AIC或BIC选滞后阶数,至少覆盖一个完整的经济周期(比如季度数据用4-8阶)。
四、一个经典案例:GDP与失业率的BQ分解
咱们用美国数据举个例子。假设你有两个变量:实际GDP增长率(Δy_t)和失业率变化(Δu_t)。
BQ分解的长期约束是:需求冲击对GDP的长期影响为零。这意味着:
- 供给冲击(技术、人口等)可以永久改变GDP水平
- 需求冲击(货币政策、财政政策等)只能暂时影响GDP,长期会回到潜在产出
我做过一次这个分解,结果很有意思:
| 冲击类型 | 对GDP的长期影响 | 对失业率的长期影响 |
|---|---|---|
| 供给冲击 | 永久(正或负) | 永久(但幅度较小) |
| 需求冲击 | 零(长期约束) | 永久(比如菲利普斯曲线关系) |
你看,这个约束让结果变得「讲道理」了。需求冲击在短期内可以推高GDP,但长期来看,经济会回到自然率水平。这就是BQ分解的魅力——用理论约束数据,而不是让数据瞎跑。
五、BQ分解的局限与改进
说实话,BQ分解不是万能的。我遇到过几个常见问题:
- 约束太强:长期为零的假设在某些场景下不成立。比如,如果需求冲击通过「滞后效应」永久改变了潜在产出(想想2008年金融危机后的「疤痕效应」),那BQ分解就会低估需求冲击的作用。
- 变量排序敏感:Cholesky分解对变量顺序很敏感。你换一下顺序,结果可能天差地别。
- 小样本偏差:BQ分解需要估计长期乘数,这在小样本下很不稳定。我建议至少用100个以上的观测值。
改进思路:如果觉得BQ约束太强,可以试试「符号约束」或「零短期约束」。我个人在近期的项目中更常用符号约束——它只限制冲击的方向(比如需求冲击短期内推高通胀和产出),不限制具体数值,灵活性更大。
六、知识体系图
下面这张图总结了BQ分解的核心逻辑。我建议你把它存下来,做分析时对照着看:
七、写在最后
BQ分解是宏观计量里一个非常经典的工具。它教会我们一件事:做数据分析不能只靠统计,还得靠理论。没有长期约束,你的脉冲响应图可能看起来很美,但经济含义全是错的。
我个人建议,刚开始学BQ分解的同学,先拿两变量系统练手。等搞清楚了Cholesky分解和长期约束的关系,再扩展到多变量系统。别一上来就搞四五个变量——你会被识别问题搞疯的。
嗯,今天就聊到这儿。记住:长期约束不是限制,而是帮你找到正确方向的指南针。
一句话总结:Blanchard-Quah分解 = 简化式VAR + 长期零约束 + Cholesky分解。它让统计模型学会「经济学的规矩」。