VAR与SVAR差异及脉冲响应函数冲击幅度技术问询
VAR:纯数据驱动的“关联探测器”
你可以把VAR当成一个只看历史数据的“关联分析师”——比如你扔给它GDP、通胀、失业率的过去数据,它会告诉你“A变量变了之后,B、C变量通常会怎么跟着变”,但它完全不管现实世界里谁是“因”谁是“果”。举个例子,VAR可能发现“GDP涨了之后通胀大概率涨”,但它不会说“是GDP带动通胀”还是“通胀先涨拉动了GDP”,所有变量在它眼里都是平等的,适合用来初步摸清楚变量之间的联动规律。SVAR:加了“现实逻辑”的“因果解码器”
SVAR是VAR的升级版,它会加入你对经济运行的结构化判断(也就是经济学理论或者现实规则)。比如你根据常识知道“央行只会根据当前的通胀和GDP调整利率,而利率的变动不会立刻反过来影响当期的通胀和GDP”,那你就给SVAR加个约束:利率的冲击不会立刻传导到通胀和GDP,但通胀和GDP的冲击会立刻影响利率。这样SVAR就能帮你区分出“真正的因果冲击”——比如它能明确告诉你“如果央行突然加息(这是一个独立的冲击),接下来半年GDP会下降多少”,而不是VAR那种分不清谁先动的模糊关联。
在R里(比如用vars包的irf()函数),默认的冲击是变量的1个标准差的波动,这个幅度是从你输入的样本数据里计算出来的:
- 比如你的GDP数据历史波动的标准差是2%,那这个冲击就代表“GDP突然发生了一次2%的波动”——这是样本里比较常见的、合理的波动幅度,不是极端冲击,更贴近现实情况。
- 如果你看脉冲响应图,纵轴的数值就是变量对这个冲击的响应幅度:比如图里显示GDP对利率冲击的响应是-0.3,意思就是“利率受到1个标准差的冲击后,GDP会下降0.3个百分点(具体单位取决于你数据的计量方式)”。
额外补充:R里默认的冲击是正交化冲击(对应irf()函数里的ortho = TRUE参数),这种冲击是互相独立的,不会和其他变量的冲击混淆,其实就是SVAR里说的“结构化冲击”;如果改成ortho = FALSE,那就是VAR的原始冲击,这种冲击因为变量之间互相影响,意义不大,所以一般都用正交化的版本。
要是还有没捋明白的地方,随时唠!
内容的提问来源于stack exchange,提问作者unelma




